From 6463ee0f40046a75c98d1d7c2f46eb679d87a90b Mon Sep 17 00:00:00 2001 From: Matthijs Mekking Date: Fri, 19 Mar 2021 15:21:17 +0100 Subject: [PATCH 1/3] Add inline-signing with $INCLUDE test Add a test case for inline-signing for a zone with an $INCLUDE statement. There is already a test for a missing include file, this one adds a test for a zone with an include file that does exist. Test if the record in the included file is loaded. --- bin/tests/system/inline/ns3/include.db.in | 1 + bin/tests/system/inline/ns3/master7.db.in | 24 +++++++++++++++++++++++ bin/tests/system/inline/tests.sh | 24 +++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 bin/tests/system/inline/ns3/include.db.in create mode 100644 bin/tests/system/inline/ns3/master7.db.in diff --git a/bin/tests/system/inline/ns3/include.db.in b/bin/tests/system/inline/ns3/include.db.in new file mode 100644 index 0000000000..7468708387 --- /dev/null +++ b/bin/tests/system/inline/ns3/include.db.in @@ -0,0 +1 @@ +f A 10.0.0.7 diff --git a/bin/tests/system/inline/ns3/master7.db.in b/bin/tests/system/inline/ns3/master7.db.in new file mode 100644 index 0000000000..cec8ad7efc --- /dev/null +++ b/bin/tests/system/inline/ns3/master7.db.in @@ -0,0 +1,24 @@ +; Copyright (C) Internet Systems Consortium, Inc. ("ISC") +; +; 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 http://mozilla.org/MPL/2.0/. +; +; See the COPYRIGHT file distributed with this work for additional +; information regarding copyright ownership. + +$TTL 300 ; 5 minutes +@ IN SOA ns3 . ( + 2000042412 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) + NS ns3 +ns3 A 10.53.0.3 + +c A 10.0.0.3 +e A 10.0.0.5 + +$INCLUDE include.db diff --git a/bin/tests/system/inline/tests.sh b/bin/tests/system/inline/tests.sh index 7d7df7487f..818bfea257 100755 --- a/bin/tests/system/inline/tests.sh +++ b/bin/tests/system/inline/tests.sh @@ -961,6 +961,30 @@ $DIFF dig.out.ns3.test$n.1 dig.out.ns3.test$n.2 > /dev/null || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` +n=`expr $n + 1` +echo_i "check inline-signing with an include file ($n)" +ret=0 +$DIG $DIGOPTS +short @10.53.0.3 master SOA > dig.out.ns3.test$n.1 || ret=1 +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` +sleep 1 +nextpart ns3/named.run > /dev/null +cp ns3/master7.db.in ns3/master.db +rndc_reload ns3 10.53.0.3 +_includefile_loaded() { + $DIG $DIGOPTS @10.53.0.3 f.master A > dig.out.ns3.test$n + grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || return 1 + grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || return 1 + grep "10\.0\.0\.7" dig.out.ns3.test$n > /dev/null || return 1 + return 0 +} +retry_quiet 10 _includefile_loaded +# Sanity check: the SOA record should be changed +$DIG $DIGOPTS +short @10.53.0.3 master SOA > dig.out.ns3.test$n.2 || ret=1 +$DIFF dig.out.ns3.test$n.1 dig.out.ns3.test$n.2 > /dev/null && ret=1 +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + n=`expr $n + 1` echo_i "test add/del zone combinations ($n)" ret=0 From 96583e7c40bf25605385c8a71500fcfeaaa1833e Mon Sep 17 00:00:00 2001 From: Matthijs Mekking Date: Fri, 19 Mar 2021 15:23:01 +0100 Subject: [PATCH 2/3] Fix inline test with missing $INCLUDE The test case for a zone with a missing include file was wrong for two reasons: 1. It was loading the wrong file (master5 instead of master6) 2. It did actually not set the $ret variable to 1 if the test failed (it should default to ret=1 and clear the variable if the appropriate log is found). --- bin/tests/system/inline/setup.sh | 1 + bin/tests/system/inline/tests.sh | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/tests/system/inline/setup.sh b/bin/tests/system/inline/setup.sh index eb7d314c2a..61bcd4ab02 100644 --- a/bin/tests/system/inline/setup.sh +++ b/bin/tests/system/inline/setup.sh @@ -30,6 +30,7 @@ cp ns3/master.db.in ns3/nsec3.db cp ns3/master.db.in ns3/externalkey.db cp ns3/master.db.in ns3/delayedkeys.db cp ns3/master.db.in ns3/removedkeys-primary.db +cp ns3/include.db.in ns3/include.db mkdir ns3/removedkeys diff --git a/bin/tests/system/inline/tests.sh b/bin/tests/system/inline/tests.sh index 818bfea257..e3794d3336 100755 --- a/bin/tests/system/inline/tests.sh +++ b/bin/tests/system/inline/tests.sh @@ -940,17 +940,17 @@ status=`expr $status + $ret` n=`expr $n + 1` echo_i "check that reloading errors prevent synchronization ($n)" -ret=0 +ret=1 $DIG $DIGOPTS +short @10.53.0.3 master SOA > dig.out.ns3.test$n.1 || ret=1 sleep 1 nextpart ns3/named.run > /dev/null -cp ns3/master5.db.in ns3/master.db +cp ns3/master6.db.in ns3/master.db rndc_reload ns3 10.53.0.3 for i in 1 2 3 4 5 6 7 8 9 10 do - if nextpart ns3/named.run | - grep "not loaded due to errors" > /dev/null + if nextpart ns3/named.run | grep "not loaded due to errors" > /dev/null then + ret=0 break fi sleep 1 From bad5c3cf7cd71e04e5a1f99ff926ba641e0790ca Mon Sep 17 00:00:00 2001 From: Matthijs Mekking Date: Fri, 19 Mar 2021 15:39:20 +0100 Subject: [PATCH 3/3] Document relative path of $INCLUDE Add to the ARM from where relative paths are searched. --- doc/arm/reference.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/arm/reference.rst b/doc/arm/reference.rst index e51f320df4..edd2d7337f 100644 --- a/doc/arm/reference.rst +++ b/doc/arm/reference.rst @@ -6294,9 +6294,10 @@ The ``$INCLUDE`` Directive Syntax: ``$INCLUDE`` filename [origin] [comment] This reads and processes the file ``filename`` as if it were included in the -file at this point. If ``origin`` is specified, the file is processed -with ``$ORIGIN`` set to that value; otherwise, the current ``$ORIGIN`` is -used. +file at this point. The ``filename`` can be an absolute path, or a relative +path. In the latter case it is read from ``named``'s working directory. If +``origin`` is specified, the file is processed with ``$ORIGIN`` set to that +value; otherwise, the current ``$ORIGIN`` is used. The origin and the current domain name revert to the values they had prior to the ``$INCLUDE`` once the file has been read.