2 Unix SMB/Netbios implementation.
3 Generic infrstructure for RPC Daemons
4 Copyright (C) Simo Sorce 2011
5 Copyright (C) Andreas Schneider 2011
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "rpc_server/rpc_config.h"
24 /* the default is "embedded" so this table
25 * lists only services that are not using
26 * the default in order to keep enumerating it
27 * in rpc_service_mode() as short as possible
29 struct rpc_service_defaults {
32 } rpc_service_defaults[] = {
33 { "epmapper", "external" },
34 /* { "spoolss", "embedded" }, */
35 /* { "lsarpc", "embedded" }, */
36 /* { "samr", "embedded" }, */
37 /* { "netlogon", "embedded" }, */
42 enum rpc_service_mode_e rpc_service_mode(const char *name)
44 const char *rpcsrv_type;
45 enum rpc_service_mode_e state;
50 for (i = 0; rpc_service_defaults[i].name; i++) {
51 if (strcasecmp_m(name, rpc_service_defaults[i].name) == 0) {
52 def = rpc_service_defaults[i].def_mode;
56 rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
57 "rpc_server", name, def);
59 if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
60 state = RPC_SERVICE_MODE_EMBEDDED;
61 } else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
62 state = RPC_SERVICE_MODE_EXTERNAL;
64 state = RPC_SERVICE_MODE_DISABLED;
71 /* the default is "embedded" so this table
72 * lists only daemons that are not using
73 * the default in order to keep enumerating it
74 * in rpc_daemon_type() as short as possible
76 struct rpc_daemon_defaults {
79 } rpc_daemon_defaults[] = {
81 /* { "spoolssd", "embedded" }, */
82 /* { "lsasd", "embedded" }, */
87 enum rpc_daemon_type_e rpc_daemon_type(const char *name)
89 const char *rpcsrv_type;
90 enum rpc_daemon_type_e type;
95 for (i = 0; rpc_daemon_defaults[i].name; i++) {
96 if (strcasecmp_m(name, rpc_daemon_defaults[i].name) == 0) {
97 def = rpc_daemon_defaults[i].def_type;
101 rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
102 "rpc_daemon", name, def);
104 if (strcasecmp_m(rpcsrv_type, "embedded") == 0) {
105 type = RPC_DAEMON_EMBEDDED;
106 } else if (strcasecmp_m(rpcsrv_type, "fork") == 0) {
107 type = RPC_DAEMON_FORK;
109 type = RPC_DAEMON_DISABLED;