diff options
author | Amitay Isaacs <amitay@gmail.com> | 2011-10-24 17:20:46 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2011-11-02 15:26:54 +1100 |
commit | 6e800bfba708124077defab3c9379db201f4c43c (patch) | |
tree | 93fffed0ed9946dba27a085492e472804d076390 /source4/rpc_server/dnsserver/dnsserver.h | |
parent | 0d3aff732483cf1a48cb9ea6af16537fc11be547 (diff) | |
download | samba-6e800bfba708124077defab3c9379db201f4c43c.tar.gz samba-6e800bfba708124077defab3c9379db201f4c43c.tar.bz2 samba-6e800bfba708124077defab3c9379db201f4c43c.zip |
s4-dnsserver: Build a dns name tree for correct enumeration
The result of EnumRecords/EnumRecords2 RPC calls, is a list of
dns records that are one level below in the name hierarchy starting
from the search name. This patch builds a tree of names to get
the list of records one level below the search names and correctly
count the number of child records for each of those.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
Diffstat (limited to 'source4/rpc_server/dnsserver/dnsserver.h')
-rw-r--r-- | source4/rpc_server/dnsserver/dnsserver.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source4/rpc_server/dnsserver/dnsserver.h b/source4/rpc_server/dnsserver/dnsserver.h index 5fc13c8704..818dc60b62 100644 --- a/source4/rpc_server/dnsserver/dnsserver.h +++ b/source4/rpc_server/dnsserver/dnsserver.h @@ -151,6 +151,14 @@ struct dnsserver_zone { }; +struct dns_tree { + const char *name; + int level; + unsigned int num_children; + struct dns_tree **children; + void *data; +}; + /* Data structure manipulation functions from dnsdata.c */ struct IP4_ARRAY *ip4_array_copy(TALLOC_CTX *mem_ctx, struct IP4_ARRAY *ip4); @@ -169,10 +177,12 @@ void dnsp_to_dns_copy(TALLOC_CTX *mem_ctx, struct dnsp_DnssrvRpcRecord *dnsp, struct DNS_RPC_RECORD *dns); struct dnsp_DnssrvRpcRecord *dns_to_dnsp_copy(TALLOC_CTX *mem_ctx, struct DNS_RPC_RECORD *dns); +struct dns_tree *dns_build_tree(TALLOC_CTX *mem_ctx, const char *name, struct ldb_result *res); WERROR dns_fill_records_array(TALLOC_CTX *mem_ctx, struct dnsserver_zone *z, enum dns_record_type record_type, unsigned int select_flag, const char *zone_name, - struct ldb_message *msg, struct DNS_RPC_RECORDS_ARRAY *recs, + struct ldb_message *msg, int num_children, + struct DNS_RPC_RECORDS_ARRAY *recs, char ***add_names, int *add_count); |