The branch, master has been updated
       via  da955d7193af4c5bf76f91cf8219e051de59ce7f (commit)
       via  81fde585516957b6a7742e0168c68df33572ed74 (commit)
      from  6f46002ff6b153730635bfd4a8380792a815ce6b (commit)

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


- Log -----------------------------------------------------------------
commit da955d7193af4c5bf76f91cf8219e051de59ce7f
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Wed Sep 24 11:06:39 2008 +0200

    s3-nbt: further cleanup of dsgetdcname().
    
    Guenther

commit 81fde585516957b6a7742e0168c68df33572ed74
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Wed Sep 24 09:05:37 2008 +0200

    s3-nbt: remove double nbt netlogon opcodes.
    
    Guenther

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

Summary of changes:
 source3/include/nameserv.h       |   11 --
 source3/libsmb/dsgetdcname.c     |  188 +++++---------------------------------
 source3/nmbd/nmbd_processlogon.c |   30 +++---
 source3/utils/net_ads.c          |    8 +-
 4 files changed, 44 insertions(+), 193 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/nameserv.h b/source3/include/nameserv.h
index 4377e33..a7d46e7 100644
--- a/source3/include/nameserv.h
+++ b/source3/include/nameserv.h
@@ -539,17 +539,6 @@ struct packet_struct
        } packet;
 };
 
-/* NETLOGON opcodes */
-
-#define QUERYFORPDC     7 /* Query for PDC. */
-#define SAM_UAS_CHANGE  10 /* Announce change to UAS or SAM. */
-#define QUERYFORPDC_R  12 /* Response to Query for PDC. */
-#define SAMLOGON       18
-#define SAMLOGON_R     19
-#define SAMLOGON_UNK_R 21
-#define SAMLOGON_AD_UNK_R 23
-#define SAMLOGON_AD_R   25
-
 /* Ids for netbios packet types. */
 
 #define ANN_HostAnnouncement         1
diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index a543e07..89769d8 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -35,7 +35,7 @@ struct ip_service_name {
 static NTSTATUS make_dc_info_from_cldap_reply(TALLOC_CTX *mem_ctx,
                                              uint32_t flags,
                                              struct sockaddr_storage *ss,
-                                             struct netlogon_samlogon_response 
*r,
+                                             struct 
NETLOGON_SAM_LOGON_RESPONSE_EX *r,
                                              struct netr_DsRGetDCNameInfo 
**info);
 
 /****************************************************************
@@ -358,7 +358,6 @@ static NTSTATUS dsgetdcname_cache_fetch(TALLOC_CTX *mem_ctx,
        DATA_BLOB blob;
        enum ndr_err_code ndr_err;
        struct netr_DsRGetDCNameInfo *info;
-       struct netlogon_samlogon_response p;
        struct NETLOGON_SAM_LOGON_RESPONSE_EX r;
        NTSTATUS status;
 
@@ -389,10 +388,8 @@ static NTSTATUS dsgetdcname_cache_fetch(TALLOC_CTX 
*mem_ctx,
                return ndr_map_error2ntstatus(ndr_err);
        }
 
-       p.nt5_ex = r;
-
        status = make_dc_info_from_cldap_reply(mem_ctx, flags, NULL,
-                                              &p, &info);
+                                              &r, &info);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -787,7 +784,7 @@ static void map_dc_and_domain_names(uint32_t flags,
 static NTSTATUS make_dc_info_from_cldap_reply(TALLOC_CTX *mem_ctx,
                                              uint32_t flags,
                                              struct sockaddr_storage *ss,
-                                             struct netlogon_samlogon_response 
*r,
+                                             struct 
NETLOGON_SAM_LOGON_RESPONSE_EX *r,
                                              struct netr_DsRGetDCNameInfo 
**info)
 {
        const char *dc_hostname = NULL;
@@ -808,163 +805,28 @@ static NTSTATUS make_dc_info_from_cldap_reply(TALLOC_CTX 
*mem_ctx,
                dc_address_type = DS_ADDRESS_TYPE_INET;
        }
 
-       switch (r->ntver & 0x0000001f) {
-               case 0:
-               case 1:
-               case 16:
-               case 17:
-                       if (!ss) {
-                               dc_address      = r->nt4.server;
-                               dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
-                       }
-
-                       map_dc_and_domain_names(flags,
-                                               r->nt4.server,
-                                               r->nt4.domain,
-                                               NULL,
-                                               NULL,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       if (flags & DS_PDC_REQUIRED) {
-                               dc_flags = NBT_SERVER_WRITABLE | NBT_SERVER_PDC;
-                       }
-                       break;
-               case 2:
-               case 3:
-               case 18:
-               case 19:
-                       if (!ss) {
-                               dc_address      = r->nt5.pdc_ip;
-                               dc_address_type = DS_ADDRESS_TYPE_INET;
-                       }
-
-                       map_dc_and_domain_names(flags,
-                                               r->nt5.pdc_name,
-                                               r->nt5.domain_name,
-                                               r->nt5.pdc_dns_name,
-                                               r->nt5.dns_domain,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       dc_flags        |= r->nt5.server_type;
-                       dc_forest       = r->nt5.forest;
-                       dc_domain_guid  = &r->nt5.domain_uuid;
-
-                       break;
-               case 4:
-               case 5:
-               case 6:
-               case 7:
-                       if (!ss) {
-                               dc_address      = r->nt5_ex.pdc_name;
-                               dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
-                       }
-
-                       map_dc_and_domain_names(flags,
-                                               r->nt5_ex.pdc_name,
-                                               r->nt5_ex.domain,
-                                               r->nt5_ex.pdc_dns_name,
-                                               r->nt5_ex.dns_domain,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       dc_flags        |= r->nt5_ex.server_type;
-                       dc_forest       = r->nt5_ex.forest;
-                       dc_domain_guid  = &r->nt5_ex.domain_uuid;
-                       dc_server_site  = r->nt5_ex.server_site;
-                       dc_client_site  = r->nt5_ex.client_site;
-
-                       break;
-               case 8:
-               case 9:
-               case 10:
-               case 11:
-               case 12:
-               case 13:
-               case 14:
-               case 15:
-                       if (!ss) {
-                               dc_address      = r->nt5_ex.sockaddr.pdc_ip;
-                               dc_address_type = DS_ADDRESS_TYPE_INET;
-                       }
-
-                       map_dc_and_domain_names(flags,
-                                               r->nt5_ex.pdc_name,
-                                               r->nt5_ex.domain,
-                                               r->nt5_ex.pdc_dns_name,
-                                               r->nt5_ex.dns_domain,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       dc_flags        |= r->nt5_ex.server_type;
-                       dc_forest       = r->nt5_ex.forest;
-                       dc_domain_guid  = &r->nt5_ex.domain_uuid;
-                       dc_server_site  = r->nt5_ex.server_site;
-                       dc_client_site  = r->nt5_ex.client_site;
-
-                       break;
-               case 20:
-               case 21:
-               case 22:
-               case 23:
-               case 24:
-               case 25:
-               case 26:
-               case 27:
-               case 28:
-                       if (!ss) {
-                               dc_address      = r->nt5_ex.pdc_name;
-                               dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
-                       }
+       if (!ss && r->sockaddr.pdc_ip) {
+               dc_address      = r->sockaddr.pdc_ip;
+               dc_address_type = DS_ADDRESS_TYPE_INET;
+       } else {
+               dc_address      = r->pdc_name;
+               dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
+       }
 
-                       map_dc_and_domain_names(flags,
-                                               r->nt5_ex.pdc_name,
-                                               r->nt5_ex.domain,
-                                               r->nt5_ex.pdc_dns_name,
-                                               r->nt5_ex.dns_domain,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       dc_flags        |= r->nt5_ex.server_type;
-                       dc_forest       = r->nt5_ex.forest;
-                       dc_domain_guid  = &r->nt5_ex.domain_uuid;
-                       dc_server_site  = r->nt5_ex.server_site;
-                       dc_client_site  = r->nt5_ex.client_site;
-
-                       break;
-               case 29:
-               case 30:
-               case 31:
-                       if (!ss) {
-                               dc_address      = r->nt5_ex.sockaddr.pdc_ip;
-                               dc_address_type = DS_ADDRESS_TYPE_INET;
-                       }
+       map_dc_and_domain_names(flags,
+                               r->pdc_name,
+                               r->domain,
+                               r->pdc_dns_name,
+                               r->dns_domain,
+                               &dc_flags,
+                               &dc_hostname,
+                               &dc_domain_name);
 
-                       map_dc_and_domain_names(flags,
-                                               r->nt5_ex.pdc_name,
-                                               r->nt5_ex.domain,
-                                               r->nt5_ex.pdc_dns_name,
-                                               r->nt5_ex.dns_domain,
-                                               &dc_flags,
-                                               &dc_hostname,
-                                               &dc_domain_name);
-
-                       dc_flags        |= r->nt5_ex.server_type;
-                       dc_forest       = r->nt5_ex.forest;
-                       dc_domain_guid  = &r->nt5_ex.domain_uuid;
-                       dc_server_site  = r->nt5_ex.server_site;
-                       dc_client_site  = r->nt5_ex.client_site;
-
-                       break;
-               default:
-                       return NT_STATUS_INVALID_PARAMETER;
-       }
+       dc_flags        |= r->server_type;
+       dc_forest       = r->forest;
+       dc_domain_guid  = &r->domain_uuid;
+       dc_server_site  = r->server_site;
+       dc_client_site  = r->client_site;
 
        return make_domain_controller_info(mem_ctx,
                                           dc_hostname,
@@ -1051,7 +913,7 @@ static NTSTATUS process_dc_dns(TALLOC_CTX *mem_ctx,
        }
 
        status = make_dc_info_from_cldap_reply(mem_ctx, flags, &dclist[i].ss,
-                                              r, info);
+                                              &r->nt5_ex, info);
        if (NT_STATUS_IS_OK(status)) {
                return store_cldap_reply(mem_ctx, flags, &dclist[i].ss,
                                         nt_version, &r->nt5_ex);
@@ -1187,7 +1049,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
  make_reply:
 
        status = make_dc_info_from_cldap_reply(mem_ctx, flags, &dclist[i].ss,
-                                              r, info);
+                                              &r->nt5_ex, info);
        if (NT_STATUS_IS_OK(status) && store_cache) {
                return store_cldap_reply(mem_ctx, flags, &dclist[i].ss,
                                         nt_version, &r->nt5_ex);
diff --git a/source3/nmbd/nmbd_processlogon.c b/source3/nmbd/nmbd_processlogon.c
index 474ae1c..814eaf7 100644
--- a/source3/nmbd/nmbd_processlogon.c
+++ b/source3/nmbd/nmbd_processlogon.c
@@ -178,7 +178,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
                                break;
                        }
 
-               case QUERYFORPDC:
+               case LOGON_PRIMARY_QUERY:
                        {
                                fstring mach_str, getdc_str;
                                fstring source_name;
@@ -253,7 +253,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
 
                                /* Construct reply. */
                                q = outbuf;
-                               SSVAL(q, 0, QUERYFORPDC_R);
+                               SSVAL(q, 0, NETLOGON_RESPONSE_FROM_PDC);
                                q += 2;
 
                                fstrcpy(reply_name,my_name);
@@ -292,7 +292,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
                                DEBUG(5,("process_logon_packet: GETDC request 
from %s at IP %s, \
 reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
                                        mach_str,inet_ntoa(p->ip), reply_name, 
lp_workgroup(),
-                                       QUERYFORPDC_R, (uint32)ntversion, 
(uint32)lmnttoken,
+                                       NETLOGON_RESPONSE_FROM_PDC, 
(uint32)ntversion, (uint32)lmnttoken,
                                        (uint32)lm20token ));
 
                                dump_data(4, (uint8 *)outbuf, PTR_DIFF(q, 
outbuf));
@@ -309,7 +309,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                return;
                        }
 
-               case SAMLOGON:
+               case LOGON_SAM_LOGON_REQUEST:
 
                        {
                                fstring getdc_str;
@@ -351,7 +351,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                domainsidsize = IVAL(q, 0);
                                q += 4;
 
-                               DEBUG(5,("process_logon_packet: SAMLOGON 
sidsize %d, len = %d\n", domainsidsize, len));
+                               DEBUG(5,("process_logon_packet: 
LOGON_SAM_LOGON_REQUEST sidsize %d, len = %d\n", domainsidsize, len));
 
                                if (domainsidsize < (len - PTR_DIFF(q, buf)) && 
(domainsidsize != 0)) {
                                        q += domainsidsize;
@@ -383,7 +383,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                lm20token = SVAL(q, 6);
                                q += 8;
 
-                               DEBUG(3,("process_logon_packet: SAMLOGON 
sidsize %d ntv %d\n", domainsidsize, ntversion));
+                               DEBUG(3,("process_logon_packet: 
LOGON_SAM_LOGON_REQUEST sidsize %d ntv %d\n", domainsidsize, ntversion));
 
                                /*
                                 * we respond regadless of whether the machine 
is in our password 
@@ -392,14 +392,14 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                 */
                                pull_ucs2_fstring(ascuser, uniuser);
                                pull_ucs2_fstring(asccomp, unicomp);
-                               DEBUG(5,("process_logon_packet: SAMLOGON user 
%s\n", ascuser));
+                               DEBUG(5,("process_logon_packet: 
LOGON_SAM_LOGON_REQUEST user %s\n", ascuser));
 
                                fstrcpy(reply_name, "\\\\"); /* Here it wants 
\\LOGONSERVER. */
                                fstrcat(reply_name, my_name);
 
-                               DEBUG(5,("process_logon_packet: SAMLOGON 
request from %s(%s) for %s, returning logon svr %s domain %s code %x 
token=%x\n",
+                               DEBUG(5,("process_logon_packet: 
LOGON_SAM_LOGON_REQUEST request from %s(%s) for %s, returning logon svr %s 
domain %s code %x token=%x\n",
                                        asccomp,inet_ntoa(p->ip), ascuser, 
reply_name, lp_workgroup(),
-                               SAMLOGON_R ,lmnttoken));
+                               LOGON_SAM_LOGON_RESPONSE ,lmnttoken));
 
                                /* Construct reply. */
 
@@ -408,9 +408,9 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                /* never, at least for now */
                                if ((ntversion < 11) || (SEC_ADS != 
lp_security()) || (ROLE_DOMAIN_PDC != lp_server_role())) {
                                        if (SVAL(uniuser, 0) == 0) {
-                                               SSVAL(q, 0, SAMLOGON_UNK_R);    
/* user unknown */
+                                               SSVAL(q, 0, 
LOGON_SAM_LOGON_USER_UNKNOWN);      /* user unknown */
                                        } else {
-                                               SSVAL(q, 0, SAMLOGON_R);
+                                               SSVAL(q, 0, 
LOGON_SAM_LOGON_RESPONSE);
                                        }
 
                                        q += 2;
@@ -453,9 +453,9 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                                                return;
                                        }
                                        if (SVAL(uniuser, 0) == 0) {
-                                               SIVAL(q, 0, SAMLOGON_AD_UNK_R); 
/* user unknown */
+                                               SIVAL(q, 0, 
LOGON_SAM_LOGON_USER_UNKNOWN_EX);   /* user unknown */
                                        } else {
-                                               SIVAL(q, 0, SAMLOGON_AD_R);
+                                               SIVAL(q, 0, 
LOGON_SAM_LOGON_RESPONSE_EX);
                                        }
                                        q += 4;
 
@@ -684,8 +684,8 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x 
lm_20 token=%x\n",
                /* Announce change to UAS or SAM.  Send by the domain 
controller when a
                replication event is required. */
 
-               case SAM_UAS_CHANGE:
-                       DEBUG(5, ("Got SAM_UAS_CHANGE\n"));
+               case NETLOGON_ANNOUNCE_UAS:
+                       DEBUG(5, ("Got NETLOGON_ANNOUNCE_UAS\n"));
                        break;
 
                default:
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 1ef4c15..627374c 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -56,11 +56,11 @@ static int net_ads_cldap_netlogon(struct net_context *c, 
ADS_STRUCT *ads)
 
        d_printf("Response Type: ");
        switch (reply.command) {
-       case SAMLOGON_AD_UNK_R:
-               d_printf("SAMLOGON\n");
+       case LOGON_SAM_LOGON_USER_UNKNOWN_EX:
+               d_printf("LOGON_SAM_LOGON_USER_UNKNOWN_EX\n");
                break;
-       case SAMLOGON_AD_R:
-               d_printf("SAMLOGON_USER\n");
+       case LOGON_SAM_LOGON_RESPONSE_EX:
+               d_printf("LOGON_SAM_LOGON_RESPONSE_EX\n");
                break;
        default:
                d_printf("0x%x\n", reply.command);


-- 
Samba Shared Repository

Reply via email to