dns: merge dns_records_match and dns_record_match
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sat, 29 May 2021 09:25:29 +0000 (21:25 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 11 Jun 2021 08:38:34 +0000 (08:38 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/dns_server/dlz_bind9.c
source4/dns_server/dns_update.c
source4/dns_server/dnsserver_common.c
source4/dns_server/dnsserver_common.h
source4/rpc_server/dnsserver/dnsdata.c

index dd514e8181ac88dd1a056f34439d50f269a858de..78f69a4d635faadd02885d1dad86af00edd72967 100644 (file)
@@ -1755,7 +1755,7 @@ static bool b9_record_match(struct dnsp_DnssrvRpcRecord *rec1,
                return true;
        }
 
-       return dns_records_match(rec1, rec2);
+       return dns_record_match(rec1, rec2);
 }
 
 /*
index d1e7825bf07c5f0c2aad3e5fde52353c4c51f722..10dfb1160d6f24a6acfe3d6cc760e9f0779bc358 100644 (file)
@@ -186,7 +186,7 @@ static WERROR check_one_prerequisite(struct dns_server *dns,
        W_ERROR_NOT_OK_RETURN(werror);
 
        for (i = 0; i < acount; i++) {
-               if (dns_records_match(rec, &ans[i])) {
+               if (dns_record_match(rec, &ans[i])) {
                        found = true;
                        break;
                }
@@ -545,7 +545,7 @@ static WERROR handle_one_update(struct dns_server *dns,
                W_ERROR_NOT_OK_RETURN(werror);
 
                for (i = first; i < rcount; i++) {
-                       if (!dns_records_match(&recs[i], &recs[rcount])) {
+                       if (!dns_record_match(&recs[i], &recs[rcount])) {
                                continue;
                        }
 
@@ -632,7 +632,7 @@ static WERROR handle_one_update(struct dns_server *dns,
                        W_ERROR_NOT_OK_RETURN(werror);
 
                        for (i = first; i < rcount; i++) {
-                               if (dns_records_match(ns_rec, &recs[i])) {
+                               if (dns_record_match(ns_rec, &recs[i])) {
                                        found = true;
                                        break;
                                }
@@ -650,7 +650,7 @@ static WERROR handle_one_update(struct dns_server *dns,
                W_ERROR_NOT_OK_RETURN(werror);
 
                for (i = first; i < rcount; i++) {
-                       if (dns_records_match(del_rec, &recs[i])) {
+                       if (dns_record_match(del_rec, &recs[i])) {
                                recs[i] = (struct dnsp_DnssrvRpcRecord) {
                                        .wType = DNS_TYPE_TOMBSTONE,
                                };
index 855323035fbadd2216060202b778e0d725948cbf..02f958b3c082779978d796960c1acfb31480bc9e 100644 (file)
@@ -1273,8 +1273,8 @@ WERROR dns_common_name2dn(struct ldb_context *samdb,
  */
 
 
-bool dns_records_match(struct dnsp_DnssrvRpcRecord *rec1,
-                      struct dnsp_DnssrvRpcRecord *rec2)
+bool dns_record_match(struct dnsp_DnssrvRpcRecord *rec1,
+                     struct dnsp_DnssrvRpcRecord *rec2)
 {
        int i;
        struct in6_addr rec1_in_addr6;
index 4f451725508522ab08be76298cd9d9f50fd20d56..c3ba369e3bf189e9d62120516c4356850baf079e 100644 (file)
@@ -78,8 +78,8 @@ WERROR dns_common_name2dn(struct ldb_context *samdb,
                          struct ldb_dn **_dn);
 bool dns_name_equal(const char *name1, const char *name2);
 
-bool dns_records_match(struct dnsp_DnssrvRpcRecord *rec1,
-                      struct dnsp_DnssrvRpcRecord *rec2);
+bool dns_record_match(struct dnsp_DnssrvRpcRecord *rec1,
+                     struct dnsp_DnssrvRpcRecord *rec2);
 
 /*
  * For this routine, base_dn is generally NULL.  The exception comes
index c3787bc9dfe984b556051ccbdf1d3f37a54e5cd9..002d9e622cc3498964a4806d9189413d72c5c3de 100644 (file)
@@ -1119,69 +1119,3 @@ int dns_name_compare(struct ldb_message * const *m1, struct ldb_message * const
 
        return strcasecmp(ptr1, ptr2);
 }
-
-bool dns_record_match(struct dnsp_DnssrvRpcRecord *rec1, struct dnsp_DnssrvRpcRecord *rec2)
-{
-       bool status;
-       int i;
-
-       if (rec1->wType != rec2->wType) {
-               return false;
-       }
-
-       switch(rec1->wType) {
-       case DNS_TYPE_TOMBSTONE:
-               return true;
-
-       case DNS_TYPE_A:
-               return strcmp(rec1->data.ipv4, rec2->data.ipv4) == 0;
-
-       case DNS_TYPE_NS:
-               return dns_name_equal(rec1->data.ns, rec2->data.ns);
-
-       case DNS_TYPE_CNAME:
-               return dns_name_equal(rec1->data.cname, rec2->data.cname);
-
-       case DNS_TYPE_SOA:
-               return dns_name_equal(rec1->data.soa.mname, rec2->data.soa.mname) &&
-                       dns_name_equal(rec1->data.soa.rname, rec2->data.soa.rname) &&
-                       rec1->data.soa.serial == rec2->data.soa.serial &&
-                       rec1->data.soa.refresh == rec2->data.soa.refresh &&
-                       rec1->data.soa.retry == rec2->data.soa.retry &&
-                       rec1->data.soa.expire == rec2->data.soa.expire &&
-                       rec1->data.soa.minimum == rec2->data.soa.minimum;
-
-       case DNS_TYPE_PTR:
-               return dns_name_equal(rec1->data.ptr, rec2->data.ptr);
-
-       case DNS_TYPE_MX:
-               return rec1->data.mx.wPriority == rec2->data.mx.wPriority &&
-                       dns_name_equal(rec1->data.mx.nameTarget, rec2->data.mx.nameTarget);
-
-       case DNS_TYPE_TXT:
-               if (rec1->data.txt.count != rec2->data.txt.count) {
-                       return false;
-               }
-               status = true;
-               for (i=0; i<rec1->data.txt.count; i++) {
-                       status = status && (strcmp(rec1->data.txt.str[i],
-                                                  rec2->data.txt.str[i]) == 0);
-               }
-               return status;
-
-       case DNS_TYPE_AAAA:
-               return strcmp(rec1->data.ipv6, rec2->data.ipv6) == 0;
-
-       case DNS_TYPE_SRV:
-               return rec1->data.srv.wPriority == rec2->data.srv.wPriority &&
-                       rec1->data.srv.wWeight == rec2->data.srv.wWeight &&
-                       rec1->data.srv.wPort == rec2->data.srv.wPort &&
-                       dns_name_equal(rec1->data.srv.nameTarget, rec2->data.srv.nameTarget);
-
-       default:
-               DEBUG(0, ("dnsserver: unhandled record type %u", rec1->wType));
-               break;
-       }
-
-       return false;
-}