diff options
author | Andrew Bartlett <abartlet@samba.org> | 2017-06-09 16:05:31 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-06-10 21:48:20 +0200 |
commit | 970fdfae6a18bf11d423a72973c0f7b589e6f92a (patch) | |
tree | b61e542a464306866c7228e3af44864c4c886f63 /source4/dns_server/dnsserver_common.c | |
parent | f5e945c810b5e453b699d4e796cfb6790c442a17 (diff) | |
download | samba-970fdfae6a18bf11d423a72973c0f7b589e6f92a.tar.gz |
pydsdb_dns: Allow the partition DN to be specified into py_dsdb_dns_lookup
This allows lookups to be confined to one partition, which in turn avoids issues
when running this against MS Windows, which does not match Samba behaviour
for dns_common_zones()
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'source4/dns_server/dnsserver_common.c')
-rw-r--r-- | source4/dns_server/dnsserver_common.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c index 7aac7e22855..fbfa5fa4eae 100644 --- a/source4/dns_server/dnsserver_common.c +++ b/source4/dns_server/dnsserver_common.c @@ -560,6 +560,7 @@ static int dns_common_sort_zones(struct ldb_message **m1, struct ldb_message **m NTSTATUS dns_common_zones(struct ldb_context *samdb, TALLOC_CTX *mem_ctx, + struct ldb_dn *base_dn, struct dns_server_zone **zones_ret) { int ret; @@ -569,9 +570,19 @@ NTSTATUS dns_common_zones(struct ldb_context *samdb, struct dns_server_zone *new_list = NULL; TALLOC_CTX *frame = talloc_stackframe(); - /* TODO: this search does not work against windows */ - ret = dsdb_search(samdb, frame, &res, NULL, LDB_SCOPE_SUBTREE, - attrs, DSDB_SEARCH_SEARCH_ALL_PARTITIONS, "(objectClass=dnsZone)"); + if (base_dn) { + /* This search will work against windows */ + ret = dsdb_search(samdb, frame, &res, + base_dn, LDB_SCOPE_SUBTREE, + attrs, 0, "(objectClass=dnsZone)"); + } else { + /* TODO: this search does not work against windows */ + ret = dsdb_search(samdb, frame, &res, NULL, + LDB_SCOPE_SUBTREE, + attrs, + DSDB_SEARCH_SEARCH_ALL_PARTITIONS, + "(objectClass=dnsZone)"); + } if (ret != LDB_SUCCESS) { TALLOC_FREE(frame); return NT_STATUS_INTERNAL_DB_CORRUPTION; |