s3-param: Add "server role" as global parameter
authorAmitay Isaacs <amitay@gmail.com>
Tue, 8 Nov 2011 01:12:06 +0000 (12:12 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 16 Nov 2011 23:34:08 +0000 (00:34 +0100)
This will help extracting server role processing code in common
library.

source3/include/proto.h
source3/param/loadparm.c
source3/param/loadparm_server_role.c

index 679311158cb4a208f98464294ed8ebc8674e38c5..b2a10f69d6ce6a5658bd9fd187f34f78cea59ace 100644 (file)
@@ -1646,6 +1646,7 @@ int lp_min_receive_file_size(void);
 char* lp_perfcount_module(void);
 void widelinks_warning(int snum);
 const char *lp_ncalrpc_dir(void);
+void _lp_set_server_role(int server_role);
 
 /* The following definitions come from param/loadparm_ctx.c  */
 
index 36e35e8d446d2c66878e1b4559450c4980e94220..7e9c09f5ed075196339efbcf15da871e81a63626 100644 (file)
@@ -512,6 +512,18 @@ static const struct enum_list enum_kerberos_method[] = {
        {-1, NULL}
 };
 
+/* Server role options */
+static const struct enum_list enum_server_role_s3[] = {
+       {ROLE_STANDALONE, "standalone"},
+       {ROLE_DOMAIN_MEMBER, "member server"},
+       {ROLE_DOMAIN_MEMBER, "member"},
+       {ROLE_DOMAIN_BDC, "bdc"},
+       {ROLE_DOMAIN_BDC, "domain controller"},
+       {ROLE_DOMAIN_BDC, "dc"},
+       {ROLE_DOMAIN_PDC, "pdc"},
+       {-1, NULL}
+};
+
 /* Note: We do not initialise the defaults union - it is not allowed in ANSI C
  *
  * The FLAG_HIDE is explicit. Parameters set this way do NOT appear in any edit
@@ -662,6 +674,15 @@ static struct parm_struct parm_table[] = {
                .enum_list      = enum_config_backend,
                .flags          = FLAG_HIDE|FLAG_ADVANCED|FLAG_META,
        },
+       {
+               .label          = "server role",
+               .type           = P_ENUM,
+               .p_class        = P_GLOBAL,
+               .offset         = GLOBAL_VAR(ServerRole),
+               .special        = NULL,
+               .enum_list      = enum_server_role_s3,
+               .flags          = FLAG_BASIC | FLAG_ADVANCED,
+       },
 
        {N_("Security Options"), P_SEP, P_SEPARATOR},
 
@@ -4796,6 +4817,7 @@ static void init_globals(bool reinit_globals)
        Globals.PrintcapCacheTime = 750;        /* 12.5 minutes */
 
        Globals.ConfigBackend = config_backend;
+       Globals.ServerRole = ROLE_STANDALONE;
 
        /* Was 65535 (0xFFFF). 0x4101 matches W2K and causes major speed improvements... */
        /* Discovered by 2 days of pain by Don McCall @ HP :-). */
@@ -5363,6 +5385,7 @@ FN_GLOBAL_INTEGER(lp_lock_spin_time, iLockSpinTime)
 FN_GLOBAL_INTEGER(lp_usershare_max_shares, iUsershareMaxShares)
 FN_GLOBAL_CONST_STRING(lp_socket_options, szSocketOptions)
 FN_GLOBAL_INTEGER(lp_config_backend, ConfigBackend)
+FN_GLOBAL_INTEGER(lp_server_role, ServerRole)
 FN_GLOBAL_INTEGER(lp_smb2_max_read, ismb2_max_read)
 FN_GLOBAL_INTEGER(lp_smb2_max_write, ismb2_max_write)
 FN_GLOBAL_INTEGER(lp_smb2_max_trans, ismb2_max_trans)
@@ -9707,3 +9730,8 @@ bool lp_readraw(void)
        }
        return _lp_readraw();
 }
+
+void _lp_set_server_role(int server_role)
+{
+       Globals.ServerRole = server_role;
+}
index 1f18b4fd12702b5e6174c09c5defd0044c579040..7fe4411b54d3fe0b7fac43a667770768aa719ec5 100644 (file)
@@ -30,7 +30,6 @@
 /*******************************************************************
  Set the server type we will announce as via nmbd.
 ********************************************************************/
-static int server_role;
 
 static const struct srv_role_tab {
        uint32 role;
@@ -56,7 +55,7 @@ const char* server_role_str(uint32 role)
 
 void set_server_role(void)
 {
-       server_role = ROLE_STANDALONE;
+       int server_role = ROLE_STANDALONE;
 
        switch (lp_security()) {
                case SEC_SHARE:
@@ -98,14 +97,7 @@ void set_server_role(void)
                        break;
        }
 
+       _lp_set_server_role(server_role);
        DEBUG(10, ("set_server_role: role = %s\n", server_role_str(server_role)));
 }
 
-/***********************************************************
- returns role of Samba server
-************************************************************/
-
-int lp_server_role(void)
-{
-       return server_role;
-}