svn commit: samba r17824 - in branches/SAMBA_4_0/source: auth cldap_server dsdb/samdb dsdb/samdb/ldb_modules kdc nbt_server/dgram rpc_server/dssetup rpc_server/lsa rpc_server/netlogon rpc_server/samr

tridge at samba.org tridge at samba.org
Fri Aug 25 07:32:20 GMT 2006


Author: tridge
Date: 2006-08-25 07:32:18 +0000 (Fri, 25 Aug 2006)
New Revision: 17824

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17824

Log:

add a wrapper for the common partitions_basedn calculation

Modified:
   branches/SAMBA_4_0/source/auth/auth_sam.c
   branches/SAMBA_4_0/source/auth/sam.c
   branches/SAMBA_4_0/source/cldap_server/netlogon.c
   branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c
   branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/password_hash.c
   branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
   branches/SAMBA_4_0/source/kdc/hdb-ldb.c
   branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c
   branches/SAMBA_4_0/source/rpc_server/dssetup/dcesrv_dssetup.c
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
   branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c
   branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c


Changeset:
Modified: branches/SAMBA_4_0/source/auth/auth_sam.c
===================================================================
--- branches/SAMBA_4_0/source/auth/auth_sam.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/auth/auth_sam.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -45,7 +45,7 @@
 	struct ldb_message **msgs_tmp;
 	struct ldb_message **msgs;
 	struct ldb_message **msgs_domain_ref;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(sam_ctx, mem_ctx);
 
 	int ret;
 	int ret_domain;

Modified: branches/SAMBA_4_0/source/auth/sam.c
===================================================================
--- branches/SAMBA_4_0/source/auth/sam.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/auth/sam.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -321,7 +321,7 @@
 	NTSTATUS nt_status;
 	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
 	int ret;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(sam_ctx, mem_ctx);
 
 	if (!tmp_ctx) {
 		return NT_STATUS_NO_MEMORY;

Modified: branches/SAMBA_4_0/source/cldap_server/netlogon.c
===================================================================
--- branches/SAMBA_4_0/source/cldap_server/netlogon.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/cldap_server/netlogon.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -62,7 +62,7 @@
 	const char *site_name;
 	const char *site_name2;
 	const char *pdc_ip;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 
 	if (cldapd->samctx == NULL) {
 		cldapd->samctx = samdb_connect(cldapd, anonymous_session(cldapd));
@@ -72,6 +72,8 @@
 		}
 	}
 
+	partitions_basedn = samdb_partitions_dn(cldapd->samctx, mem_ctx);
+
 	/* the domain has an optional trailing . */
 	if (domain && domain[strlen(domain)-1] == '.') {
 		domain = talloc_strndup(mem_ctx, domain, strlen(domain)-1);

Modified: branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -577,7 +577,7 @@
 	const char * const *result_attrs;
 	struct ldb_message **result_res = NULL;
 	const struct ldb_dn *result_basedn;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(sam_ctx, mem_ctx);
 
 	const char * const _domain_attrs_1779[] = { "ncName", "dnsRoot", NULL};
 	const char * const _result_attrs_null[] = { NULL };
@@ -627,7 +627,7 @@
 				       "%s", domain_filter);
 	} else {
 		ldb_ret = gendb_search(sam_ctx, mem_ctx, partitions_basedn, &domain_res, domain_attrs,
-				       "(ncName=%s)", ldb_dn_linearize(mem_ctx, samdb_base_dn(mem_ctx)));
+				       "(ncName=%s)", ldb_dn_linearize(mem_ctx, samdb_base_dn(sam_ctx)));
 	} 
 
 	switch (ldb_ret) {

Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/password_hash.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/password_hash.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/password_hash.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -489,7 +489,7 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 	ac->dom_req->operation = LDB_SEARCH;
-	ac->dom_req->op.search.base = samdb_base_dn(ac);
+	ac->dom_req->op.search.base = ldb_auto_basedn(ac->module->ldb);
 	ac->dom_req->op.search.scope = LDB_SCOPE_SUBTREE;
 
 	filter = talloc_asprintf(ac->dom_req, "(&(objectSid=%s)(|(objectClass=domain)(objectClass=builtinDomain)))", 

Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/samdb.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -1024,38 +1024,17 @@
 	return sd;
 }
 
-const struct ldb_dn *samdb_base_dn(TALLOC_CTX *mem_ctx) 
+const struct ldb_dn *samdb_base_dn(struct ldb_context *sam_ctx) 
 {
-	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
-	int server_role = lp_server_role();
-	const char **split_realm;
-	struct ldb_dn *dn;
-	
-	if (!tmp_ctx) {
-		return NULL;
-	}
+	return ldb_auto_basedn(sam_ctx);
+}
 
-	if ((server_role == ROLE_DOMAIN_PDC)
-	    || (server_role == ROLE_DOMAIN_BDC)) {
-		int i;
-		split_realm = str_list_make(tmp_ctx, lp_realm(), ".");
-		if (!split_realm) {
-			talloc_free(tmp_ctx);
-			return NULL;
-		}
-		dn = NULL;
-		i = str_list_length(split_realm);
-		i--;
-		for (; i >= 0; i--) {
-			dn = ldb_dn_build_child(tmp_ctx, "dc", split_realm[i], dn);
-			if (!dn) {
-				talloc_free(tmp_ctx);
-				return NULL;
-			}
-		}
-		return dn;
-	}
-	return ldb_dn_string_compose(mem_ctx, NULL, "cn=%s", lp_netbios_name());
+
+const struct ldb_dn *samdb_partitions_dn(struct ldb_context *sam_ctx,
+				   TALLOC_CTX *mem_ctx)
+{
+	return ldb_dn_string_compose(mem_ctx, samdb_base_dn(sam_ctx), 
+				     "CN=Partitions,CN=Configuration");
 }
 
 

Modified: branches/SAMBA_4_0/source/kdc/hdb-ldb.c
===================================================================
--- branches/SAMBA_4_0/source/kdc/hdb-ldb.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/kdc/hdb-ldb.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -524,7 +524,7 @@
  	int ret;
 	char *cross_ref_filter;
 	struct ldb_result *cross_ref_res;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(ldb_ctx, mem_ctx);
 
 	cross_ref_filter = talloc_asprintf(mem_ctx, 
 					   "(&(&(|(&(dnsRoot=%s)(nETBIOSName=*))(nETBIOSName=%s))(objectclass=crossRef))(ncName=*))",
@@ -706,7 +706,7 @@
 	const char *realm;
 	struct ldb_message **msg = NULL;
 	struct ldb_message **realm_ref_msg = NULL;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(db->hdb_db, mem_ctx);
 	if (principal->name.name_string.len >= 2) {
 		/* 'normal server' case */
 		int ldb_ret;

Modified: branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -109,7 +109,7 @@
 	int ret;
 	const char **services = lp_server_services();
 	const char *my_ip = reply_iface->ip_address; 
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(packet, samdb_base_dn(packet), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 	if (!my_ip) {
 		DEBUG(0, ("Could not obtain own IP address for datagram socket\n"));
 		return;
@@ -126,6 +126,8 @@
 		return;
 	}
 
+	partitions_basedn = samdb_partitions_dn(samctx, samctx);
+
 	ret = gendb_search(samctx, samctx, partitions_basedn, &ref_res, ref_attrs,
 				  "(&(&(nETBIOSName=%s)(objectclass=crossRef))(ncName=*))", 
 				  name->name);

Modified: branches/SAMBA_4_0/source/rpc_server/dssetup/dcesrv_dssetup.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dssetup/dcesrv_dssetup.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/rpc_server/dssetup/dcesrv_dssetup.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -101,7 +101,7 @@
 			
 			domain		= samdb_search_string(sam_ctx, mem_ctx, NULL, "nETBIOSName", 
 							      "(&(objectclass=crossRef)(ncName=%s))", 
-							      ldb_dn_linearize(mem_ctx, samdb_base_dn(mem_ctx)));
+							      ldb_dn_linearize(mem_ctx, samdb_base_dn(sam_ctx)));
 	
 			dns_domain	= samdb_result_string(res[0], "dnsDomain", NULL);
 			forest		= samdb_result_string(res[0], "dnsDomain", NULL);

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -267,7 +267,7 @@
 				     struct lsa_policy_state **_state)
 {
 	struct lsa_policy_state *state;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 
 	state = talloc(mem_ctx, struct lsa_policy_state);
 	if (!state) {
@@ -280,6 +280,8 @@
 		return NT_STATUS_INVALID_SYSTEM_SERVICE;
 	}
 
+	partitions_basedn = samdb_partitions_dn(state->sam_ldb, mem_ctx);
+
 	state->sidmap = sidmap_open(state);
 	if (state->sidmap == NULL) {
 		return NT_STATUS_INVALID_SYSTEM_SERVICE;
@@ -287,7 +289,7 @@
 
 	/* work out the domain_dn - useful for so many calls its worth
 	   fetching here */
-	state->domain_dn = samdb_base_dn(state);
+	state->domain_dn = samdb_base_dn(state->sam_ldb);
 	if (!state->domain_dn) {
 		return NT_STATUS_NO_MEMORY;		
 	}

Modified: branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/rpc_server/netlogon/dcerpc_netlogon.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -889,7 +889,7 @@
 	struct netr_DomainInfo1 *info1;
 	int ret, ret1, ret2, i;
 	NTSTATUS status;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(sam_ctx, mem_ctx);
 
 	const char *local_domain;
 
@@ -1143,7 +1143,7 @@
 	struct ldb_message **dom_res, **ref_res;
 	const char * const dom_attrs[] = { "dnsDomain", "objectSid", "objectGUID", NULL };
 	const char * const ref_attrs[] = { "nETBIOSName", NULL };
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn = samdb_partitions_dn(sam_ctx, mem_ctx);
 
 	ZERO_STRUCT(r->out);
 

Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2006-08-25 07:08:06 UTC (rev 17823)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2006-08-25 07:32:18 UTC (rev 17824)
@@ -225,7 +225,7 @@
 	struct ldb_message **dom_msgs;
 	struct ldb_message **ref_msgs;
 	int ret;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 
 	r->out.sid = NULL;
 
@@ -237,6 +237,8 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
+	partitions_basedn = samdb_partitions_dn(c_state->sam_ctx, mem_ctx);
+
 	if (strcasecmp(r->in.domain_name->string, "BUILTIN") == 0) {
 		ret = gendb_search(c_state->sam_ctx,
 				   mem_ctx, NULL, &dom_msgs, dom_attrs,
@@ -289,7 +291,7 @@
 	const char * const ref_attrs[] = { "nETBIOSName", NULL};
 	struct ldb_message **dom_msgs;
 	struct ldb_message **ref_msgs;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 
 	*r->out.resume_handle = 0;
 	r->out.sam = NULL;
@@ -299,6 +301,8 @@
 
 	c_state = h->data;
 
+	partitions_basedn = samdb_partitions_dn(c_state->sam_ctx, mem_ctx);
+
 	count = gendb_search(c_state->sam_ctx,
 			     mem_ctx, NULL, &dom_msgs, dom_attrs,
 			     "(objectClass=domain)");
@@ -367,7 +371,7 @@
 	struct ldb_message **dom_msgs;
 	struct ldb_message **ref_msgs;
 	int ret;
-	const struct ldb_dn *partitions_basedn = ldb_dn_string_compose(mem_ctx, samdb_base_dn(mem_ctx), "CN=Partitions,CN=Configuration");
+	const struct ldb_dn *partitions_basedn;
 
 	ZERO_STRUCTP(r->out.domain_handle);
 
@@ -379,6 +383,8 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
+	partitions_basedn = samdb_partitions_dn(c_state->sam_ctx, mem_ctx);
+
 	ret = gendb_search(c_state->sam_ctx,
 			   mem_ctx, NULL, &dom_msgs, dom_attrs,
 			   "(&(objectSid=%s)(&(objectclass=domain)))",



More information about the samba-cvs mailing list