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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Date:   Tue May 25 20:20:46 2010 +1000

    s4:ntlmssp Use the new common ntlmssp.h

commit bc8d12e59331fb814a58733b68f8ec16cfffa61e
Author: Andrew Bartlett <[email protected]>
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 <[email protected]>
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 <[email protected]>

commit 6d2e796f35dea93ca31e6879e79942a02572754d
Author: Andrew Bartlett <[email protected]>
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 <[email protected]>

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

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] 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]\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

Reply via email to