diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-01-03 04:40:24 -0600 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-01-03 12:33:35 -0600 |
commit | 636c9a7c719ef24205c40b8e2018d83040520490 (patch) | |
tree | 0ec0ac52a5c12b9b865b47d10f60cf1ea7c6f915 /source4/dsdb | |
parent | bcdc491058d8b9ca890a9bdc0635d839d41e8fd8 (diff) | |
download | samba-636c9a7c719ef24205c40b8e2018d83040520490.tar.gz samba-636c9a7c719ef24205c40b8e2018d83040520490.tar.bz2 samba-636c9a7c719ef24205c40b8e2018d83040520490.zip |
r26648: Move detection of global catalog captability to a central function, so
this can be shared with the CLDAP server (for the netlogon reply).
Andrew Bartlett
(This used to be commit 592c10ae11c94007e38404a7edea9fd8471f1907)
Diffstat (limited to 'source4/dsdb')
-rw-r--r-- | source4/dsdb/common/util.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index 345f13fcbc..17a20199d5 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -1367,6 +1367,42 @@ failed: return false; } +/* + work out if we are a Global Catalog server for the domain of the current open ldb +*/ +bool samdb_is_gc(struct ldb_context *ldb) +{ + const char *attrs[] = { "options", NULL }; + int ret, options; + struct ldb_result *res; + TALLOC_CTX *tmp_ctx; + + tmp_ctx = talloc_new(ldb); + if (tmp_ctx == NULL) { + DEBUG(1, ("talloc_new failed in samdb_is_pdc")); + return false; + } + + /* Query cn=ntds settings,.... */ + ret = ldb_search(ldb, samdb_ntds_settings_dn(ldb), LDB_SCOPE_BASE, NULL, attrs, &res); + if (ret) { + return false; + } + if (res->count != 1) { + talloc_free(res); + return false; + } + + options = ldb_msg_find_attr_as_int(res->msgs[0], "options", 0); + talloc_free(res); + talloc_free(ldb); + + /* if options attribute has the 0x00000001 flag set, then enable the global catlog */ + if (options & 0x000000001) { + return true; + } + return false; +} /* Find a domain object in the parents of a particular DN. */ int samdb_search_for_parent_domain(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn *dn, |