summaryrefslogtreecommitdiff
path: root/source4/dsdb/common
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-10-01 19:04:44 -0700
committerAndrew Tridgell <tridge@samba.org>2010-10-01 21:09:51 -0700
commitee15dc96926f505ba7f01ccfcfc2959b507f2b96 (patch)
treedd3ad0a514ee469340a9e534e61bd077f8456670 /source4/dsdb/common
parent76232a40d844dc37720e07ee0f2131526a1a6942 (diff)
downloadsamba-ee15dc96926f505ba7f01ccfcfc2959b507f2b96.tar.gz
samba-ee15dc96926f505ba7f01ccfcfc2959b507f2b96.tar.bz2
samba-ee15dc96926f505ba7f01ccfcfc2959b507f2b96.zip
s4-dsdb: added dsdb_search_by_dn_guid()
this is more efficient than first searching for the DN, then doing a search. We should look at using this in lots of existing code Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/dsdb/common')
-rw-r--r--source4/dsdb/common/util.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index 3259eabc3c..7e6090124b 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -3760,6 +3760,32 @@ int dsdb_search_dn(struct ldb_context *ldb,
}
/*
+ search for attrs on one DN, by the GUID of the DN, allowing for
+ dsdb_flags controls
+ */
+int dsdb_search_by_dn_guid(struct ldb_context *ldb,
+ TALLOC_CTX *mem_ctx,
+ struct ldb_result **_res,
+ const struct GUID *guid,
+ const char * const *attrs,
+ uint32_t dsdb_flags)
+{
+ TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
+ struct ldb_dn *dn;
+ int ret;
+
+ dn = ldb_dn_new_fmt(tmp_ctx, ldb, "<GUID=%s>", GUID_string(tmp_ctx, guid));
+ if (!ldb_dn_validate(dn)) {
+ talloc_free(tmp_ctx);
+ return LDB_ERR_INVALID_DN_SYNTAX;
+ }
+
+ ret = dsdb_search_dn(ldb, mem_ctx, _res, dn, attrs, dsdb_flags);
+ talloc_free(tmp_ctx);
+ return ret;
+}
+
+/*
general search with dsdb_flags for controls
*/
int dsdb_search(struct ldb_context *ldb,