[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Tue Jun 1 01:09:41 MDT 2010


The branch, master has been updated
       via  a6e07c2... s3:auth Rename wksta_name -> workstation_name in auth_usersupplied_info
       via  fdc6db3... s4:ntlmssp Use common code for ntlmssp_sign.c
       via  38a26f1... s4:ntlmssp Use the new common ntlmssp.h
       via  bc8d12e... s4:ntlmssp Merge ntlmssp structures with version from source3/
       via  dfb206f... s3:param Put 'server_role' functions in another file.
       via  6d2e796... s3:param Add helper function to get at Gobals.iDomainMaster
      from  458b248... s3-waf: Check for device major and minor macros

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a6e07c22a385ccf09d8e13d71c46387b2144ee44
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Jun 1 11:23:50 2010 +1000

    s3:auth Rename wksta_name -> workstation_name in auth_usersupplied_info

commit fdc6db34caf4c30fd5bf439fcd3a5453fd26a590
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 25 21:18:15 2010 +1000

    s4:ntlmssp Use common code for ntlmssp_sign.c
    
    The common code does not have a mem_ctx on ntlmssp_check_packet() and
    ntlmssp_unseal_packet().
    
    We do however need some internal working of the code exposed, so some
    structures are moved to ntlmssp_sign.h
    
    Andrew Bartlett

commit 38a26f1073178736b8b3e1158a231b3ed7b6484a
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 25 20:20:46 2010 +1000

    s4:ntlmssp Use the new common ntlmssp.h

commit bc8d12e59331fb814a58733b68f8ec16cfffa61e
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 25 19:59:23 2010 +1000

    s4:ntlmssp Merge ntlmssp structures with version from source3/
    
    Use this as an excuse to get rid of ntlmssp_set_domain() etc, which
    don't do anything useful now that msrpc_parse() use talloc anyway.
    
    Andrew Bartlett

commit dfb206f47e8b9bcf81493e7cb6aed7859fb54042
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 18 22:10:13 2010 +1000

    s3:param Put 'server_role' functions in another file.
    
    Andrew Bartlett
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 6d2e796f35dea93ca31e6879e79942a02572754d
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue May 18 22:07:48 2010 +1000

    s3:param Add helper function to get at Gobals.iDomainMaster
    
    This is needed for a future split out of the server_role code.
    
    Andrew Bartlett
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 libcli/auth/ntlmssp_private.h         |   19 ++
 libcli/auth/ntlmssp_sign.c            |   18 --
 source3/Makefile.in                   |    2 +-
 source3/auth/auth.c                   |    4 +-
 source3/auth/auth_domain.c            |    2 +-
 source3/auth/auth_netlogond.c         |   18 +-
 source3/auth/auth_util.c              |   16 +-
 source3/auth/auth_wbc.c               |    2 +-
 source3/auth/auth_winbind.c           |    2 +-
 source3/auth/check_samsec.c           |    6 +-
 source3/auth/user_info.c              |    8 +-
 source3/include/auth.h                |    2 +-
 source3/include/proto.h               |   15 +-
 source3/param/loadparm.c              |   92 +------
 source3/param/loadparm_server_role.c  |  111 +++++++
 source4/auth/ntlmssp/ntlmssp.h        |  113 +-------
 source4/auth/ntlmssp/ntlmssp_server.c |   78 +-----
 source4/auth/ntlmssp/ntlmssp_sign.c   |  508 +--------------------------------
 source4/auth/ntlmssp/wscript_build    |    2 +-
 19 files changed, 194 insertions(+), 824 deletions(-)
 create mode 100644 source3/param/loadparm_server_role.c


Changeset truncated at 500 lines:

diff --git a/libcli/auth/ntlmssp_private.h b/libcli/auth/ntlmssp_private.h
index 0f0c7db..e2044ee 100644
--- a/libcli/auth/ntlmssp_private.h
+++ b/libcli/auth/ntlmssp_private.h
@@ -20,6 +20,25 @@
 
 /* For structures internal to the NTLMSSP implementation that should not be exposed */
 
+#include "../lib/crypto/arcfour.h"
+
+struct ntlmssp_crypt_direction {
+	uint32_t seq_num;
+	uint8_t sign_key[16];
+	struct arcfour_state seal_state;
+};
+
+union ntlmssp_crypt_state {
+	/* NTLM */
+	struct ntlmssp_crypt_direction ntlm;
+
+	/* NTLM2 */
+	struct {
+		struct ntlmssp_crypt_direction sending;
+		struct ntlmssp_crypt_direction receiving;
+	} ntlm2;
+};
+
 /* The following definitions come from libcli/auth/ntlmssp.c  */
 
 void debug_ntlmssp_flags(uint32_t neg_flags);
diff --git a/libcli/auth/ntlmssp_sign.c b/libcli/auth/ntlmssp_sign.c
index 61b52c6..3cf1ed7 100644
--- a/libcli/auth/ntlmssp_sign.c
+++ b/libcli/auth/ntlmssp_sign.c
@@ -22,7 +22,6 @@
 #include "../libcli/auth/ntlmssp.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "../lib/crypto/md5.h"
-#include "../lib/crypto/arcfour.h"
 #include "../lib/crypto/hmacmd5.h"
 #include "../lib/crypto/crc32.h"
 #include "../libcli/auth/ntlmssp_private.h"
@@ -64,23 +63,6 @@ enum ntlmssp_direction {
 	NTLMSSP_RECEIVE
 };
 
-struct ntlmssp_crypt_direction {
-	uint32_t seq_num;
-	uint8_t sign_key[16];
-	struct arcfour_state seal_state;
-};
-
-union ntlmssp_crypt_state {
-	/* NTLM */
-	struct ntlmssp_crypt_direction ntlm;
-
-	/* NTLM2 */
-	struct {
-		struct ntlmssp_crypt_direction sending;
-		struct ntlmssp_crypt_direction receiving;
-	} ntlm2;
-};
-
 static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_state,
 					      TALLOC_CTX *sig_mem_ctx,
 					      const uint8_t *data, size_t length,
diff --git a/source3/Makefile.in b/source3/Makefile.in
index b8c13ca..5ce77dd 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -426,7 +426,7 @@ READLINE_OBJ = lib/readline.o
 # Be sure to include them into your application
 POPT_LIB_OBJ = lib/popt_common.o
 
-PARAM_WITHOUT_REG_OBJ = dynconfig.o param/loadparm.o param/util.o lib/sharesec.o lib/ldap_debug_handler.o
+PARAM_WITHOUT_REG_OBJ = dynconfig.o param/loadparm.o param/loadparm_server_role.o param/util.o lib/sharesec.o lib/ldap_debug_handler.o
 PARAM_REG_ADD_OBJ = $(REG_SMBCONF_OBJ) $(LIBSMBCONF_OBJ) $(PRIVILEGES_BASIC_OBJ)
 PARAM_OBJ = $(PARAM_WITHOUT_REG_OBJ) $(PARAM_REG_ADD_OBJ)
 
diff --git a/source3/auth/auth.c b/source3/auth/auth.c
index b4995ce..4fabbdd 100644
--- a/source3/auth/auth.c
+++ b/source3/auth/auth.c
@@ -214,10 +214,10 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
 		return NT_STATUS_LOGON_FAILURE;
 
 	DEBUG(3, ("check_ntlm_password:  Checking password for unmapped user [%s]\\[%s]@[%s] with the new password interface\n", 
-		  user_info->client_domain, user_info->smb_name, user_info->wksta_name));
+		  user_info->client_domain, user_info->smb_name, user_info->workstation_name));
 
 	DEBUG(3, ("check_ntlm_password:  mapped user is: [%s]\\[%s]@[%s]\n", 
-		  user_info->domain, user_info->internal_username, user_info->wksta_name));
+		  user_info->domain, user_info->internal_username, user_info->workstation_name));
 
 	if (auth_context->challenge.length != 8) {
 		DEBUG(0, ("check_ntlm_password:  Invalid challenge stored for this auth context - cannot continue\n"));
diff --git a/source3/auth/auth_domain.c b/source3/auth/auth_domain.c
index a42f3a1..9d63e59 100644
--- a/source3/auth/auth_domain.c
+++ b/source3/auth/auth_domain.c
@@ -310,7 +310,7 @@ static NTSTATUS domain_client_validate(TALLOC_CTX *mem_ctx,
 						      dc_name,                    /* server name */
 						      user_info->smb_name,        /* user name logging on. */
 						      user_info->client_domain,   /* domain name */
-						      user_info->wksta_name,      /* workstation name */
+						      user_info->workstation_name,/* workstation name */
 						      chal,                       /* 8 byte challenge. */
 						      user_info->lm_resp,         /* lanman 24 byte response */
 						      user_info->nt_resp,         /* nt 24 byte response */
diff --git a/source3/auth/auth_netlogond.c b/source3/auth/auth_netlogond.c
index 1442e2f..28ef933 100644
--- a/source3/auth/auth_netlogond.c
+++ b/source3/auth/auth_netlogond.c
@@ -80,16 +80,16 @@ static NTSTATUS netlogond_validate(TALLOC_CTX *mem_ctx,
 
 	status = rpccli_netlogon_sam_network_logon_ex(
 		p, p,
-		user_info->logon_parameters,/* flags such as 'allow
-					     * workstation logon' */
-		global_myname(),            /* server name */
-		user_info->smb_name,        /* user name logging on. */
-		user_info->client_domain,   /* domain name */
-		user_info->wksta_name,      /* workstation name */
+		user_info->logon_parameters,           /* flags such as 'allow
+					                * workstation logon' */
+		global_myname(),                       /* server name */
+		user_info->smb_name,                   /* user name logging on. */
+		user_info->client_domain,              /* domain name */
+		user_info->workstation_name,           /* workstation name */
 		(uchar *)auth_context->challenge.data, /* 8 byte challenge. */
-		user_info->lm_resp,         /* lanman 24 byte response */
-		user_info->nt_resp,         /* nt 24 byte response */
-		&info3);                    /* info3 out */
+		user_info->lm_resp,                    /* lanman 24 byte response */
+		user_info->nt_resp,                    /* nt 24 byte response */
+		&info3);                               /* info3 out */
 
 	DEBUG(10, ("rpccli_netlogon_sam_network_logon_ex returned %s\n",
 		   nt_errstr(status)));
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index 3a63a3b..a64fd33 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -111,7 +111,7 @@ static int _smb_create_user(const char *domain, const char *unix_username, const
 NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 			    const char *smb_name,
 			    const char *client_domain,
-			    const char *wksta_name,
+			    const char *workstation_name,
 			    DATA_BLOB *lm_pwd,
 			    DATA_BLOB *nt_pwd,
 			    DATA_BLOB *lm_interactive_pwd,
@@ -127,7 +127,7 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 	was_mapped = map_username(internal_username);
 
 	DEBUG(5, ("Mapping user [%s]\\[%s] from workstation [%s]\n",
-		 client_domain, smb_name, wksta_name));
+		 client_domain, smb_name, workstation_name));
 
 	domain = client_domain;
 
@@ -148,7 +148,7 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 			domain = get_global_sam_name();
 		DEBUG(5, ("Mapped domain from [%s] to [%s] for user [%s] from "
 			  "workstation [%s]\n",
-			  client_domain, domain, smb_name, wksta_name));
+			  client_domain, domain, smb_name, workstation_name));
 	}
 
 	/* We know that the given domain is trusted (and we are allowing them),
@@ -156,7 +156,7 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 	 * primary domain name */
 
 	result = make_user_info(user_info, smb_name, internal_username,
-			      client_domain, domain, wksta_name,
+			      client_domain, domain, workstation_name,
 			      lm_pwd, nt_pwd,
 			      lm_interactive_pwd, nt_interactive_pwd,
 			      plaintext, encrypted);
@@ -174,7 +174,7 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 bool make_user_info_netlogon_network(struct auth_usersupplied_info **user_info,
 				     const char *smb_name, 
 				     const char *client_domain, 
-				     const char *wksta_name, 
+				     const char *workstation_name,
 				     uint32 logon_parameters,
 				     const uchar *lm_network_pwd,
 				     int lm_pwd_len,
@@ -188,7 +188,7 @@ bool make_user_info_netlogon_network(struct auth_usersupplied_info **user_info,
 
 	status = make_user_info_map(user_info,
 				    smb_name, client_domain, 
-				    wksta_name, 
+				    workstation_name,
 				    lm_pwd_len ? &lm_blob : NULL, 
 				    nt_pwd_len ? &nt_blob : NULL,
 				    NULL, NULL, NULL,
@@ -212,7 +212,7 @@ bool make_user_info_netlogon_network(struct auth_usersupplied_info **user_info,
 bool make_user_info_netlogon_interactive(struct auth_usersupplied_info **user_info,
 					 const char *smb_name, 
 					 const char *client_domain, 
-					 const char *wksta_name, 
+					 const char *workstation_name,
 					 uint32 logon_parameters,
 					 const uchar chal[8], 
 					 const uchar lm_interactive_pwd[16], 
@@ -296,7 +296,7 @@ bool make_user_info_netlogon_interactive(struct auth_usersupplied_info **user_in
 
 		nt_status = make_user_info_map(
 			user_info, 
-			smb_name, client_domain, wksta_name, 
+			smb_name, client_domain, workstation_name,
 			lm_interactive_pwd ? &local_lm_blob : NULL,
 			nt_interactive_pwd ? &local_nt_blob : NULL,
 			lm_interactive_pwd ? &lm_interactive_blob : NULL,
diff --git a/source3/auth/auth_wbc.c b/source3/auth/auth_wbc.c
index 11cc7ea..7d46c85 100644
--- a/source3/auth/auth_wbc.c
+++ b/source3/auth/auth_wbc.c
@@ -65,7 +65,7 @@ static NTSTATUS check_wbc_security(const struct auth_context *auth_context,
 
 	params.account_name	= user_info->smb_name;
 	params.domain_name	= user_info->domain;
-	params.workstation_name	= user_info->wksta_name;
+	params.workstation_name	= user_info->workstation_name;
 
 	params.flags		= 0;
 	params.parameter_control= user_info->logon_parameters;
diff --git a/source3/auth/auth_winbind.c b/source3/auth/auth_winbind.c
index 68509e4..d534e59 100644
--- a/source3/auth/auth_winbind.c
+++ b/source3/auth/auth_winbind.c
@@ -61,7 +61,7 @@ static NTSTATUS check_winbind_security(const struct auth_context *auth_context,
 
 	params.account_name	= user_info->smb_name;
 	params.domain_name	= user_info->domain;
-	params.workstation_name	= user_info->wksta_name;
+	params.workstation_name	= user_info->workstation_name;
 
 	params.flags		= 0;
 	params.parameter_control= user_info->logon_parameters;
diff --git a/source3/auth/check_samsec.c b/source3/auth/check_samsec.c
index ef29df4..41a995e 100644
--- a/source3/auth/check_samsec.c
+++ b/source3/auth/check_samsec.c
@@ -234,15 +234,15 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
 		bool invalid_ws = True;
 		char *tok = NULL;
 		const char *s = workstation_list;
-		char *machine_name = talloc_asprintf(mem_ctx, "%s$", user_info->wksta_name);
+		char *machine_name = talloc_asprintf(mem_ctx, "%s$", user_info->workstation_name);
 
 		if (machine_name == NULL)
 			return NT_STATUS_NO_MEMORY;
 
 		while (next_token_talloc(mem_ctx, &s, &tok, ",")) {
 			DEBUG(10,("sam_account_ok: checking for workstation match %s and %s\n",
-				  tok, user_info->wksta_name));
-			if(strequal(tok, user_info->wksta_name)) {
+				  tok, user_info->workstation_name));
+			if(strequal(tok, user_info->workstation_name)) {
 				invalid_ws = False;
 				break;
 			}
diff --git a/source3/auth/user_info.c b/source3/auth/user_info.c
index eb84a36..de2022b 100644
--- a/source3/auth/user_info.c
+++ b/source3/auth/user_info.c
@@ -31,7 +31,7 @@ NTSTATUS make_user_info(struct auth_usersupplied_info **user_info,
 			const char *internal_username,
 			const char *client_domain,
 			const char *domain,
-			const char *wksta_name,
+			const char *workstation_name,
 			const DATA_BLOB *lm_pwd,
 			const DATA_BLOB *nt_pwd,
 			const DATA_BLOB *lm_interactive_pwd,
@@ -76,8 +76,8 @@ NTSTATUS make_user_info(struct auth_usersupplied_info **user_info,
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	(*user_info)->wksta_name = SMB_STRDUP(wksta_name);
-	if ((*user_info)->wksta_name == NULL) {
+	(*user_info)->workstation_name = SMB_STRDUP(workstation_name);
+	if ((*user_info)->workstation_name == NULL) {
 		free_user_info(user_info);
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -121,7 +121,7 @@ void free_user_info(struct auth_usersupplied_info **user_info)
 		SAFE_FREE((*user_info)->internal_username);
 		SAFE_FREE((*user_info)->client_domain);
 		SAFE_FREE((*user_info)->domain);
-		SAFE_FREE((*user_info)->wksta_name);
+		SAFE_FREE((*user_info)->workstation_name);
 		data_blob_free(&(*user_info)->lm_resp);
 		data_blob_free(&(*user_info)->nt_resp);
 		data_blob_clear_free(&(*user_info)->lm_interactive_pwd);
diff --git a/source3/include/auth.h b/source3/include/auth.h
index 69a91d2..52e5141 100644
--- a/source3/include/auth.h
+++ b/source3/include/auth.h
@@ -33,7 +33,7 @@ struct auth_usersupplied_info {
 	char *domain;                 /* domain name after mapping */
 	char *internal_username;      /* username after mapping */
 	char *smb_name;               /* username before mapping */
-	char *wksta_name;             /* workstation name (netbios calling
+	const char *workstation_name; /* workstation name (netbios calling
 				       * name) unicode string */
 
 	uint32 logon_parameters;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 237772e..ee68dd1 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -106,7 +106,7 @@ NTSTATUS auth_unix_init(void);
 NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 			    const char *smb_name, 
 			    const char *client_domain, 
-			    const char *wksta_name, 
+			    const char *workstation_name,
  			    DATA_BLOB *lm_pwd, DATA_BLOB *nt_pwd,
  			    DATA_BLOB *lm_interactive_pwd, DATA_BLOB *nt_interactive_pwd,
 			    DATA_BLOB *plaintext, 
@@ -114,7 +114,7 @@ NTSTATUS make_user_info_map(struct auth_usersupplied_info **user_info,
 bool make_user_info_netlogon_network(struct auth_usersupplied_info **user_info,
 				     const char *smb_name, 
 				     const char *client_domain, 
-				     const char *wksta_name, 
+				     const char *workstation_name,
 				     uint32 logon_parameters,
 				     const uchar *lm_network_pwd,
 				     int lm_pwd_len,
@@ -123,7 +123,7 @@ bool make_user_info_netlogon_network(struct auth_usersupplied_info **user_info,
 bool make_user_info_netlogon_interactive(struct auth_usersupplied_info **user_info,
 					 const char *smb_name, 
 					 const char *client_domain, 
-					 const char *wksta_name, 
+					 const char *workstation_name,
 					 uint32 logon_parameters,
 					 const uchar chal[8], 
 					 const uchar lm_interactive_pwd[16], 
@@ -190,7 +190,7 @@ NTSTATUS make_user_info(struct auth_usersupplied_info **user_info,
 			const char *internal_username,
 			const char *client_domain,
 			const char *domain,
-			const char *wksta_name,
+			const char *workstation_name,
 			const DATA_BLOB *lm_pwd,
 			const DATA_BLOB *nt_pwd,
 			const DATA_BLOB *lm_interactive_pwd,
@@ -4281,8 +4281,8 @@ struct share_params *next_share(struct share_iterator *list);
 struct share_params *next_printer(struct share_iterator *list);
 struct share_params *snum2params_static(int snum);
 const char *volume_label(int snum);
-int lp_server_role(void);
 bool lp_domain_master(void);
+bool lp_domain_master_true_or_auto(void);
 bool lp_preferred_master(void);
 void lp_remove_service(int snum);
 void lp_copy_service(int snum, const char *new_name);
@@ -4310,6 +4310,11 @@ char* lp_perfcount_module(void);
 void lp_set_passdb_backend(const char *backend);
 void widelinks_warning(int snum);
 
+/* The following definitions come from param/loadparm_server_role.c  */
+
+int lp_server_role(void);
+void set_server_role(void);
+
 /* The following definitions come from param/util.c  */
 
 uint32 get_int_param( const char* param );
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 2d389d4..f65a9d5 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -675,7 +675,6 @@ static int *invalid_services = NULL;
 static int num_invalid_services = 0;
 static bool bInGlobalSection = True;
 static bool bGlobalOnly = False;
-static int server_role;
 static int default_server_announce;
 
 #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct))
@@ -694,7 +693,6 @@ static bool handle_charset( int snum, const char *pszParmValue, char **ptr );
 static bool handle_printing( int snum, const char *pszParmValue, char **ptr);
 static bool handle_ldap_debug_level( int snum, const char *pszParmValue, char **ptr);
 
-static void set_server_role(void);
 static void set_default_server_announce_type(void);
 static void set_allowed_client_auth(void);
 
@@ -8413,79 +8411,6 @@ static void lp_save_defaults(void)
 	defaults_saved = True;
 }
 
-/*******************************************************************
- Set the server type we will announce as via nmbd.
-********************************************************************/
-
-static const struct srv_role_tab {
-	uint32 role;
-	const char *role_str;
-} srv_role_tab [] = {
-	{ ROLE_STANDALONE, "ROLE_STANDALONE" },
-	{ ROLE_DOMAIN_MEMBER, "ROLE_DOMAIN_MEMBER" },
-	{ ROLE_DOMAIN_BDC, "ROLE_DOMAIN_BDC" },
-	{ ROLE_DOMAIN_PDC, "ROLE_DOMAIN_PDC" },
-	{ 0, NULL }
-};
-
-const char* server_role_str(uint32 role)
-{
-	int i = 0;
-	for (i=0; srv_role_tab[i].role_str; i++) {
-		if (role == srv_role_tab[i].role) {
-			return srv_role_tab[i].role_str;
-		}
-	}
-	return NULL;
-}
-
-static void set_server_role(void)
-{
-	server_role = ROLE_STANDALONE;
-
-	switch (lp_security()) {
-		case SEC_SHARE:
-			if (lp_domain_logons())
-				DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n"));
-			break;
-		case SEC_SERVER:
-			if (lp_domain_logons())
-				DEBUG(0, ("Server's Role (logon server) conflicts with server-level security\n"));
-			/* this used to be considered ROLE_DOMAIN_MEMBER but that's just wrong */
-			server_role = ROLE_STANDALONE;
-			break;
-		case SEC_DOMAIN:
-			if (lp_domain_logons()) {
-				DEBUG(1, ("Server's Role (logon server) NOT ADVISED with domain-level security\n"));
-				server_role = ROLE_DOMAIN_BDC;
-				break;
-			}
-			server_role = ROLE_DOMAIN_MEMBER;
-			break;
-		case SEC_ADS:
-			if (lp_domain_logons()) {
-				server_role = ROLE_DOMAIN_PDC;
-				break;
-			}
-			server_role = ROLE_DOMAIN_MEMBER;
-			break;
-		case SEC_USER:
-			if (lp_domain_logons()) {
-
-				if (Globals.iDomainMaster) /* auto or yes */ 
-					server_role = ROLE_DOMAIN_PDC;
-				else
-					server_role = ROLE_DOMAIN_BDC;
-			}
-			break;
-		default:
-			DEBUG(0, ("Server's Role undefined due to unknown security mode\n"));
-			break;
-	}
-
-	DEBUG(10, ("set_server_role: role = %s\n", server_role_str(server_role)));
-}
-
 /***********************************************************
  If we should send plaintext/LANMAN passwords in the clinet
 ************************************************************/
@@ -9670,24 +9595,27 @@ static void set_default_server_announce_type(void)
 }
 
 /***********************************************************
- returns role of Samba server
+ If we are PDC then prefer us as DMB
 ************************************************************/
 
-int lp_server_role(void)
+bool lp_domain_master(void)
 {
-	return server_role;
+	if (Globals.iDomainMaster == Auto)
+		return (lp_server_role() == ROLE_DOMAIN_PDC);
+
+	return (bool)Globals.iDomainMaster;
 }
 
 /***********************************************************
  If we are PDC then prefer us as DMB
 ************************************************************/
 
-bool lp_domain_master(void)
+bool lp_domain_master_true_or_auto(void)
 {
-	if (Globals.iDomainMaster == Auto)
-		return (lp_server_role() == ROLE_DOMAIN_PDC);
+	if (Globals.iDomainMaster) /* auto or yes */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list