mirror of
https://github.com/samba-team/samba.git
synced 2025-02-26 21:57:41 +03:00
s3-rpc_server: Reduce code duplication
Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
This commit is contained in:
parent
7b715f15b1
commit
9738ee4015
@ -52,42 +52,46 @@
|
||||
#include "rpc_server/rpc_server.h"
|
||||
#include "rpc_server/epmapper/srv_epmapper.h"
|
||||
|
||||
enum rpc_service_mode_e rpc_epmapper_mode(void)
|
||||
/* the default is "embedded" so this table
|
||||
* lists only services that are not using
|
||||
* the default in order to keep enumerating it
|
||||
* in rpc_service_mode() as short as possible
|
||||
*/
|
||||
struct rpc_service_defaults {
|
||||
const char *name;
|
||||
const char *def_mode;
|
||||
} rpc_service_defaults[] = {
|
||||
{ "epmapper", "external" },
|
||||
/* { "spoolss", "embedded" }, */
|
||||
/* { "lsarpc", "embedded" }, */
|
||||
/* { "samr", "embedded" }, */
|
||||
/* { "netlogon", "embedded" }, */
|
||||
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
enum rpc_service_mode_e rpc_service_mode(const char *name)
|
||||
{
|
||||
const char *rpcsrv_type;
|
||||
enum rpc_service_mode_e state;
|
||||
const char *def;
|
||||
int i;
|
||||
|
||||
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
||||
"rpc_server",
|
||||
"epmapper",
|
||||
"daemon");
|
||||
|
||||
if (strcasecmp_m(rpcsrv_type, "external") == 0) {
|
||||
state = RPC_SERVICE_MODE_EXTERNAL;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "daemon") == 0) {
|
||||
state = RPC_SERVICE_MODE_DAEMON;
|
||||
} else {
|
||||
state = RPC_SERVICE_MODE_DISABLED;
|
||||
def = "embedded";
|
||||
for (i = 0; rpc_service_defaults[i].name; i++) {
|
||||
if (strcasecmp_m(name, rpc_service_defaults[i].name) == 0) {
|
||||
def = rpc_service_defaults[i].def_mode;
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
enum rpc_service_mode_e rpc_spoolss_mode(void)
|
||||
{
|
||||
const char *rpcsrv_type;
|
||||
enum rpc_service_mode_e state;
|
||||
|
||||
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
||||
"rpc_server",
|
||||
"spoolss",
|
||||
"embedded");
|
||||
"rpc_server", name, def);
|
||||
|
||||
if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
|
||||
state = RPC_SERVICE_MODE_EMBEDDED;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
|
||||
state = RPC_SERVICE_MODE_EXTERNAL;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "daemon") == 0) {
|
||||
} else if (strcasecmp(rpcsrv_type, "daemon") == 0) {
|
||||
state = RPC_SERVICE_MODE_DAEMON;
|
||||
} else {
|
||||
state = RPC_SERVICE_MODE_DISABLED;
|
||||
@ -96,75 +100,6 @@ enum rpc_service_mode_e rpc_spoolss_mode(void)
|
||||
return state;
|
||||
}
|
||||
|
||||
enum rpc_service_mode_e rpc_lsarpc_mode(void)
|
||||
{
|
||||
const char *rpcsrv_type;
|
||||
enum rpc_service_mode_e mode;
|
||||
|
||||
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
||||
"rpc_server",
|
||||
"lsarpc",
|
||||
"embedded");
|
||||
|
||||
if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EMBEDDED;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EXTERNAL;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "daemon") == 0) {
|
||||
mode = RPC_SERVICE_MODE_DAEMON;
|
||||
} else {
|
||||
mode = RPC_SERVICE_MODE_DISABLED;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
enum rpc_service_mode_e rpc_samr_mode(void)
|
||||
{
|
||||
const char *rpcsrv_type;
|
||||
enum rpc_service_mode_e mode;
|
||||
|
||||
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
||||
"rpc_server",
|
||||
"samr",
|
||||
"embedded");
|
||||
|
||||
if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EMBEDDED;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EXTERNAL;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "daemon") == 0) {
|
||||
mode = RPC_SERVICE_MODE_DAEMON;
|
||||
} else {
|
||||
mode = RPC_SERVICE_MODE_DISABLED;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
enum rpc_service_mode_e rpc_netlogon_mode(void)
|
||||
{
|
||||
const char *rpcsrv_type;
|
||||
enum rpc_service_mode_e mode;
|
||||
|
||||
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
||||
"rpc_server",
|
||||
"netlogon",
|
||||
"embedded");
|
||||
|
||||
if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EMBEDDED;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
|
||||
mode = RPC_SERVICE_MODE_EXTERNAL;
|
||||
} else if (strcasecmp_m(rpcsrv_type, "daemon") == 0) {
|
||||
mode = RPC_SERVICE_MODE_DAEMON;
|
||||
} else {
|
||||
mode = RPC_SERVICE_MODE_DISABLED;
|
||||
}
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
static bool rpc_setup_epmapper(struct tevent_context *ev_ctx,
|
||||
struct messaging_context *msg_ctx)
|
||||
{
|
||||
|
@ -32,22 +32,20 @@ enum rpc_service_mode_e {
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Get the mode in which epmapper is started.
|
||||
* @brief Get the mode in which a service is started.
|
||||
*
|
||||
* @return The mode.
|
||||
*/
|
||||
enum rpc_service_mode_e rpc_epmapper_mode(void);
|
||||
|
||||
/**
|
||||
* @brief Get the mode in which epmapper is started.
|
||||
* @param name Name of the service
|
||||
* @param def_mode The default mode for the service
|
||||
*
|
||||
* @return The mode.
|
||||
* @return The actual configured mode.
|
||||
*/
|
||||
enum rpc_service_mode_e rpc_spoolss_mode(void);
|
||||
enum rpc_service_mode_e rpc_service_mode(const char *name);
|
||||
|
||||
enum rpc_service_mode_e rpc_lsarpc_mode(void);
|
||||
enum rpc_service_mode_e rpc_samr_mode(void);
|
||||
enum rpc_service_mode_e rpc_netlogon_mode(void);
|
||||
#define rpc_epmapper_mode() rpc_service_mode("epmapper")
|
||||
#define rpc_spoolss_mode() rpc_service_mode("spoolss")
|
||||
#define rpc_lsarpc_mode() rpc_service_mode("lsarpc")
|
||||
#define rpc_samr_mode() rpc_service_mode("samr")
|
||||
#define rpc_netlogon_mode() rpc_service_mode("netlogon")
|
||||
|
||||
/**
|
||||
* @brief Register an endpoint at the endpoint mapper.
|
||||
|
Loading…
x
Reference in New Issue
Block a user