Add a test case that if the first primary fails, the fallback of a
second primary on plain DNS works. This is mainly to test that the port
configuration inheritance works correctly.
(cherry picked from commit
622a499027b163b12d0ef8a7cefad1967fedb529)
rm -f dig.out.*
rm -f ns*/managed-keys.bind*
rm -f ns*/named.lock
+rm -f ns1/dot-fallback.db
rm -f ns1/edns-expire.db
rm -f ns1/ixfr-too-big.db ns1/ixfr-too-big.db.jnl
rm -f ns1/sec.db ns2/sec.db
-rm -f ns2/example.db ns2/tsigzone.db ns2/example.db.jnl
+rm -f ns2/example.db ns2/tsigzone.db ns2/example.db.jnl ns2/dot-fallback.db
rm -f ns2/mapped.db
rm -f ns3/example.bk ns3/xfer-stats.bk ns3/tsigzone.bk ns3/example.bk.jnl
rm -f ns3/mapped.bk
--- /dev/null
+dot-fallback. 5 IN SOA ns1.dot-fallback. hostmaster.dot-fallback. 1 3600 3600 3600 3600
+dot-fallback. 5 IN NS ns1.dot-fallback.
+a01.dot-fallback. 5 IN A 1.1.1.1
+a02.dot-fallback. 5 IN A 255.255.255.255
+ns1.dot-fallback. 5 IN A 10.53.0.1
+dot-fallback. 5 IN SOA ns1.dot-fallback. hostmaster.dot-fallback. 1 3600 3600 3600 3600
--- /dev/null
+; 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 5
+
+@ IN SOA ns1 hostmaster 1 3600 3600 3600 3600
+@ NS ns1
+ns1 A 10.53.0.1
+a01 A 1.1.1.1
+a02 A 255.255.255.255
+
type primary;
file "xfer-stats.db";
};
+
+zone "dot-fallback" {
+ type primary;
+ file "dot-fallback.db";
+};
masterfile-format text;
primaries { 10.53.0.100; };
};
+
+zone "dot-fallback" {
+ type secondary;
+ file "dot-fallback.db";
+ primaries {
+ 10.53.0.1 tls ephemeral;
+ 10.53.0.1;
+ };
+};
copy_setports ns4/named.conf.base ns4/named.conf
+cp ns1/dot-fallback.db.in ns1/dot-fallback.db
+
cp ns2/sec.db.in ns2/sec.db
touch -t 200101010000 ns2/sec.db
# Spin to allow the zone to transfer.
#
wait_for_xfer () {
- $DIG $DIGOPTS example. @10.53.0.3 axfr > dig.out.ns3.test$n || return 1
- grep "^;" dig.out.ns3.test$n > /dev/null && return 1
+ ZONE=$1
+ SERVER=$2
+ $DIG $DIGOPTS $ZONE @$SERVER axfr > dig.out.test$n || return 1
+ grep "^;" dig.out.test$n > /dev/null && return 1
return 0
}
-retry_quiet 25 wait_for_xfer || tmp=1
-grep "^;" dig.out.ns3.test$n | cat_i
-digcomp dig1.good dig.out.ns3.test$n || tmp=1
+retry_quiet 25 wait_for_xfer example. 10.53.0.3 || tmp=1
+grep "^;" dig.out.test$n | cat_i
+digcomp dig1.good dig.out.test$n || tmp=1
+if test $tmp != 0 ; then echo_i "failed"; fi
+status=$((status+tmp))
+
+n=$((n+1))
+echo_i "testing zone transfer functionality (fallback to DNS after DoT failed) ($n)"
+tmp=0
+retry_quiet 25 wait_for_xfer dot-fallback. 10.53.0.2 || tmp=1
+grep "^;" dig.out.test$n | cat_i
+digcomp dig3.good dig.out.test$n || tmp=1
if test $tmp != 0 ; then echo_i "failed"; fi
status=$((status+tmp))