]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
rpc:dnsserver: split off record rank setting logic
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sat, 10 Apr 2021 23:40:59 +0000 (11:40 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 29 Jun 2021 02:19:35 +0000 (02:19 +0000)
We want to do this also in update (in following commits), and we later
will want to fix the logic.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/dnsserver/dnsdb.c

index 5ac11aea27049b5664ac21df7f701e267ec12267..33e73879248dc6a9e7421829a51a7a255662847e 100644 (file)
@@ -436,6 +436,21 @@ WERROR dnsserver_db_add_empty_node(TALLOC_CTX *mem_ctx,
        return dnsserver_db_do_add_rec(mem_ctx, samdb, dn, 0, NULL);
 }
 
+static void set_record_rank(struct dnsserver_zone *z,
+                           const char *name,
+                           struct dnsp_DnssrvRpcRecord *rec)
+{
+       if (z->zoneinfo->dwZoneType == DNS_ZONE_TYPE_PRIMARY) {
+               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;
+       }
+}
+
 
 /* Add a DNS record */
 WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
@@ -462,15 +477,7 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
        }
 
        /* Set the correct rank for the record. */
-       if (z->zoneinfo->dwZoneType == DNS_ZONE_TYPE_PRIMARY) {
-               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;
-       }
+       set_record_rank(z, name, rec);
 
        serial = dnsserver_update_soa(mem_ctx, samdb, z, &werr);
        if (serial < 0) {