1
0
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:
Simo Sorce 2011-08-10 14:25:56 -04:00
parent 7b715f15b1
commit 9738ee4015
2 changed files with 38 additions and 105 deletions

View File

@ -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)
{

View File

@ -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.