]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Expand the list of the priority types and move it to db_p.h
authorOndřej Surý <ondrej@isc.org>
Mon, 17 Jun 2024 09:40:40 +0000 (11:40 +0200)
committerOndřej Surý <ondrej@isc.org>
Mon, 1 Jul 2024 10:47:30 +0000 (12:47 +0200)
Add HTTPS, SVCB, SRV, PTR, NAPTR, DNSKEY and TXT records to the list of
the priority types that are put at the beginning of the slabheader list
for faster access and to avoid eviction when there are more types than
the max-types-per-name limit.

lib/dns/db_p.h
lib/dns/qpcache.c
lib/dns/qpzone.c
lib/dns/rbtdb.c
lib/dns/rbtdb_p.h

index f12d9b4a33c2255884104d0aae8ea2d32e645b79..fa6fa5485a51a54aab72c1c1719a2d04681ef355 100644 (file)
@@ -145,4 +145,46 @@ typedef struct {
        bool exiting;
 } db_nodelock_t;
 
+static inline bool
+prio_type(dns_typepair_t type) {
+       switch (type) {
+       case dns_rdatatype_soa:
+       case DNS_SIGTYPE(dns_rdatatype_soa):
+       case dns_rdatatype_a:
+       case DNS_SIGTYPE(dns_rdatatype_a):
+       case dns_rdatatype_mx:
+       case DNS_SIGTYPE(dns_rdatatype_mx):
+       case dns_rdatatype_aaaa:
+       case DNS_SIGTYPE(dns_rdatatype_aaaa):
+       case dns_rdatatype_nsec:
+       case DNS_SIGTYPE(dns_rdatatype_nsec):
+       case dns_rdatatype_nsec3:
+       case DNS_SIGTYPE(dns_rdatatype_nsec3):
+       case dns_rdatatype_ns:
+       case DNS_SIGTYPE(dns_rdatatype_ns):
+       case dns_rdatatype_ds:
+       case DNS_SIGTYPE(dns_rdatatype_ds):
+       case dns_rdatatype_cname:
+       case DNS_SIGTYPE(dns_rdatatype_cname):
+       case dns_rdatatype_dname:
+       case DNS_SIGTYPE(dns_rdatatype_dname):
+       case dns_rdatatype_svcb:
+       case DNS_SIGTYPE(dns_rdatatype_svcb):
+       case dns_rdatatype_https:
+       case DNS_SIGTYPE(dns_rdatatype_https):
+       case dns_rdatatype_dnskey:
+       case DNS_SIGTYPE(dns_rdatatype_dnskey):
+       case dns_rdatatype_srv:
+       case DNS_SIGTYPE(dns_rdatatype_srv):
+       case dns_rdatatype_txt:
+       case DNS_SIGTYPE(dns_rdatatype_txt):
+       case dns_rdatatype_ptr:
+       case DNS_SIGTYPE(dns_rdatatype_ptr):
+       case dns_rdatatype_naptr:
+       case DNS_SIGTYPE(dns_rdatatype_naptr):
+               return (true);
+       }
+       return (false);
+}
+
 ISC_LANG_ENDDECLS
index c56bc2abe7fddcfaacb7fd9e8274a694f8a007fe..2aa4b67aa3f5f6f6e3bb691fb23699d8c9721571 100644 (file)
@@ -2438,30 +2438,6 @@ again:
        }
 }
 
-static bool
-prio_type(dns_typepair_t type) {
-       switch (type) {
-       case dns_rdatatype_soa:
-       case DNS_SIGTYPE(dns_rdatatype_soa):
-       case dns_rdatatype_a:
-       case DNS_SIGTYPE(dns_rdatatype_a):
-       case dns_rdatatype_aaaa:
-       case DNS_SIGTYPE(dns_rdatatype_aaaa):
-       case dns_rdatatype_nsec:
-       case DNS_SIGTYPE(dns_rdatatype_nsec):
-       case dns_rdatatype_nsec3:
-       case DNS_SIGTYPE(dns_rdatatype_nsec3):
-       case dns_rdatatype_ns:
-       case DNS_SIGTYPE(dns_rdatatype_ns):
-       case dns_rdatatype_ds:
-       case DNS_SIGTYPE(dns_rdatatype_ds):
-       case dns_rdatatype_cname:
-       case DNS_SIGTYPE(dns_rdatatype_cname):
-               return (true);
-       }
-       return (false);
-}
-
 /*%
  * These functions allow the heap code to rank the priority of each
  * element.  It returns true if v1 happens "sooner" than v2.
index 4bcd5e289091a50885c5a35c9e803c4369ba17e7..5a2b487ce1fd6e510097be54e4f13be55575b03d 100644 (file)
@@ -330,31 +330,6 @@ typedef struct qpdb_dbiterator {
  */
 static atomic_uint_fast16_t init_count = 0;
 
-static bool
-prio_type(dns_typepair_t type) {
-       switch (type) {
-       case dns_rdatatype_soa:
-       case DNS_SIGTYPE(dns_rdatatype_soa):
-       case dns_rdatatype_a:
-       case DNS_SIGTYPE(dns_rdatatype_a):
-       case dns_rdatatype_aaaa:
-       case DNS_SIGTYPE(dns_rdatatype_aaaa):
-       case dns_rdatatype_nsec:
-       case DNS_SIGTYPE(dns_rdatatype_nsec):
-       case dns_rdatatype_ns:
-       case DNS_SIGTYPE(dns_rdatatype_ns):
-       case dns_rdatatype_ds:
-       case DNS_SIGTYPE(dns_rdatatype_ds):
-       case dns_rdatatype_nsec3:
-       case DNS_SIGTYPE(dns_rdatatype_nsec3):
-       case dns_rdatatype_cname:
-       case DNS_SIGTYPE(dns_rdatatype_cname):
-               return (true);
-       }
-
-       return (false);
-}
-
 /*
  * Locking
  *
index deadde73c7ccec1281043e789d7bc61d8083ceb0..6319e21c244a412e3e5ab96d36a450dfe2057a7e 100644 (file)
@@ -351,30 +351,6 @@ dns__rbtdb_setttl(dns_slabheader_t *header, dns_ttl_t newttl) {
        }
 }
 
-static bool
-prio_type(dns_typepair_t type) {
-       switch (type) {
-       case dns_rdatatype_soa:
-       case DNS_SIGTYPE(dns_rdatatype_soa):
-       case dns_rdatatype_a:
-       case DNS_SIGTYPE(dns_rdatatype_a):
-       case dns_rdatatype_aaaa:
-       case DNS_SIGTYPE(dns_rdatatype_aaaa):
-       case dns_rdatatype_nsec:
-       case DNS_SIGTYPE(dns_rdatatype_nsec):
-       case dns_rdatatype_nsec3:
-       case DNS_SIGTYPE(dns_rdatatype_nsec3):
-       case dns_rdatatype_ns:
-       case DNS_SIGTYPE(dns_rdatatype_ns):
-       case dns_rdatatype_ds:
-       case DNS_SIGTYPE(dns_rdatatype_ds):
-       case dns_rdatatype_cname:
-       case DNS_SIGTYPE(dns_rdatatype_cname):
-               return (true);
-       }
-       return (false);
-}
-
 /*%
  * These functions allow the heap code to rank the priority of each
  * element.  It returns true if v1 happens "sooner" than v2.
index cee0499a51b281b742e05c59c2ff7d42a7846eb0..b28863eac7db36b474540af018a354903e70cebb 100644 (file)
@@ -21,6 +21,8 @@
 #include <dns/rbt.h>
 #include <dns/types.h>
 
+#include "db_p.h" /* for db_nodelock_t */
+
 /*%
  * Note that "impmagic" is not the first four bytes of the struct, so
  * ISC_MAGIC_VALID cannot be used.