[SCM] Samba Shared Repository - branch master updated - da955d7193af4c5bf76f91cf8219e051de59ce7f

Günther Deschner gd at samba.org
Thu Sep 25 18:13:02 GMT 2008


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 <gd at samba.org>
Date:   Wed Sep 24 11:06:39 2008 +0200

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

commit 81fde585516957b6a7742e0168c68df33572ed74
Author: Günther Deschner <gd at samba.org>
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


More information about the samba-cvs mailing list