]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add dns_rdatatype_isnsec() helper function
authorOndřej Surý <ondrej@sury.org>
Mon, 11 Aug 2025 08:06:33 +0000 (10:06 +0200)
committerOndřej Surý <ondrej@isc.org>
Fri, 15 Aug 2025 05:22:52 +0000 (07:22 +0200)
Replace the checks for both NSEC and NSEC3 with a single helper
function.

bin/dig/host.c
bin/dnssec/dnssec-signzone.c
lib/dns/include/dns/rdata.h
lib/dns/ncache.c
lib/dns/nsec.c
lib/dns/nsec3.c
lib/dns/qpzone.c
lib/dns/rdatalist.c
lib/dns/resolver.c
lib/dns/update.c
lib/ns/query.c

index 2afcf7638df72332f6937e41456cb5a88b093f72..c85ba70258e8fae71175670aa4f3f408266a486c 100644 (file)
@@ -240,8 +240,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
                        }
                        if (list_almost_all &&
                            (rdataset->type == dns_rdatatype_rrsig ||
-                            rdataset->type == dns_rdatatype_nsec ||
-                            rdataset->type == dns_rdatatype_nsec3))
+                            dns_rdatatype_isnsec(rdataset->type)))
                        {
                                continue;
                        }
index 6128b33a25e628a0c3f4b5f1d9967f645840befc..44b1d39fe3ee31403c84950d23ee46e71c043be0 100644 (file)
@@ -214,8 +214,7 @@ dumpnode(dns_name_t *name, dns_dbnode_t *node) {
                dns_rdatasetiter_current(iter, &rds);
 
                if (rds.type != dns_rdatatype_rrsig &&
-                   rds.type != dns_rdatatype_nsec &&
-                   rds.type != dns_rdatatype_nsec3 &&
+                   !dns_rdatatype_isnsec(rds.type) &&
                    rds.type != dns_rdatatype_nsec3param &&
                    (!smartsign || rds.type != dns_rdatatype_dnskey))
                {
@@ -1264,9 +1263,7 @@ active_node(dns_dbnode_t *node) {
                dns_rdatatype_t t = rdataset.type;
                dns_rdataset_disassociate(&rdataset);
 
-               if (t != dns_rdatatype_nsec && t != dns_rdatatype_nsec3 &&
-                   t != dns_rdatatype_rrsig)
-               {
+               if (!dns_rdatatype_isnsec(t) && t != dns_rdatatype_rrsig) {
                        active = true;
                        break;
                }
index 6e0a89cdf6a2eba4c2fefcfaa6465fa5ae36f668..f31dce0fe2ffa913615cc06c759618e76b69ff54 100644 (file)
@@ -736,6 +736,14 @@ dns_rdatatype_issig(dns_rdatatype_t type) {
        return type == dns_rdatatype_rrsig || type == dns_rdatatype_sig;
 }
 
+/*%
+ * Return true iff the rdata type is a insecurity proof: either NSEC or NSEC3.
+ */
+static inline bool
+dns_rdatatype_isnsec(dns_rdatatype_t type) {
+       return type == dns_rdatatype_nsec || type == dns_rdatatype_nsec3;
+}
+
 /*%
  * Return true iff the rdata type is an address: either A or AAAA.
  */
index 0461bde7a4468f27e7369d9df319d8f84e19a5f5..5051185862b7f3aaf80de550b0d92eac01169b2a 100644 (file)
@@ -154,8 +154,7 @@ dns_ncache_add(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node,
                                        type = rdataset->covers;
                                }
                                if (type == dns_rdatatype_soa ||
-                                   type == dns_rdatatype_nsec ||
-                                   type == dns_rdatatype_nsec3)
+                                   dns_rdatatype_isnsec(type))
                                {
                                        if (ttl > rdataset->ttl) {
                                                ttl = rdataset->ttl;
index 6b8f6fffd0e7b6408ce4519559a82b93a8696f7a..03f12404922f6595ac788ac8aafc9e6d99daa33a 100644 (file)
@@ -125,8 +125,7 @@ dns_nsec_buildrdata(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node,
        DNS_RDATASETITER_FOREACH (rdsiter) {
                dns_rdataset_t rdataset = DNS_RDATASET_INIT;
                dns_rdatasetiter_current(rdsiter, &rdataset);
-               if (rdataset.type != dns_rdatatype_nsec &&
-                   rdataset.type != dns_rdatatype_nsec3 &&
+               if (!dns_rdatatype_isnsec(rdataset.type) &&
                    rdataset.type != dns_rdatatype_rrsig)
                {
                        if (rdataset.type > max_type) {
index 7a7db5aafdfd7fc088cf908f502366556ee393f4..a0c5f070dfb8e2c60553e747e2e31d56a39e3f6a 100644 (file)
@@ -123,8 +123,7 @@ dns_nsec3_buildrdata(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node,
        DNS_RDATASETITER_FOREACH (rdsiter) {
                dns_rdataset_t rdataset = DNS_RDATASET_INIT;
                dns_rdatasetiter_current(rdsiter, &rdataset);
-               if (rdataset.type != dns_rdatatype_nsec &&
-                   rdataset.type != dns_rdatatype_nsec3 &&
+               if (!dns_rdatatype_isnsec(rdataset.type) &&
                    rdataset.type != dns_rdatatype_rrsig)
                {
                        if (rdataset.type > max_type) {
index eabaec5e73562a277840c9a479be050d06e50200..bb3fb9f5629b51f9e03535b9dde59c377b6e9684 100644 (file)
@@ -3867,8 +3867,7 @@ found:
                         * cut or not.  It is needed for RFC3007
                         * validated updates.
                         */
-                       if (type == dns_rdatatype_nsec ||
-                           type == dns_rdatatype_nsec3 ||
+                       if (dns_rdatatype_isnsec(type) ||
                            type == dns_rdatatype_key)
                        {
                                result = ISC_R_SUCCESS;
index ac286c64b368784e72bfedd9e0120252a836f085..fbcf15c1214c2a99d1b501e2fdb10664c6498114 100644 (file)
@@ -182,9 +182,7 @@ dns_rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name) {
                if (rdset->rdclass != rdataset->rdclass) {
                        continue;
                }
-               if (rdset->type == dns_rdatatype_nsec ||
-                   rdset->type == dns_rdatatype_nsec3)
-               {
+               if (dns_rdatatype_isnsec(rdset->type)) {
                        neg = rdset;
                }
        }
@@ -241,9 +239,7 @@ dns_rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name,
                if (rdset->rdclass != rdclass) {
                        continue;
                }
-               if (rdset->type == dns_rdatatype_nsec ||
-                   rdset->type == dns_rdatatype_nsec3)
-               {
+               if (dns_rdatatype_isnsec(rdset->type)) {
                        tneg = rdset;
                }
        }
@@ -280,9 +276,7 @@ dns_rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name) {
                if (rdset->rdclass != rdataset->rdclass) {
                        continue;
                }
-               if (rdset->type == dns_rdatatype_nsec ||
-                   rdset->type == dns_rdatatype_nsec3)
-               {
+               if (dns_rdatatype_isnsec(rdset->type)) {
                        neg = rdset;
                }
        }
@@ -338,9 +332,7 @@ dns_rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name,
                if (rdset->rdclass != rdclass) {
                        continue;
                }
-               if (rdset->type == dns_rdatatype_nsec ||
-                   rdset->type == dns_rdatatype_nsec3)
-               {
+               if (dns_rdatatype_isnsec(rdset->type)) {
                        tneg = rdset;
                }
        }
index 139f87d70713cbfd5964e80515cb322163a96d83..970e6f1708f2ac0fa2bd842addb61bd43db67963 100644 (file)
@@ -5683,9 +5683,7 @@ findnoqname(fetchctx_t *fctx, dns_message_t *message, dns_name_t *name,
                        bool setclosest = false;
                        bool setnearest = false;
 
-                       if (nrdataset->type != dns_rdatatype_nsec &&
-                           nrdataset->type != dns_rdatatype_nsec3)
-                       {
+                       if (!dns_rdatatype_isnsec(nrdataset->type)) {
                                continue;
                        }
 
index b0781de44173dd96b30d51a76433e21f2eefaadc..16b287c3c0cb8e715e8d00ee520aa4fc17b1f296 100644 (file)
@@ -750,11 +750,9 @@ failure:
 static isc_result_t
 is_non_nsec_action(void *data, dns_rdataset_t *rrset) {
        UNUSED(data);
-       if (!(rrset->type == dns_rdatatype_nsec ||
-             rrset->type == dns_rdatatype_nsec3 ||
+       if (!(dns_rdatatype_isnsec(rrset->type) ||
              (rrset->type == dns_rdatatype_rrsig &&
-              (rrset->covers == dns_rdatatype_nsec ||
-               rrset->covers == dns_rdatatype_nsec3))))
+              dns_rdatatype_isnsec(rrset->covers))))
        {
                return ISC_R_EXISTS;
        }
index 8f649ac1f49e84fcd63467b16a369454228b10c8..19c83ee5c3b60d11aafe2600965f19f8406ae252 100644 (file)
@@ -4376,8 +4376,7 @@ rpz_ck_dnssec(ns_client_t *client, isc_result_t qresult,
        /*
         * Do not rewrite if there is any sign of signatures.
         */
-       if (rdataset->type == dns_rdatatype_nsec ||
-           rdataset->type == dns_rdatatype_nsec3 ||
+       if (dns_rdatatype_isnsec(rdataset->type) ||
            rdataset->type == dns_rdatatype_rrsig)
        {
                return false;
@@ -4395,9 +4394,7 @@ rpz_ck_dnssec(ns_client_t *client, isc_result_t qresult,
                dns_ncache_current(rdataset, found, &trdataset);
                type = trdataset.type;
                dns_rdataset_disassociate(&trdataset);
-               if (type == dns_rdatatype_nsec || type == dns_rdatatype_nsec3 ||
-                   type == dns_rdatatype_rrsig)
-               {
+               if (dns_rdatatype_isnsec(type) || type == dns_rdatatype_rrsig) {
                        return false;
                }
        }
@@ -4732,8 +4729,7 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                        return ISC_R_NOTFOUND;
                }
                if (rdataset->trust == dns_trust_ultimate &&
-                   (rdataset->type == dns_rdatatype_nsec ||
-                    rdataset->type == dns_rdatatype_nsec3))
+                   dns_rdatatype_isnsec(rdataset->type))
                {
                        return ISC_R_NOTFOUND;
                }
@@ -4742,8 +4738,7 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                                dns_ncache_current(rdataset, found, &trdataset);
                                type = trdataset.type;
                                dns_rdataset_disassociate(&trdataset);
-                               if (type == dns_rdatatype_nsec ||
-                                   type == dns_rdatatype_nsec3 ||
+                               if (dns_rdatatype_isnsec(type) ||
                                    type == dns_rdatatype_rrsig)
                                {
                                        return ISC_R_NOTFOUND;
@@ -4866,8 +4861,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                        return ISC_R_NOTFOUND;
                }
                if (rdataset->trust == dns_trust_ultimate &&
-                   (rdataset->type == dns_rdatatype_nsec ||
-                    rdataset->type == dns_rdatatype_nsec3))
+                   dns_rdatatype_isnsec(rdataset->type))
                {
                        return ISC_R_NOTFOUND;
                }
@@ -4876,8 +4870,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
                                dns_ncache_current(rdataset, found, &trdataset);
                                type = trdataset.type;
                                dns_rdataset_disassociate(&trdataset);
-                               if (type == dns_rdatatype_nsec ||
-                                   type == dns_rdatatype_nsec3 ||
+                               if (dns_rdatatype_isnsec(type) ||
                                    type == dns_rdatatype_rrsig)
                                {
                                        return ISC_R_NOTFOUND;