diff options
Diffstat (limited to 'source4')
| -rw-r--r-- | source4/cldap_server/netlogon.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c index d1fde899a5..1dd3cb7e0e 100644 --- a/source4/cldap_server/netlogon.c +++ b/source4/cldap_server/netlogon.c @@ -71,7 +71,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,  	const char *pdc_ip;  	struct ldb_dn *domain_dn = NULL;  	struct interface *ifaces; -	bool user_known; +	bool user_known, am_rodc;  	NTSTATUS status;  	/* the domain parameter could have an optional trailing "." */ @@ -233,7 +233,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,  	server_type      =   		DS_SERVER_DS | DS_SERVER_TIMESERV | -		DS_SERVER_CLOSEST | DS_SERVER_WRITABLE |  +		DS_SERVER_CLOSEST |  		DS_SERVER_GOOD_TIMESERV;  #if 0 @@ -261,6 +261,10 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,  		server_type |= DS_SERVER_KDC;  	} +	if (samdb_rodc(sam_ctx, &am_rodc) != LDB_SUCCESS && !am_rodc) { +		server_type |= DS_SERVER_WRITABLE; +	} +  #if 0  	/* w2k8-r2 as a sole DC does not claim this */  	if (ldb_dn_compare(ldb_get_root_basedn(sam_ctx), ldb_get_default_basedn(sam_ctx)) == 0) {  | 
