From 3f71c5a677f5f20b04b4cc33f60430d21f5a40c8 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Wed, 30 Jul 2014 18:53:44 +1000 Subject: [PATCH 1/3] s4-rpc: dnsserver: Correctly set rank for glue NS records Bug: https://bugzilla.samba.org/show_bug.cgi?id=10751 Signed-off-by: Amitay Isaacs Reviewed-by: Stefan Metzmacher (cherry picked from commit 2036cbd9249c84d9b46370f0e8cd6a0264c737ba) --- source4/rpc_server/dnsserver/dnsdb.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source4/rpc_server/dnsserver/dnsdb.c b/source4/rpc_server/dnsserver/dnsdb.c index 8cdeae4..24e9e89 100644 --- a/source4/rpc_server/dnsserver/dnsdb.c +++ b/source4/rpc_server/dnsserver/dnsdb.c @@ -408,10 +408,13 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx, rec = dns_to_dnsp_copy(mem_ctx, add_record); W_ERROR_HAVE_NO_MEMORY(rec); - /* Set the correct rank for the record. - * FIXME: add logic to check for glue records */ + /* Set the correct rank for the record. */ if (z->zoneinfo->dwZoneType == DNS_ZONE_TYPE_PRIMARY) { - rec->rank |= DNS_RANK_ZONE; + if (strcmp(name, "@") != 0 && rec->wType == DNS_TYPE_NS) { + rec->rank = DNS_RANK_NS_GLUE; + } else { + rec->rank |= DNS_RANK_ZONE; + } } else if (strcmp(z->name, ".") == 0) { rec->rank |= DNS_RANK_ROOT_HINT; } -- 1.9.1 From cb4377525bcc85a4b83cfb13bd9f655e84c012e8 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Wed, 30 Jul 2014 19:57:42 +1000 Subject: [PATCH 2/3] s4-rpc: dnsserver: Do not return NS_GLUE records with VIEW_GLUE_DATA filter Bug: https://bugzilla.samba.org/show_bug.cgi?id=10751 Signed-off-by: Amitay Isaacs Reviewed-by: Stefan Metzmacher Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Thu Aug 21 11:36:55 CEST 2014 on sn-devel-104 (cherry picked from commit c9169a5e987864473108d041513f1781740401ac) --- source4/rpc_server/dnsserver/dnsdata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source4/rpc_server/dnsserver/dnsdata.c b/source4/rpc_server/dnsserver/dnsdata.c index fb2547f..4866006 100644 --- a/source4/rpc_server/dnsserver/dnsdata.c +++ b/source4/rpc_server/dnsserver/dnsdata.c @@ -806,7 +806,7 @@ WERROR dns_fill_records_array(TALLOC_CTX *mem_ctx, } } if (select_flag & DNS_RPC_VIEW_GLUE_DATA) { - if (dnsp_rec.rank == DNS_RANK_NS_GLUE) { + if (dnsp_rec.rank == DNS_RANK_GLUE) { found = true; } } -- 1.9.1 From 8c10ea1090b19e7091abd283a3a1e5b2a6fd9307 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 4 Sep 2014 09:40:34 +0200 Subject: [PATCH 3/3] s4-rpc: dnsserver: return DNS_RANK_NS_GLUE recors when explicitly asked for NS records should be included in the query for sub-domains. NS records got dropped when the rank for NS records was correctly set to NS_GLUE from ZONE in commit 2036cbd9249c84d9b46370f0e8cd6a0264c737ba. samba-tool dns query 172.31.9.161 s4xdom.base @ ALL => Name=glue, Records=0, Children=0 samba-tool dns query 172.31.9.161 s4xdom.base glue ALL => Name=, Records=1, Children=0 NS: glue.dns.private. (flags=40000082, serial=21, ttl=900) Bug: https://bugzilla.samba.org/show_bug.cgi?id=10751 Signed-off-by: Stefan Metzmacher Reviewed-by: Amitay Isaacs --- source4/rpc_server/dnsserver/dnsdata.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source4/rpc_server/dnsserver/dnsdata.c b/source4/rpc_server/dnsserver/dnsdata.c index 4866006..f752490 100644 --- a/source4/rpc_server/dnsserver/dnsdata.c +++ b/source4/rpc_server/dnsserver/dnsdata.c @@ -798,6 +798,15 @@ WERROR dns_fill_records_array(TALLOC_CTX *mem_ctx, if (select_flag & DNS_RPC_VIEW_AUTHORITY_DATA) { if (dnsp_rec.rank == DNS_RANK_ZONE) { found = true; + } else if (dnsp_rec.rank == DNS_RANK_NS_GLUE) { + /* + * If branch_name is NULL, we're + * explicitly asked to also return + * DNS_RANK_NS_GLUE records + */ + if (branch_name == NULL) { + found = true; + } } } if (select_flag & DNS_RPC_VIEW_CACHE_DATA) { -- 1.9.1