]> 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)
committerOndřej Surý <ondrej@isc.org>
Mon, 29 Jul 2024 10:27:25 +0000 (12:27 +0200)
This tests makes sure the zone with many RRsets per name is not loaded
via XFR on the secondary server.

(cherry picked from commit 4cfeed912a5e7440f04cb088a461ff47305da2e7)

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 34279547a07d7295e67bed528e8f151f530662bb..7e6931e3febbae2c4aba86a25bf8ce62980000f4 100755 (executable)
@@ -31,6 +31,7 @@ $CHECKZONE -D -F map -o example.db.map example-map \
   example.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 1434ec34d6e38169bc5e7c93cbea1cc5e54a689a..6d55dfb5330fb35fdc74721f7819f638e8d622d3 100644 (file)
@@ -23,6 +23,7 @@ options {
        session-keyfile "session.key";
        servfail-ttl 0;
        max-records-per-type 2050;
+       max-types-per-name 500;
 };
 
 key rndc_key {
@@ -85,6 +86,7 @@ zone "huge" {
        allow-transfer { any; };
 };
 
+
 zone "uber" {
        type primary;
        file "uber.db.raw";
@@ -92,6 +94,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.map";
index df778bc64ba11f9aa92c55650bdde07117652703..64640cdc6130b82af5f10a818e72f062381555c2 100644 (file)
@@ -22,6 +22,7 @@ options {
        notify no;
        servfail-ttl 0;
        max-records-per-type 2000;
+       max-types-per-name 200;
 };
 
 zone "example" {
@@ -69,3 +70,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 57b8a249522692d8a3ea0a2679ed056089c6913f..005fca9c2419248fa10bdaf17780e68722169a71 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 f88916d274b85a09f2710f2d3b5f3bb33a081eb9..e13a419b5f1d9fefe790333e9733cf789cc91559 100755 (executable)
@@ -254,6 +254,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->map->text ($n)"
 ret=0
 $CHECKZONE -D -f text -F text -o baseline.txt example.nil ns1/example.db >/dev/null