]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Turn on QNAME minimisation when fetching nameserver addresses
authorMark Andrews <marka@isc.org>
Tue, 18 Jul 2023 02:18:05 +0000 (12:18 +1000)
committerEvan Hunt <each@isc.org>
Wed, 1 Nov 2023 15:49:08 +0000 (16:49 +0100)
bin/tests/system/qmin/tests.sh
lib/dns/adb.c

index 6c87a1673dcad546293181a10716d4d61ad12a77..372e39dbb906b7368d33c628483408a6e81328a8 100755 (executable)
@@ -127,8 +127,12 @@ ADDR a.bit.longer.ns.name.good.
 ADDR ns2.good.
 ADDR ns3.good.
 ADDR ns3.good.
+NS bit.longer.ns.name.good.
 NS boing.good.
 NS good.
+NS longer.ns.name.good.
+NS name.good.
+NS ns.name.good.
 NS zoop.boing.good.
 __EOF
 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
@@ -161,7 +165,11 @@ ADDR a.bit.longer.ns.name.good.
 ADDR ns2.good.
 ADDR ns3.good.
 ADDR ns3.good.
+NS bit.longer.ns.name.good.
 NS boing.good.
+NS longer.ns.name.good.
+NS name.good.
+NS ns.name.good.
 NS zoop.boing.good.
 __EOF
 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
@@ -212,6 +220,7 @@ ADDR ns2.bad.
 ADDR ns3.bad.
 ADDR ns3.bad.
 NS boing.bad.
+NS name.bad.
 __EOF
 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
 ADDR icky.icky.icky.ptang.zoop.boing.bad.
@@ -260,6 +269,8 @@ ADDR ns2.ugly.
 ADDR ns3.ugly.
 ADDR ns3.ugly.
 NS boing.ugly.
+NS name.ugly.
+NS name.ugly.
 __EOF
 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans3/query.log - >/dev/null || ret=1
 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans4/query.log - >/dev/null || ret=1
@@ -291,7 +302,11 @@ ADDR a.bit.longer.ns.name.slow.
 ADDR ns2.slow.
 ADDR ns3.slow.
 ADDR ns3.slow.
+NS bit.longer.ns.name.slow.
 NS boing.slow.
+NS longer.ns.name.slow.
+NS name.slow.
+NS ns.name.slow.
 NS slow.
 NS zoop.boing.slow.
 __EOF
@@ -347,8 +362,12 @@ ADDR a.bit.longer.ns.name.good.
 ADDR ns2.good.
 ADDR ns3.good.
 ADDR ns3.good.
+NS bit.longer.ns.name.good.
 NS boing.good.
 NS good.
+NS longer.ns.name.good.
+NS name.good.
+NS ns.name.good.
 NS zoop.boing.good.
 __EOF
 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
index 2933546802f09898f56f54e90f0a96b3375eab47..422666d6bf59111ac5e5ecdcb6e57b18cb562361 100644 (file)
@@ -2964,6 +2964,7 @@ fetch_name(dns_adbname_t *adbname, bool start_at_zone, unsigned int depth,
        dns_rdataset_init(&rdataset);
 
        options = DNS_FETCHOPT_NOVALIDATE;
+
        if (start_at_zone) {
                DP(ENTER_LEVEL, "fetch_name: starting at zone for name %p",
                   adbname);
@@ -2976,6 +2977,11 @@ fetch_name(dns_adbname_t *adbname, bool start_at_zone, unsigned int depth,
                }
                nameservers = &rdataset;
                options |= DNS_FETCHOPT_UNSHARED;
+       } else if (adb->view->qminimization) {
+               options |= DNS_FETCHOPT_QMINIMIZE | DNS_FETCHOPT_QMIN_SKIP_IP6A;
+               if (adb->view->qmin_strict) {
+                       options |= DNS_FETCHOPT_QMIN_STRICT;
+               }
        }
 
        fetch = new_adbfetch(adb);