[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2001-g0fac016

Günther Deschner gd at samba.org
Fri Feb 8 09:17:10 GMT 2008


The branch, v3-2-test has been updated
       via  0fac016d9d0018c983576d5cc8c3e06f40360b73 (commit)
       via  ddc2fc16bf18fe3ab8a0fc0021826253d5f4ed32 (commit)
       via  ccf79cfa88c7f3a10d191f8f0eedb9d421c65f6c (commit)
      from  08888e3773fa9f92c1d0d4662983bd44bea69a6c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 0fac016d9d0018c983576d5cc8c3e06f40360b73
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 01:56:09 2008 +0100

    Remove unused marshalling for LSA_QUERY_INFO2.
    
    Guenther

commit ddc2fc16bf18fe3ab8a0fc0021826253d5f4ed32
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 01:57:55 2008 +0100

    Use rpccli_lsa_QueryInfoPolicy2 in libnet join.
    
    Guenther

commit ccf79cfa88c7f3a10d191f8f0eedb9d421c65f6c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 01:52:27 2008 +0100

    Use rpccli_lsa_QueryInfoPolicy2 in winbindd.
    
    Guenther

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

Summary of changes:
 source/include/rpc_lsa.h       |    5 --
 source/libnet/libnet_join.c    |   16 +++---
 source/rpc_client/cli_lsarpc.c |   96 --------------------------------
 source/rpc_parse/parse_lsa.c   |  119 ----------------------------------------
 source/rpc_server/srv_lsa_nt.c |    2 +-
 source/winbindd/winbindd_cm.c  |   35 ++++++-----
 6 files changed, 28 insertions(+), 245 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h
index 2825efc..b86324d 100644
--- a/source/include/rpc_lsa.h
+++ b/source/include/rpc_lsa.h
@@ -295,8 +295,6 @@ typedef struct lsa_info_ctr
 
 } LSA_INFO_CTR;
 
-typedef LSA_INFO_CTR LSA_INFO_CTR2;
-
 /* LSA_R_QUERY_INFO - response to LSA query info policy */
 typedef struct lsa_r_query_info
 {
@@ -306,9 +304,6 @@ typedef struct lsa_r_query_info
 
 } LSA_R_QUERY_INFO;
 
-typedef LSA_Q_QUERY_INFO LSA_Q_QUERY_INFO2;
-typedef LSA_R_QUERY_INFO LSA_R_QUERY_INFO2;
-
 /*******************************************************/
 
 typedef struct {
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index f855a57..2f8d3e3 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -610,6 +610,7 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 	uchar md5buffer[16];
 	DATA_BLOB digested_session_key;
 	uchar md4_trust_password[16];
+	union lsa_PolicyInformation *info = NULL;
 
 	if (!r->in.machine_password) {
 		r->in.machine_password = talloc_strdup(mem_ctx, generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH));
@@ -641,16 +642,15 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 		goto done;
 	}
 
-	status = rpccli_lsa_query_info_policy2(pipe_hnd, mem_ctx, &lsa_pol,
-					       12,
-					       &r->out.netbios_domain_name,
-					       &r->out.dns_domain_name,
-					       NULL,
-					       NULL,
-					       &r->out.domain_sid);
-
+	status = rpccli_lsa_QueryInfoPolicy2(pipe_hnd, mem_ctx,
+					     &lsa_pol,
+					     LSA_POLICY_INFO_DNS,
+					     &info);
 	if (NT_STATUS_IS_OK(status)) {
 		r->out.domain_is_ad = true;
+		r->out.netbios_domain_name = info->dns.name.string;
+		r->out.dns_domain_name = info->dns.dns_domain.string;
+		r->out.domain_sid = info->dns.sid;
 	}
 
 	if (!NT_STATUS_IS_OK(status)) {
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index f3dad5a..b28a126 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -552,102 +552,6 @@ NTSTATUS rpccli_lsa_query_info_policy(struct rpc_pipe_client *cli,
 	return result;
 }
 
-/** Query info policy2
- *
- *  @param domain_name - returned remote server's domain name
- *  @param dns_name - returned remote server's dns domain name
- *  @param forest_name - returned remote server's forest name
- *  @param domain_guid - returned remote server's domain guid
- *  @param domain_sid - returned remote server's domain sid */
-
-NTSTATUS rpccli_lsa_query_info_policy2(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx,
-				       POLICY_HND *pol, uint16 info_class,
-				       const char **domain_name,
-				       const char **dns_name,
-				       const char **forest_name,
-				       struct GUID **domain_guid,
-				       DOM_SID **domain_sid)
-{
-	prs_struct qbuf, rbuf;
-	LSA_Q_QUERY_INFO2 q;
-	LSA_R_QUERY_INFO2 r;
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
-	if (info_class != 12)
-		goto done;
-
-	ZERO_STRUCT(q);
-	ZERO_STRUCT(r);
-
-	init_q_query2(&q, pol, info_class);
-
-	CLI_DO_RPC( cli, mem_ctx, PI_LSARPC, LSA_QUERYINFO2,
-		q, r,
-		qbuf, rbuf,
-		lsa_io_q_query_info2,
-		lsa_io_r_query_info2,
-		NT_STATUS_UNSUCCESSFUL);
-
-	result = r.status;
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	/* Return output parameters */
-
-	ZERO_STRUCTP(domain_guid);
-
-	if (domain_name && r.ctr.info.id12.hdr_nb_dom_name.buffer) {
-		*domain_name = unistr2_to_ascii_talloc(mem_ctx,
-					    &r.ctr.info.id12
-					    .uni_nb_dom_name);
-		if (!*domain_name) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-	if (dns_name && r.ctr.info.id12.hdr_dns_dom_name.buffer) {
-		*dns_name = unistr2_to_ascii_talloc(mem_ctx,
-					 &r.ctr.info.id12
-					 .uni_dns_dom_name);
-		if (!*dns_name) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-	if (forest_name && r.ctr.info.id12.hdr_forest_name.buffer) {
-		*forest_name = unistr2_to_ascii_talloc(mem_ctx,
-					    &r.ctr.info.id12
-					    .uni_forest_name);
-		if (!*forest_name) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-
-	if (domain_guid) {
-		*domain_guid = TALLOC_P(mem_ctx, struct GUID);
-		if (!*domain_guid) {
-			return NT_STATUS_NO_MEMORY;
-		}
-		memcpy(*domain_guid,
-		       &r.ctr.info.id12.dom_guid,
-		       sizeof(struct GUID));
-	}
-
-	if (domain_sid && r.ctr.info.id12.ptr_dom_sid != 0) {
-		*domain_sid = TALLOC_P(mem_ctx, DOM_SID);
-		if (!*domain_sid) {
-			return NT_STATUS_NO_MEMORY;
-		}
-		sid_copy(*domain_sid,
-			 &r.ctr.info.id12.dom_sid.sid);
-	}
-
- done:
-
-	return result;
-}
-
 /**
  * Enumerate list of trusted domains
  *
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index daf4806..3e79058 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -854,61 +854,6 @@ bool lsa_io_dom_query_12(const char *desc, DOM_QUERY_12 *info, prs_struct *ps, i
 reads or writes a structure.
 ********************************************************************/
 
-static bool lsa_io_query_info_ctr2(const char *desc, prs_struct *ps, int depth, LSA_INFO_CTR2 *ctr)
-{
-	prs_debug(ps, depth, desc, "lsa_io_query_info_ctr2");
-	depth++;
-
-	if(!prs_uint16("info_class", ps, depth, &ctr->info_class))
-		return False;
-
-	switch (ctr->info_class) {
-	case 1:
-		if(!lsa_io_dom_query_1("", &ctr->info.id1, ps, depth))
-			return False;
-		break;
-	case 2:
-		if(!lsa_io_dom_query_2("", &ctr->info.id2, ps, depth))
-			return False;
-		break;
-	case 3:
-		if(!lsa_io_dom_query_3("", &ctr->info.id3, ps, depth))
-			return False;
-		break;
-	case 5:
-		if(!lsa_io_dom_query_5("", &ctr->info.id5, ps, depth))
-			return False;
-		break;
-	case 6:
-		if(!lsa_io_dom_query_6("", &ctr->info.id6, ps, depth))
-			return False;
-		break;
-	case 10:
-		if(!lsa_io_dom_query_10("", &ctr->info.id10, ps, depth))
-			return False;
-		break;
-	case 11:
-		if(!lsa_io_dom_query_11("", &ctr->info.id11, ps, depth))
-			return False;
-		break;
-	case 12:
-		if(!lsa_io_dom_query_12("", &ctr->info.id12, ps, depth))
-			return False;
-		break;
-	default:
-		DEBUG(0,("invalid info_class: %d\n", ctr->info_class));
-		return False;
-		break;
-	}
-
-	return True;
-}
-
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
 static bool lsa_io_query_info_ctr(const char *desc, prs_struct *ps, int depth, LSA_INFO_CTR *ctr)
 {
 	prs_debug(ps, depth, desc, "lsa_io_query_info_ctr");
@@ -2924,70 +2869,6 @@ bool policy_handle_is_valid(const POLICY_HND *hnd)
 }
 
 /*******************************************************************
- Inits an LSA_Q_QUERY_INFO2 structure.
-********************************************************************/
-
-void init_q_query2(LSA_Q_QUERY_INFO2 *in, POLICY_HND *hnd, uint16 info_class)
-{
-	DEBUG(5, ("init_q_query2\n"));
-
-	memcpy(&in->pol, hnd, sizeof(in->pol));
-
-	in->info_class = info_class;
-}
-
-/*******************************************************************
- Reads or writes an LSA_Q_QUERY_DNSDOMINFO structure.
-********************************************************************/
-
-bool lsa_io_q_query_info2(const char *desc, LSA_Q_QUERY_INFO2 *in, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "lsa_io_q_query_info2");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
- 
-	if(!smb_io_pol_hnd("pol", &in->pol, ps, depth))
-		return False;
-	
-	if(!prs_uint16("info_class", ps, depth, &in->info_class))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes an LSA_R_QUERY_DNSDOMINFO structure.
-********************************************************************/
-
-bool lsa_io_r_query_info2(const char *desc, LSA_R_QUERY_INFO2 *out,
-			  prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "lsa_io_r_query_info2");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("dom_ptr", ps, depth, &out->dom_ptr))
-		return False;
-
-	if (out->dom_ptr) {
-
-		if(!lsa_io_query_info_ctr2("", ps, depth, &out->ctr))
-			return False;
-	}
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_ntstatus("status", ps, depth, &out->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
  Inits an LSA_Q_ENUM_ACCT_RIGHTS structure.
 ********************************************************************/
 void init_q_enum_acct_rights(LSA_Q_ENUM_ACCT_RIGHTS *in, 
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index 9f0d448..61b9d19 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -1919,7 +1919,7 @@ NTSTATUS _lsa_QuerySecurity(pipes_struct *p,
 /***************************************************************************
  ***************************************************************************/
 
-NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_INFO2 *r_u)
+ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_INFO2 *r_u)
 {
 	struct lsa_info *handle;
 	const char *nb_name;
diff --git a/source/winbindd/winbindd_cm.c b/source/winbindd/winbindd_cm.c
index 17afd1e..ea48dbd 100644
--- a/source/winbindd/winbindd_cm.c
+++ b/source/winbindd/winbindd_cm.c
@@ -1839,11 +1839,9 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
 	union dssetup_DsRoleInfo info;
 
 	const char *domain_name = NULL;
-	const char *dns_name = NULL;
-	const char *forest_name = NULL;
-	DOM_SID *dom_sid = NULL;	
+	DOM_SID *dom_sid = NULL;
+	union lsa_PolicyInformation *lsa_info = NULL;
 
-	
 	if (!connection_ok(domain)) {
 		return;
 	}
@@ -1921,34 +1919,39 @@ no_dssetup:
 	if (NT_STATUS_IS_OK(result)) {
 		/* This particular query is exactly what Win2k clients use 
 		   to determine that the DC is active directory */
-		result = rpccli_lsa_query_info_policy2(cli, mem_ctx, &pol,
-						       12, &domain_name,
-						       &dns_name, &forest_name,
-						       NULL, &dom_sid);
+		result = rpccli_lsa_QueryInfoPolicy2(cli, mem_ctx,
+						     &pol,
+						     LSA_POLICY_INFO_DNS,
+						     &lsa_info);
 	}
 
 	if (NT_STATUS_IS_OK(result)) {
 		domain->active_directory = True;
 
-		if (domain_name)
-			fstrcpy(domain->name, domain_name);
+		if (lsa_info->dns.name.string) {
+			fstrcpy(domain->name, lsa_info->dns.name.string);
+		}
 
-		if (dns_name)
-			fstrcpy(domain->alt_name, dns_name);
+		if (lsa_info->dns.dns_domain.string) {
+			fstrcpy(domain->alt_name,
+				lsa_info->dns.dns_domain.string);
+		}
 
 		/* See if we can set some domain trust flags about
 		   ourself */
 
-		if ( forest_name ) {
-			fstrcpy(domain->forest_name, forest_name);		
+		if (lsa_info->dns.dns_forest.string) {
+			fstrcpy(domain->forest_name,
+				lsa_info->dns.dns_forest.string);
 
 			if (strequal(domain->forest_name, domain->alt_name)) {
 				domain->domain_flags = NETR_TRUST_FLAG_TREEROOT;
 			}
 		}
 
-		if (dom_sid) 
-			sid_copy(&domain->sid, dom_sid);
+		if (lsa_info->dns.sid) {
+			sid_copy(&domain->sid, lsa_info->dns.sid);
+		}
 	} else {
 		domain->active_directory = False;
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list