]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add test for not-loading many RRsets per name on a secondary
authorOndřej Surý <ondrej@isc.org>
Tue, 28 May 2024 14:13:53 +0000 (16:13 +0200)
committerNicki Křížek <nicki@isc.org>
Mon, 10 Jun 2024 14:55:10 +0000 (16:55 +0200)
This tests makes sure the zone with many RRsets per name is not loaded
via XFR on the secondary server.

bin/tests/system/masterformat/ns1/compile.sh
bin/tests/system/masterformat/ns1/many.db.in [new file with mode: 0644]
bin/tests/system/masterformat/ns1/named.conf.in
bin/tests/system/masterformat/ns2/named.conf.in
bin/tests/system/masterformat/setup.sh
bin/tests/system/masterformat/tests.sh

index 7b2ff56b2fb0879858e840afec1083a265a9f5c0..6d8df244bea0a4ad63b7305768af4fddb5d5922b 100755 (executable)
@@ -29,6 +29,7 @@ $CHECKZONE -D -F raw -L 3333 -o example.db.serial.raw example \
 $CHECKZONE -D -F raw -o large.db.raw large large.db >/dev/null 2>&1
 $CHECKZONE -D -F raw -o huge.db.raw huge huge.db >/dev/null 2>&1
 $CHECKZONE -D -F raw -o uber.db.raw uber uber.db >/dev/null 2>&1
+$CHECKZONE -D -F raw -o many.db.raw many many.db >/dev/null 2>&1
 
 $KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" -f KSK signed >/dev/null 2>&1
 $KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" signed >/dev/null 2>&1
diff --git a/bin/tests/system/masterformat/ns1/many.db.in b/bin/tests/system/masterformat/ns1/many.db.in
new file mode 100644 (file)
index 0000000..5a81863
--- /dev/null
@@ -0,0 +1,22 @@
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+;
+; SPDX-License-Identifier: MPL-2.0
+;
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0.  If a copy of the MPL was not distributed with this
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
+;
+; See the COPYRIGHT file distributed with this work for additional
+; information regarding copyright ownership.
+
+$TTL 1D
+
+@                      IN SOA  ns hostmaster (
+                               1
+                               3600
+                               1800
+                               1814400
+                               3
+                               )
+                       NS      ns
+ns                     A       10.53.0.1
index c0897f2d8224a7d1e4c14784db0ade3bcac98ee9..1d29bb7d22aadf7e4f76c0478d15ac35915f28de 100644 (file)
@@ -24,6 +24,7 @@ options {
        servfail-ttl 0;
        dnssec-validation no;
        max-records-per-type 2050;
+       max-types-per-name 500;
 };
 
 key rndc_key {
@@ -93,6 +94,7 @@ zone "huge" {
        allow-transfer { any; };
 };
 
+
 zone "uber" {
        type primary;
        file "uber.db.raw";
@@ -100,6 +102,13 @@ zone "uber" {
        allow-transfer { any; };
 };
 
+zone "many" {
+       type primary;
+       file "many.db.raw";
+       masterfile-format raw;
+       allow-transfer { any; };
+};
+
 zone "signed" {
        type primary;
        file "signed.db.raw";
index 1b28b0cb0e1e49430c51bf901fe7bdfa2f8cc3e5..e03fb389c3ec0b84ca778a3b36ec98cdb0622896 100644 (file)
@@ -23,6 +23,7 @@ options {
        servfail-ttl 0;
        dnssec-validation no;
        max-records-per-type 2000;
+       max-types-per-name 200;
 };
 
 zone "example" {
@@ -70,3 +71,10 @@ zone "huge" {
        masterfile-format raw;
        file "huge.bk";
 };
+
+zone "many" {
+       type secondary;
+       primaries { 10.53.0.1; };
+       masterfile-format raw;
+       file "many.bk";
+};
index cc90f5a692872684c83ba651bfda122454f09777..569b479b9bc15a30389b4435e9e563016ebdf38b 100755 (executable)
@@ -43,4 +43,9 @@ awk 'END {
         for (i = 0; i < 2050; i++ ) { print "d TXT", i; }
         for (i = 0; i < 2100; i++ ) { print "e TXT", i; }
 }' </dev/null >>ns1/uber.db
+cp ns1/many.db.in ns1/many.db
+for ntype in $(seq 65280 65534); do
+  echo "m TYPE${ntype} \# 0"
+done >>ns1/many.db
+echo "m TXT bunny" >>ns1/many.db
 cd ns1 && $SHELL compile.sh
index 27d37a3ff35492140209f5865bfe4f44e84bcf30..26df0270e2b32dd0a4ce7596c93da2c36294ee00 100755 (executable)
@@ -243,6 +243,29 @@ n=$((n + 1))
 [ $ret -eq 0 ] || echo_i "failed"
 status=$((status + ret))
 
+echo_i "checking that many types are loaded ($n)"
+for i in 0 1 2 3 4 5 6 7 8 9; do
+  ret=0
+  $DIG +tcp TXT "m.many" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.test$n"
+  grep "status: NOERROR" "dig.out.ns1.test$n" >/dev/null || ret=1
+  [ $ret -eq 0 ] && break
+  sleep 1
+done
+n=$((n + 1))
+[ $ret -eq 0 ] || echo_i "failed"
+status=$((status + ret))
+
+echo_i "checking that many types are not transfered ($n)"
+for i in 0 1 2 3 4 5 6 7 8 9; do
+  $DIG +tcp TXT "m.many" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.test$n"
+  grep "status: SERVFAIL" "dig.out.ns2.test$n" >/dev/null || ret=1
+  [ $ret -eq 0 ] && break
+  sleep 1
+done
+n=$((n + 1))
+[ $ret -eq 0 ] || echo_i "failed"
+status=$((status + ret))
+
 echo_i "checking format transitions: text->raw->text ($n)"
 ret=0
 $CHECKZONE -D -f text -F text -o baseline.txt example.nil ns1/example.db >/dev/null