Replace the "mirror" zone option with "type mirror;"
Use a zone's 'type' field instead of the value of its DNS_ZONEOPT_MIRROR option for checking whether it is a mirror zone. This makes said zone option and its associated helper function, dns_zone_mirror(), redundant, so remove them. Remove a check specific to mirror zones from named_zone_reusable() since another check in that function ensures that changing a zone's type prevents it from being reused during reconfiguration.
This commit is contained in:
committed by
Ondřej Surý
parent
e1bb8de6f0
commit
2cb9e8a020
17
bin/tests/system/mirror/README
Normal file
17
bin/tests/system/mirror/README
Normal file
@@ -0,0 +1,17 @@
|
||||
Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
|
||||
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
|
||||
|
||||
This test checks whether zones configured with "type mirror;" behave as
|
||||
expected.
|
||||
|
||||
ns1 is an authoritative-only server. It only serves the root zone, which is
|
||||
mirrored by ns3.
|
||||
|
||||
ns2 is an authoritative-only server. It serves a number of zones, some of which
|
||||
are delegated to it by ns1 and used in recursive resolution tests aimed at ns3
|
||||
while others are only served so that ns3 has a primary server to mirror zones
|
||||
from during various tests of the mirror zone implementation.
|
||||
|
||||
ns3 is a recursive resolver. It has a number of mirror zones configured. This
|
||||
is the only server whose behavior is being examined by this system test.
|
||||
@@ -37,62 +37,54 @@ zone "." {
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.1; };
|
||||
mirror yes;
|
||||
file "root.db.mirror";
|
||||
};
|
||||
|
||||
zone "initially-unavailable" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "initially-unavailable.db.mirror";
|
||||
use-alt-transfer-source no;
|
||||
};
|
||||
|
||||
zone "verify-axfr" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-axfr.db.mirror";
|
||||
};
|
||||
|
||||
zone "verify-ixfr" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-ixfr.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-load" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-load.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-reconfig" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-reconfig.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-unsigned" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-unsigned.db.mirror";
|
||||
};
|
||||
|
||||
zone "verify-untrusted" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-untrusted.db.mirror";
|
||||
};
|
||||
|
||||
|
||||
@@ -21,6 +21,4 @@ copy_setports ns3/named.conf.in ns3/named.conf
|
||||
( cd ns1 && $SHELL -e sign.sh )
|
||||
|
||||
cat ns2/verify-axfr.db.bad.signed > ns2/verify-axfr.db.signed
|
||||
cat ns2/verify-ixfr.db.original.signed > ns2/verify-ixfr.db.signed
|
||||
cat ns2/verify-load.db.bad.signed > ns3/verify-load.db.mirror
|
||||
cat ns2/verify-untrusted.db.original.signed > ns2/verify-untrusted.db.signed
|
||||
|
||||
@@ -380,7 +380,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a yes -> no \"mirror\" setting change ($n)"
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a mirror -> slave zone type change ($n)"
|
||||
ret=0
|
||||
# Sanity check before we start.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-reconfig SOA > dig.out.ns3.test$n.1 2>&1 || ret=1
|
||||
@@ -390,13 +390,13 @@ grep "flags:.* ad" dig.out.ns3.test$n.1 > /dev/null || ret=1
|
||||
# Reconfigure the zone so that it is no longer a mirror zone.
|
||||
# (NOTE: Keep the embedded newline in the sed function list below.)
|
||||
sed '/^zone "verify-reconfig" {$/,/^};$/ {
|
||||
s/mirror yes;/mirror no;/
|
||||
s/type mirror;/type slave;/
|
||||
}' ns3/named.conf > ns3/named.conf.modified
|
||||
mv ns3/named.conf.modified ns3/named.conf
|
||||
nextpart ns3/named.run > /dev/null
|
||||
$RNDCCMD 10.53.0.3 reconfig > /dev/null 2>&1
|
||||
# Zones whose "mirror" setting was changed should not be reusable, which means
|
||||
# the tested zone should have been reloaded from disk.
|
||||
# Zones whose type was changed should not be reusable, which means the tested
|
||||
# zone should have been reloaded from disk.
|
||||
wait_for_load verify-reconfig ${ORIGINAL_SERIAL} ns3/named.run
|
||||
# Ensure responses sourced from the reconfigured zone have AA=1 and AD=0.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-reconfig SOA > dig.out.ns3.test$n.2 2>&1 || ret=1
|
||||
@@ -407,7 +407,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a no -> yes \"mirror\" setting change ($n)"
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a slave -> mirror zone type change ($n)"
|
||||
ret=0
|
||||
# Put an incorrectly signed version of the zone in the zone file used by ns3.
|
||||
nextpart ns3/named.run > /dev/null
|
||||
@@ -415,7 +415,7 @@ cat ns2/verify-reconfig.db.bad.signed > ns3/verify-reconfig.db.mirror
|
||||
# Reconfigure the zone so that it is a mirror zone again.
|
||||
# (NOTE: Keep the embedded newline in the sed function list below.)
|
||||
sed '/^zone "verify-reconfig" {$/,/^};$/ {
|
||||
s/mirror no;/mirror yes;/
|
||||
s/type slave;/type mirror;/
|
||||
}' ns3/named.conf > ns3/named.conf.modified
|
||||
mv ns3/named.conf.modified ns3/named.conf
|
||||
$RNDCCMD 10.53.0.3 reconfig > /dev/null 2>&1
|
||||
|
||||
Reference in New Issue
Block a user