diff options
Diffstat (limited to 'source4/cldap_server')
-rw-r--r-- | source4/cldap_server/netlogon.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c index 327a60c8bb..ea4a8726ef 100644 --- a/source4/cldap_server/netlogon.c +++ b/source4/cldap_server/netlogon.c @@ -93,7 +93,8 @@ static NTSTATUS cldapd_netlogon_fill(struct cldap_socket *cldap, pdc_dns_name = talloc_asprintf(mem_ctx, "%s.%s", lp_netbios_name(), dns_domain); flatname = samdb_result_string(res[0], "name", lp_workgroup()); - site_name = "Default-First-Site-Name.bludom.tridgell.net"; + site_name = talloc_asprintf(mem_ctx, "Default-First-Site-Name.%s", + dns_domain); site_name2 = ""; pdc_ip = iface_best_ip(src_address); @@ -179,6 +180,9 @@ void cldapd_netlogon_request(struct cldap_socket *cldap, const char *domain = NULL; const char *host = NULL; const char *user = ""; + const char *domain_guid = NULL; + const char *domain_sid = NULL; + int acct_control = -1; int version = -1; union nbt_cldap_netlogon netlogon; NTSTATUS status = NT_STATUS_INVALID_PARAMETER; @@ -206,6 +210,16 @@ void cldapd_netlogon_request(struct cldap_socket *cldap, t->u.simple.value.data, t->u.simple.value.length); } + if (strcasecmp(t->u.simple.attr, "DomainGuid") == 0) { + domain_guid = talloc_strndup(tmp_ctx, + t->u.simple.value.data, + t->u.simple.value.length); + } + if (strcasecmp(t->u.simple.attr, "DomainSid") == 0) { + domain_sid = talloc_strndup(tmp_ctx, + t->u.simple.value.data, + t->u.simple.value.length); + } if (strcasecmp(t->u.simple.attr, "User") == 0) { user = talloc_strndup(tmp_ctx, t->u.simple.value.data, @@ -215,6 +229,10 @@ void cldapd_netlogon_request(struct cldap_socket *cldap, t->u.simple.value.length == 4) { version = IVAL(t->u.simple.value.data, 0); } + if (strcasecmp(t->u.simple.attr, "AAC") == 0 && + t->u.simple.value.length == 4) { + acct_control = IVAL(t->u.simple.value.data, 0); + } } if (domain == NULL || host == NULL || version == -1) { |