From 422c0321519bc4cbe5b09bfcf3f4ecad78212b97 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Tue, 27 Jul 2021 17:55:08 -0700 Subject: [PATCH] Add a regression test in the RRL system test This commit modifies the MTU of the loopback interface on Linux systems to 1500, so that oversized UDP packets can trigger EMSGSIZE errors, and tests that named handles such errors correctly. Note that the loopback MTU size has not yet been modified for other platforms. (cherry picked from commit cfd058d622102c18ea9b6ef9cd37530d62debea7) --- bin/tests/system/ifconfig.sh | 7 ++++++- bin/tests/system/rrl/ns4/named.conf.in | 1 + bin/tests/system/rrl/ns4/tld4.db | 3 +++ bin/tests/system/rrl/tests.sh | 4 ++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bin/tests/system/ifconfig.sh b/bin/tests/system/ifconfig.sh index 9ba36b2021..4d323872af 100755 --- a/bin/tests/system/ifconfig.sh +++ b/bin/tests/system/ifconfig.sh @@ -19,6 +19,9 @@ # fd92:7065:b8e:99ff::{1..2} # fd92:7065:b8e:ff::{1..2} # +# On Linux, we also set the MTU on the 1500 bytes to match the default MTU on +# physical interfaces, so we can properly test the cases with packets bigger +# than interface MTU. SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" . "$SYSTEMTESTTOP/conf.sh" @@ -76,12 +79,14 @@ case "$1" in if [ $use_ip ]; then ip address add 10.53.$i.$ns/24 \ dev lo:$int + ip link set dev lo:$int mtu 1500 [ "$ipv6" ] && ip address add \ fd92:7065:b8e:${ipv6}ff::$ns/64 \ dev lo else ifconfig lo:$int 10.53.$i.$ns up \ - netmask 255.255.255.0 + netmask 255.255.255.0 \ + mtu 1500 [ "$ipv6" ] && ifconfig lo inet6 add \ fd92:7065:b8e:${ipv6}ff::$ns/64 fi diff --git a/bin/tests/system/rrl/ns4/named.conf.in b/bin/tests/system/rrl/ns4/named.conf.in index 028281fe74..864b67f25d 100644 --- a/bin/tests/system/rrl/ns4/named.conf.in +++ b/bin/tests/system/rrl/ns4/named.conf.in @@ -22,6 +22,7 @@ options { notify no; recursion yes; dnssec-validation yes; + max-udp-size 4096; rate-limit { responses-per-second 2; diff --git a/bin/tests/system/rrl/ns4/tld4.db b/bin/tests/system/rrl/ns4/tld4.db index 5b746a01ab..1527775ca7 100644 --- a/bin/tests/system/rrl/ns4/tld4.db +++ b/bin/tests/system/rrl/ns4/tld4.db @@ -40,3 +40,6 @@ a8 A 192.0.2.8 ; a9 for all-per-second limit $GENERATE 101-180 all$.a9 A 192.0.2.8 + +; oversized TXT record +$GENERATE 1-100 big 1 TXT "txt$" diff --git a/bin/tests/system/rrl/tests.sh b/bin/tests/system/rrl/tests.sh index 9b8c810748..31855c453c 100644 --- a/bin/tests/system/rrl/tests.sh +++ b/bin/tests/system/rrl/tests.sh @@ -272,6 +272,10 @@ $DIG $DIGOPTS @$ns4 A a7.tld4 > /dev/null 2>&1 $DIG $DIGOPTS @$ns4 A a7.tld4 > /dev/null 2>&1 $DIG $DIGOPTS @$ns4 A a7.tld4 > /dev/null 2>&1 +# regression test for GL #2839 +DIGOPTS="+bufsize=4096 +ignore -p ${PORT}" +$DIG $DIGOPTS @$ns4 TXT big.tld4 > /dev/null 2>&1 + grep "would limit" ns4/named.run >/dev/null 2>&1 || setret "\"would limit\" not found in log file."