r6761: - not everyone is in my domain :-)
authorAndrew Tridgell <tridge@samba.org>
Fri, 13 May 2005 05:29:41 +0000 (05:29 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:16:41 +0000 (13:16 -0500)
- started adding support for the other cldap attributes that XP uses

source/cldap_server/netlogon.c

index 327a60c8bb8b268360f4f2dbc82206c6ca15db31..ea4a8726ef360405d19885b622517ebd755048a5 100644 (file)
@@ -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) {