2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 06:55:30 +00:00

Turn on QNAME minimisation when fetching nameserver addresses

This commit is contained in:
Mark Andrews
2023-07-18 12:18:05 +10:00
committed by Evan Hunt
parent a4aa93f46d
commit 578da93581
2 changed files with 25 additions and 0 deletions

View File

@@ -127,8 +127,12 @@ ADDR a.bit.longer.ns.name.good.
ADDR ns2.good. ADDR ns2.good.
ADDR ns3.good. ADDR ns3.good.
ADDR ns3.good. ADDR ns3.good.
NS bit.longer.ns.name.good.
NS boing.good. NS boing.good.
NS good. NS good.
NS longer.ns.name.good.
NS name.good.
NS ns.name.good.
NS zoop.boing.good. NS zoop.boing.good.
__EOF __EOF
cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1 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 ns2.good.
ADDR ns3.good. ADDR ns3.good.
ADDR ns3.good. ADDR ns3.good.
NS bit.longer.ns.name.good.
NS boing.good. NS boing.good.
NS longer.ns.name.good.
NS name.good.
NS ns.name.good.
NS zoop.boing.good. NS zoop.boing.good.
__EOF __EOF
cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
@@ -212,6 +220,7 @@ ADDR ns2.bad.
ADDR ns3.bad. ADDR ns3.bad.
ADDR ns3.bad. ADDR ns3.bad.
NS boing.bad. NS boing.bad.
NS name.bad.
__EOF __EOF
cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1
ADDR icky.icky.icky.ptang.zoop.boing.bad. ADDR icky.icky.icky.ptang.zoop.boing.bad.
@@ -260,6 +269,8 @@ ADDR ns2.ugly.
ADDR ns3.ugly. ADDR ns3.ugly.
ADDR ns3.ugly. ADDR ns3.ugly.
NS boing.ugly. NS boing.ugly.
NS name.ugly.
NS name.ugly.
__EOF __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 ans3/query.log - >/dev/null || ret=1
echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans4/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 ns2.slow.
ADDR ns3.slow. ADDR ns3.slow.
ADDR ns3.slow. ADDR ns3.slow.
NS bit.longer.ns.name.slow.
NS boing.slow. NS boing.slow.
NS longer.ns.name.slow.
NS name.slow.
NS ns.name.slow.
NS slow. NS slow.
NS zoop.boing.slow. NS zoop.boing.slow.
__EOF __EOF
@@ -347,8 +362,12 @@ ADDR a.bit.longer.ns.name.good.
ADDR ns2.good. ADDR ns2.good.
ADDR ns3.good. ADDR ns3.good.
ADDR ns3.good. ADDR ns3.good.
NS bit.longer.ns.name.good.
NS boing.good. NS boing.good.
NS good. NS good.
NS longer.ns.name.good.
NS name.good.
NS ns.name.good.
NS zoop.boing.good. NS zoop.boing.good.
__EOF __EOF
cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1 cat <<__EOF | diff ans3/query.log - >/dev/null || ret=1

View File

@@ -2964,6 +2964,7 @@ fetch_name(dns_adbname_t *adbname, bool start_at_zone, unsigned int depth,
dns_rdataset_init(&rdataset); dns_rdataset_init(&rdataset);
options = DNS_FETCHOPT_NOVALIDATE; options = DNS_FETCHOPT_NOVALIDATE;
if (start_at_zone) { if (start_at_zone) {
DP(ENTER_LEVEL, "fetch_name: starting at zone for name %p", DP(ENTER_LEVEL, "fetch_name: starting at zone for name %p",
adbname); adbname);
@@ -2976,6 +2977,11 @@ fetch_name(dns_adbname_t *adbname, bool start_at_zone, unsigned int depth,
} }
nameservers = &rdataset; nameservers = &rdataset;
options |= DNS_FETCHOPT_UNSHARED; 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); fetch = new_adbfetch(adb);