s4-rpc: dnsserver: Correctly set rank for glue NS records
authorAmitay Isaacs <amitay@gmail.com>
Wed, 30 Jul 2014 08:53:44 +0000 (18:53 +1000)
committerStefan Metzmacher <metze@samba.org>
Thu, 21 Aug 2014 07:11:06 +0000 (09:11 +0200)
Bug: https://bugzilla.samba.org/show_bug.cgi?id=10751

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source4/rpc_server/dnsserver/dnsdb.c

index 8cdeae41f52d49164a4ac10813ec9fc44e9ad6c3..24e9e89c02291ef2d9eecf83037bbb35983c44e6 100644 (file)
@@ -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;
        }