[SCM] Samba Shared Repository - branch master updated

Kamen Mazdrashki kamenim at samba.org
Wed Jul 7 18:54:01 MDT 2010


The branch, master has been updated
       via  609b865... s4-dsdb/util: Reorder DSDB_FLAG_* checks
       via  0c4bbb7... s4-dsdb: Implement module switching in dsdb_module_search_dn()
       via  62a0f11... s4-source4/dsdb/samdb/ldb_modules/acl.c Use DSDB_FLAG_NEXT_MODULE flag
       via  02f0c6d... s4-source4/dsdb/samdb/ldb_modules/linked_attributes.c Use DSDB_FLAG_NEXT_MODULE flag
       via  0d2116a... s4-source4/dsdb/samdb/ldb_modules/naming_fsmo.c Use DSDB_FLAG_NEXT_MODULE flag
       via  b18ab82... s4-source4/dsdb/samdb/ldb_modules/operational.c Use DSDB_FLAG_NEXT_MODULE flag
       via  7694b19... s4-source4/dsdb/samdb/ldb_modules/partition_init.c Use DSDB_FLAG_NEXT_MODULE flag
       via  b627159... s4-source4/dsdb/samdb/ldb_modules/pdc_fsmo.c Use DSDB_FLAG_NEXT_MODULE flag
       via  2ee1437... s4-source4/dsdb/samdb/ldb_modules/repl_meta_data.c Use DSDB_FLAG_NEXT_MODULE flag
       via  d7bcac5... s4-source4/dsdb/samdb/ldb_modules/ridalloc.c Use DSDB_FLAG_NEXT_MODULE flag
       via  dc72073... s4-source4/dsdb/samdb/ldb_modules/samba_dsdb.c Use DSDB_FLAG_NEXT_MODULE flag
       via  8c7a6a8... s4-source4/dsdb/samdb/ldb_modules/schema_load.c Use DSDB_FLAG_NEXT_MODULE flag
       via  64c31b7... s4-source4/dsdb/samdb/ldb_modules/util.c Use DSDB_FLAG_NEXT_MODULE flag
      from  76a084f... s3-winbindd: Fix child logfile handling which broke with c67cff0372.

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


- Log -----------------------------------------------------------------
commit 609b8656910eccbb409b58050c306798be22a078
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 04:06:23 2010 +0300

    s4-dsdb/util: Reorder DSDB_FLAG_* checks
    
    On good thing about having more clear function interfaces
    (and forcing callers to specify clearly what they want)
    is that now I can execute following search:
    git grep DSDB_FLAG_NEXT_MODULE | wc -l
    
    This showed that DSDB_FLAG_NEXT_MODULE flag is about 6 times
    more frequently used than DSDB_FLAG_OWN_MODULE.
    So this should reduce branch prediction by six times
    in this part of the code, right :)

commit 0c4bbb7106cc2d49052eb85f995dc991b578d885
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:31:17 2010 +0300

    s4-dsdb: Implement module switching in dsdb_module_search_dn()
    
    This allows caller to choose from where to start DN search

commit 62a0f11dcbc0dbc7dbb78442d933c0fccee2282b
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:26:03 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/acl.c Use DSDB_FLAG_NEXT_MODULE flag

commit 02f0c6d1ebaee211e1749c14bb351c1eaebf3948
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:25:41 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/linked_attributes.c Use DSDB_FLAG_NEXT_MODULE flag

commit 0d2116a42396546eb0de11cac6794d257e5a224e
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:25:28 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/naming_fsmo.c Use DSDB_FLAG_NEXT_MODULE flag

commit b18ab826043c16adf5aafdb89e4a57be90ff8acf
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:25:11 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/operational.c Use DSDB_FLAG_NEXT_MODULE flag

commit 7694b1964f0e51c5f312ef16b9f4d07d0c273bb2
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:24:59 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/partition_init.c Use DSDB_FLAG_NEXT_MODULE flag

commit b62715964a6060c002f0d6ae4ef42d8e296fc582
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:24:15 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/pdc_fsmo.c Use DSDB_FLAG_NEXT_MODULE flag

commit 2ee14378c3b9e46a71b50a37a18ae0bb2705f131
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:23:58 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/repl_meta_data.c Use DSDB_FLAG_NEXT_MODULE flag

commit d7bcac5a9f39a325d984269f7e8651870dcb82ab
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:23:43 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/ridalloc.c Use DSDB_FLAG_NEXT_MODULE flag

commit dc720739ab8d966c6d7d5064281740b6b35b77bf
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:23:21 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/samba_dsdb.c Use DSDB_FLAG_NEXT_MODULE flag

commit 8c7a6a8dc77fa239aca2283583d3fc858cfb8505
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:22:28 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/schema_load.c Use DSDB_FLAG_NEXT_MODULE flag

commit 64c31b7e0ae2085658ad8f5df7791b0343239276
Author: Kamen Mazdrashki <kamenim at samba.org>
Date:   Tue Jul 6 03:22:09 2010 +0300

    s4-source4/dsdb/samdb/ldb_modules/util.c Use DSDB_FLAG_NEXT_MODULE flag

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

Summary of changes:
 source4/dsdb/samdb/ldb_modules/acl.c               |   17 ++++--
 source4/dsdb/samdb/ldb_modules/linked_attributes.c |    5 +-
 source4/dsdb/samdb/ldb_modules/naming_fsmo.c       |    3 +-
 source4/dsdb/samdb/ldb_modules/operational.c       |   10 ++-
 source4/dsdb/samdb/ldb_modules/partition_init.c    |    9 ++-
 source4/dsdb/samdb/ldb_modules/pdc_fsmo.c          |    3 +-
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c    |   10 ++-
 source4/dsdb/samdb/ldb_modules/ridalloc.c          |    9 ++-
 source4/dsdb/samdb/ldb_modules/samba_dsdb.c        |    6 +-
 source4/dsdb/samdb/ldb_modules/schema_load.c       |    3 +-
 source4/dsdb/samdb/ldb_modules/util.c              |   67 +++++++++++--------
 11 files changed, 91 insertions(+), 51 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c
index 1d5e805..2b0b19c 100644
--- a/source4/dsdb/samdb/ldb_modules/acl.c
+++ b/source4/dsdb/samdb/ldb_modules/acl.c
@@ -108,7 +108,9 @@ int dsdb_module_check_access_on_dn(struct ldb_module *module,
 		return ldb_operr(ldb);
 	}
 	ret = dsdb_module_search_dn(module, mem_ctx, &acl_res, dn,
-				    acl_attrs, DSDB_SEARCH_SHOW_DELETED);
+				    acl_attrs,
+				    DSDB_FLAG_NEXT_MODULE |
+				    DSDB_SEARCH_SHOW_DELETED);
 	if (ret != LDB_SUCCESS) {
 		DEBUG(10,("access_check: failed to find object %s\n", ldb_dn_get_linearized(dn)));
 		return ret;
@@ -158,7 +160,8 @@ static int acl_module_init(struct ldb_module *module)
 
 	ret = dsdb_module_search_dn(module, mem_ctx, &res,
 				    ldb_dn_new(mem_ctx, ldb, "@KLUDGEACL"),
-				    attrs, 0);
+				    attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		goto done;
 	}
@@ -849,7 +852,8 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req)
 		return ldb_next_request(module, req);
 	}
 	ret = dsdb_module_search_dn(module, tmp_ctx, &acl_res, req->op.mod.message->dn,
-				    acl_attrs, 0);
+				    acl_attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 
 	if (ret != LDB_SUCCESS) {
 		goto fail;
@@ -1080,7 +1084,9 @@ static int acl_rename(struct ldb_module *module, struct ldb_request *req)
 	ldb = ldb_module_get_ctx(module);
 
 	ret = dsdb_module_search_dn(module, req, &acl_res, req->op.rename.olddn,
-				    acl_attrs, DSDB_SEARCH_SHOW_DELETED);
+				    acl_attrs,
+				    DSDB_FLAG_NEXT_MODULE |
+				    DSDB_SEARCH_SHOW_DELETED);
 	/* we sould be able to find the parent */
 	if (ret != LDB_SUCCESS) {
 		DEBUG(10,("acl: failed to find object %s\n",
@@ -1230,7 +1236,8 @@ static int acl_search_callback(struct ldb_request *req, struct ldb_reply *ares)
 		    || ac->allowedAttributesEffective
 		    || ac->sDRightsEffective) {
 			ret = dsdb_module_search_dn(ac->module, ac, &acl_res, ares->message->dn, 
-						    acl_attrs, 0);
+						    acl_attrs,
+						    DSDB_FLAG_NEXT_MODULE);
 			if (ret != LDB_SUCCESS) {
 				return ldb_module_done(ac->req, NULL, NULL, ret);
 			}
diff --git a/source4/dsdb/samdb/ldb_modules/linked_attributes.c b/source4/dsdb/samdb/ldb_modules/linked_attributes.c
index 67ae236..29f9d0d 100644
--- a/source4/dsdb/samdb/ldb_modules/linked_attributes.c
+++ b/source4/dsdb/samdb/ldb_modules/linked_attributes.c
@@ -620,6 +620,7 @@ static int linked_attributes_fix_links(struct ldb_module *module,
 
 		ret = dsdb_module_search_dn(module, tmp_ctx, &res, dsdb_dn->dn,
 					    attrs,
+					    DSDB_FLAG_NEXT_MODULE |
 					    DSDB_SEARCH_SHOW_DELETED |
 					    DSDB_SEARCH_SHOW_DN_IN_STORAGE_FORMAT |
 					    DSDB_SEARCH_REVEAL_INTERNALS);
@@ -712,7 +713,9 @@ static int linked_attributes_rename(struct ldb_module *module, struct ldb_reques
 	   - modify the target linked attributes with the new DN
 	*/
 	ret = dsdb_module_search_dn(module, req, &res, req->op.rename.olddn,
-				    NULL, DSDB_SEARCH_SHOW_DELETED);
+				    NULL,
+				    DSDB_FLAG_NEXT_MODULE |
+				    DSDB_SEARCH_SHOW_DELETED);
 	if (ret != LDB_SUCCESS) {
 		return ret;
 	}
diff --git a/source4/dsdb/samdb/ldb_modules/naming_fsmo.c b/source4/dsdb/samdb/ldb_modules/naming_fsmo.c
index 5023657..3f4c892 100644
--- a/source4/dsdb/samdb/ldb_modules/naming_fsmo.c
+++ b/source4/dsdb/samdb/ldb_modules/naming_fsmo.c
@@ -66,7 +66,8 @@ static int naming_fsmo_init(struct ldb_module *module)
 
 	ret = dsdb_module_search_dn(module, mem_ctx, &naming_res,
 				    naming_dn,
-				    naming_attrs, 0);
+				    naming_attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		ldb_debug(ldb, LDB_DEBUG_WARNING,
 			  "naming_fsmo_init: no partitions dn present: (skip loading of naming contexts details)\n");
diff --git a/source4/dsdb/samdb/ldb_modules/operational.c b/source4/dsdb/samdb/ldb_modules/operational.c
index 03502d3..c1da400 100644
--- a/source4/dsdb/samdb/ldb_modules/operational.c
+++ b/source4/dsdb/samdb/ldb_modules/operational.c
@@ -212,7 +212,9 @@ static int construct_parent_guid(struct ldb_module *module,
 		return LDB_SUCCESS;
 	}
 
-	ret = dsdb_module_search_dn(module, msg, &res, parent_dn, attrs, DSDB_SEARCH_SHOW_DELETED);
+	ret = dsdb_module_search_dn(module, msg, &res, parent_dn, attrs,
+	                            DSDB_FLAG_NEXT_MODULE |
+	                            DSDB_SEARCH_SHOW_DELETED);
 	talloc_free(parent_dn);
 
 	/* if there is no parent for this object, then return */
@@ -323,7 +325,8 @@ static int construct_msds_isrodc_with_server_dn(struct ldb_module *module,
 		return ldb_operr(ldb_module_get_ctx(module));
 	}
 
-	ret = dsdb_module_search_dn(module, msg, &res, server_dn, attr_obj_cat, 0);
+	ret = dsdb_module_search_dn(module, msg, &res, server_dn, attr_obj_cat,
+	                            DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		DEBUG(4,(__location__ ": Can't get objectCategory for %s \n",
 					 ldb_dn_get_linearized(server_dn)));
@@ -350,7 +353,8 @@ static int construct_msds_isrodc_with_computer_dn(struct ldb_module *module,
 	int ret;
 	struct ldb_dn *server_dn;
 
-	ret = dsdb_module_search_dn(module, msg, &res, msg->dn, attr, 0);
+	ret = dsdb_module_search_dn(module, msg, &res, msg->dn, attr,
+	                            DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		DEBUG(4,(__location__ ": Can't get serverReferenceBL for %s \n",
 			 ldb_dn_get_linearized(msg->dn)));
diff --git a/source4/dsdb/samdb/ldb_modules/partition_init.c b/source4/dsdb/samdb/ldb_modules/partition_init.c
index 99d2f1d..87c2543 100644
--- a/source4/dsdb/samdb/ldb_modules/partition_init.c
+++ b/source4/dsdb/samdb/ldb_modules/partition_init.c
@@ -136,7 +136,8 @@ static int partition_reload_metadata(struct ldb_module *module, struct partition
 	/* perform search for @PARTITION, looking for module, replicateEntries and ldapBackend */
 	ret = dsdb_module_search_dn(module, mem_ctx, &res, 
 				    ldb_dn_new(mem_ctx, ldb, DSDB_PARTITION_DN),
-				    attrs, 0);
+				    attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		return ret;
 	}
@@ -499,7 +500,8 @@ int partition_reload_if_required(struct ldb_module *module,
 
 		/* Get the 'correct' case of the partition DNs from the database */
 		ret = dsdb_module_search_dn(partition->module, data, &dn_res, 
-					    dn, no_attrs, 0);
+					    dn, no_attrs,
+					    DSDB_FLAG_NEXT_MODULE);
 		if (ret == LDB_SUCCESS) {
 			talloc_free(partition->ctrl->dn);
 			partition->ctrl->dn = talloc_steal(partition->ctrl, dn_res->msgs[0]->dn);
@@ -540,7 +542,8 @@ static int new_partition_set_replicated_metadata(struct ldb_context *ldb,
 		struct ldb_request *add_req;
 		ret = dsdb_module_search_dn(module, last_req, &replicate_res, 
 					    data->replicate[i],
-					    NULL, 0);
+					    NULL,
+					    DSDB_FLAG_NEXT_MODULE);
 		if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 			continue;
 		}
diff --git a/source4/dsdb/samdb/ldb_modules/pdc_fsmo.c b/source4/dsdb/samdb/ldb_modules/pdc_fsmo.c
index 2d45ae2..9bf49da 100644
--- a/source4/dsdb/samdb/ldb_modules/pdc_fsmo.c
+++ b/source4/dsdb/samdb/ldb_modules/pdc_fsmo.c
@@ -65,7 +65,8 @@ static int pdc_fsmo_init(struct ldb_module *module)
 
 	ret = dsdb_module_search_dn(module, mem_ctx, &pdc_res,
 				    pdc_dn, 
-				    pdc_attrs, 0);
+				    pdc_attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		ldb_debug(ldb, LDB_DEBUG_WARNING,
 			  "pdc_fsmo_init: no domain object present: (skip loading of domain details)\n");
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index 8668b5e..90af17f 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -1117,7 +1117,8 @@ static int replmd_update_rpmd(struct ldb_module *module,
 	 * replmd_update_rpmd_element()
 	 */
 	ret = dsdb_module_search_dn(module, msg, &res, msg->dn, attrs,
-				    DSDB_SEARCH_SHOW_DELETED |
+	                            DSDB_FLAG_NEXT_MODULE |
+	                            DSDB_SEARCH_SHOW_DELETED |
 				    DSDB_SEARCH_SHOW_EXTENDED_DN |
 				    DSDB_SEARCH_SHOW_DN_IN_STORAGE_FORMAT |
 				    DSDB_SEARCH_REVEAL_INTERNALS);
@@ -1970,7 +1971,8 @@ static int replmd_modify_handle_linked_attribs(struct ldb_module *module,
 	}
 
 	ret = dsdb_module_search_dn(module, msg, &res, msg->dn, NULL,
-				    DSDB_SEARCH_SHOW_DELETED |
+	                            DSDB_FLAG_NEXT_MODULE |
+	                            DSDB_SEARCH_SHOW_DELETED |
 				    DSDB_SEARCH_REVEAL_INTERNALS |
 				    DSDB_SEARCH_SHOW_DN_IN_STORAGE_FORMAT);
 	if (ret != LDB_SUCCESS) {
@@ -2407,7 +2409,8 @@ static int replmd_delete(struct ldb_module *module, struct ldb_request *req)
 	/* we need the complete msg off disk, so we can work out which
 	   attributes need to be removed */
 	ret = dsdb_module_search_dn(module, tmp_ctx, &res, old_dn, NULL,
-				    DSDB_SEARCH_SHOW_DELETED |
+	                            DSDB_FLAG_NEXT_MODULE |
+	                            DSDB_SEARCH_SHOW_DELETED |
 				    DSDB_SEARCH_REVEAL_INTERNALS |
 				    DSDB_SEARCH_SHOW_DN_IN_STORAGE_FORMAT);
 	if (ret != LDB_SUCCESS) {
@@ -2527,6 +2530,7 @@ static int replmd_delete(struct ldb_module *module, struct ldb_request *req)
 	/* we need the storage form of the parent GUID */
 	ret = dsdb_module_search_dn(module, tmp_ctx, &parent_res,
 				    ldb_dn_get_parent(tmp_ctx, old_dn), NULL,
+				    DSDB_FLAG_NEXT_MODULE |
 				    DSDB_SEARCH_SHOW_DN_IN_STORAGE_FORMAT |
 				    DSDB_SEARCH_REVEAL_INTERNALS|
 				    DSDB_SEARCH_SHOW_DELETED);
diff --git a/source4/dsdb/samdb/ldb_modules/ridalloc.c b/source4/dsdb/samdb/ldb_modules/ridalloc.c
index 55636d1..91d48ba 100644
--- a/source4/dsdb/samdb/ldb_modules/ridalloc.c
+++ b/source4/dsdb/samdb/ldb_modules/ridalloc.c
@@ -107,7 +107,8 @@ static int ridalloc_rid_manager_allocate(struct ldb_module *module, struct ldb_d
 	struct ldb_context *ldb = ldb_module_get_ctx(module);
 	const unsigned alloc_size = 500;
 
-	ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_manager_dn, attrs, 0);
+	ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_manager_dn,
+	                            attrs, DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		ldb_asprintf_errstring(ldb, "Failed to find rIDAvailablePool in %s - %s",
 				       ldb_dn_get_linearized(rid_manager_dn), ldb_errstring(ldb));
@@ -449,7 +450,8 @@ int ridalloc_allocate_rid(struct ldb_module *module, uint32_t *rid)
 		return ret;
 	}
 
-	ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_set_dn, attrs, 0);
+	ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_set_dn,
+	                            attrs, DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		ldb_asprintf_errstring(ldb, __location__ ": No RID Set %s",
 				       ldb_dn_get_linearized(rid_set_dn));
@@ -623,7 +625,8 @@ int ridalloc_allocate_rid_pool_fsmo(struct ldb_module *module, struct dsdb_fsmo_
 		struct ldb_result *res;
 		uint64_t alloc_pool;
 
-		ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_set_dn, attrs, 0);
+		ret = dsdb_module_search_dn(module, tmp_ctx, &res, rid_set_dn,
+		                            attrs, DSDB_FLAG_NEXT_MODULE);
 		if (ret != LDB_SUCCESS) {
 			ldb_asprintf_errstring(ldb, __location__ ": No RID Set %s",
 					       ldb_dn_get_linearized(rid_set_dn));
diff --git a/source4/dsdb/samdb/ldb_modules/samba_dsdb.c b/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
index 09990b0..392e215 100644
--- a/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
+++ b/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
@@ -58,7 +58,8 @@ static int read_at_rootdse_record(struct ldb_context *ldb, struct ldb_module *mo
 		return ldb_oom(ldb);
 	}
 
-	ret = dsdb_module_search_dn(module, tmp_ctx, &rootdse_res, rootdse_dn, rootdse_attrs, 0);
+	ret = dsdb_module_search_dn(module, tmp_ctx, &rootdse_res, rootdse_dn,
+	                            rootdse_attrs, DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		talloc_free(tmp_ctx);
 		return ret;
@@ -233,7 +234,8 @@ static int samba_dsdb_init(struct ldb_module *module)
 		}						\
 	} while (0)
 
-	ret = dsdb_module_search_dn(module, tmp_ctx, &res, samba_dsdb_dn, samba_dsdb_attrs, 0);
+	ret = dsdb_module_search_dn(module, tmp_ctx, &res, samba_dsdb_dn,
+	                            samba_dsdb_attrs, DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		backendType = "ldb";
 		serverRole = "domain controller";
diff --git a/source4/dsdb/samdb/ldb_modules/schema_load.c b/source4/dsdb/samdb/ldb_modules/schema_load.c
index dc3b060..1542018 100644
--- a/source4/dsdb/samdb/ldb_modules/schema_load.c
+++ b/source4/dsdb/samdb/ldb_modules/schema_load.c
@@ -172,7 +172,8 @@ static int dsdb_schema_from_db(struct ldb_module *module, struct ldb_dn *schema_
 	 * setup the prefix mappings and schema info
 	 */
 	ret = dsdb_module_search_dn(module, tmp_ctx, &schema_res,
-				    schema_dn, schema_attrs, 0);
+				    schema_dn, schema_attrs,
+				    DSDB_FLAG_NEXT_MODULE);
 	if (ret == LDB_ERR_NO_SUCH_OBJECT) {
 		ldb_reset_err_string(ldb);
 		ldb_debug(ldb, LDB_DEBUG_WARNING,
diff --git a/source4/dsdb/samdb/ldb_modules/util.c b/source4/dsdb/samdb/ldb_modules/util.c
index 639b0df..bf260f9 100644
--- a/source4/dsdb/samdb/ldb_modules/util.c
+++ b/source4/dsdb/samdb/ldb_modules/util.c
@@ -71,7 +71,16 @@ int dsdb_module_search_dn(struct ldb_module *module,
 		return ret;
 	}
 
-	ret = ldb_next_request(module, req);
+	/* Run the new request */
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, req);
+	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
+		ret = ldb_request(ldb_module_get_ctx(module), req);
+	} else {
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->modify(module, req);
+	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(req->handle, LDB_WAIT_ALL);
 	}
@@ -153,14 +162,14 @@ int dsdb_module_search(struct ldb_module *module,
 		return ret;
 	}
 
-	if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
-		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
-		ret = ops->search(module, req);
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, req);
 	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
 		ret = ldb_request(ldb_module_get_ctx(module), req);
 	} else {
-		SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
-		ret = ldb_next_request(module, req);
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->search(module, req);
 	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(req->handle, LDB_WAIT_ALL);
@@ -225,7 +234,8 @@ int dsdb_module_guid_by_dn(struct ldb_module *module, struct ldb_dn *dn, struct
 	NTSTATUS status;
 
 	ret = dsdb_module_search_dn(module, tmp_ctx, &res, dn, attrs,
-				    DSDB_SEARCH_SHOW_DELETED|
+	                            DSDB_FLAG_NEXT_MODULE |
+	                            DSDB_SEARCH_SHOW_DELETED |
 				    DSDB_SEARCH_SHOW_EXTENDED_DN);
 	if (ret != LDB_SUCCESS) {
 		ldb_asprintf_errstring(ldb_module_get_ctx(module), "Failed to find GUID for %s",
@@ -282,14 +292,14 @@ int dsdb_module_modify(struct ldb_module *module,
 	}
 
 	/* Run the new request */
-	if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
-		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
-		ret = ops->modify(module, mod_req);
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, mod_req);
 	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
 		ret = ldb_request(ldb_module_get_ctx(module), mod_req);
 	} else {
-		SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
-		ret = ldb_next_request(module, mod_req);
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->modify(module, mod_req);
 	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(mod_req->handle, LDB_WAIT_ALL);
@@ -340,14 +350,14 @@ int dsdb_module_rename(struct ldb_module *module,
 	}
 
 	/* Run the new request */
-	if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
-		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
-		ret = ops->rename(module, req);
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, req);
 	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
 		ret = ldb_request(ldb_module_get_ctx(module), req);
 	} else {
-		SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
-		ret = ldb_next_request(module, req);
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->rename(module, req);
 	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(req->handle, LDB_WAIT_ALL);
@@ -395,14 +405,14 @@ int dsdb_module_add(struct ldb_module *module,
 	}
 
 	/* Run the new request */
-	if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
-		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
-		ret = ops->add(module, req);
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, req);
 	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
 		ret = ldb_request(ldb_module_get_ctx(module), req);
 	} else {
-		SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
-		ret = ldb_next_request(module, req);
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->add(module, req);
 	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(req->handle, LDB_WAIT_ALL);
@@ -450,14 +460,14 @@ int dsdb_module_del(struct ldb_module *module,
 	}
 
 	/* Run the new request */
-	if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
-		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
-		ret = ops->del(module, req);
+	if (dsdb_flags & DSDB_FLAG_NEXT_MODULE) {
+		ret = ldb_next_request(module, req);
 	} else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
 		ret = ldb_request(ldb_module_get_ctx(module), req);
 	} else {
-		SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
-		ret = ldb_next_request(module, req);
+		const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+		SMB_ASSERT(dsdb_flags & DSDB_FLAG_OWN_MODULE);
+		ret = ops->del(module, req);
 	}
 	if (ret == LDB_SUCCESS) {
 		ret = ldb_wait(req->handle, LDB_WAIT_ALL);
@@ -596,7 +606,8 @@ int dsdb_module_reference_dn(struct ldb_module *module, TALLOC_CTX *mem_ctx, str
 	attrs[0] = attribute;
 	attrs[1] = NULL;
 
-	ret = dsdb_module_search_dn(module, mem_ctx, &res, base, attrs, 0);
+	ret = dsdb_module_search_dn(module, mem_ctx, &res, base, attrs,
+	                            DSDB_FLAG_NEXT_MODULE);
 	if (ret != LDB_SUCCESS) {
 		return ret;
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list