]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add tests for rfc2136 operation
authorRuben d'Arco <cyclops@prof-x.net>
Sun, 2 Dec 2012 23:25:46 +0000 (00:25 +0100)
committermind04 <mind04@monshouwer.org>
Fri, 12 Jul 2013 15:08:00 +0000 (17:08 +0200)
87 files changed:
regression-tests/0dyndns-prereq-all/command [new file with mode: 0755]
regression-tests/0dyndns-prereq-all/description [new file with mode: 0755]
regression-tests/0dyndns-prereq-all/expected_result [new file with mode: 0644]
regression-tests/0dyndns-prereq-all/expected_result.narrow [new file with mode: 0644]
regression-tests/0dyndns-prereq-all/expected_result.nsec3 [new file with mode: 0644]
regression-tests/0dyndns-prereq-nxrrset-full/command [new file with mode: 0755]
regression-tests/0dyndns-prereq-nxrrset-full/description [new file with mode: 0755]
regression-tests/0dyndns-prereq-nxrrset-full/expected_result [new file with mode: 0644]
regression-tests/0dyndns-prereq-nxrrset-full/expected_result.narrow [new file with mode: 0644]
regression-tests/0dyndns-prereq-nxrrset-full/expected_result.nsec3 [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-cname/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-delete-cname/description [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-cname/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-mx/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-delete-mx/description [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-mx/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-wildcard/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-delete-wildcard/description [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete-wildcard/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-delete/description [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete/expected_result.narrow [new file with mode: 0644]
regression-tests/1dyndns-update-add-delete/expected_result.nsec3 [new file with mode: 0644]
regression-tests/1dyndns-update-add-invalid-record/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-invalid-record/description [new file with mode: 0644]
regression-tests/1dyndns-update-add-invalid-record/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-add-soa/command [new file with mode: 0755]
regression-tests/1dyndns-update-add-soa/description [new file with mode: 0755]
regression-tests/1dyndns-update-add-soa/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delegate-in-between/command [new file with mode: 0755]
regression-tests/1dyndns-update-delegate-in-between/description [new file with mode: 0755]
regression-tests/1dyndns-update-delegate-in-between/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delegate-in-between/expected_result.narrow [new file with mode: 0755]
regression-tests/1dyndns-update-delegate-in-between/expected_result.nsec3 [new file with mode: 0755]
regression-tests/1dyndns-update-delegate/command [new file with mode: 0755]
regression-tests/1dyndns-update-delegate/description [new file with mode: 0755]
regression-tests/1dyndns-update-delegate/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delegate/expected_result.narrow [new file with mode: 0755]
regression-tests/1dyndns-update-delegate/expected_result.nsec3 [new file with mode: 0755]
regression-tests/1dyndns-update-delete-add-host/command [new file with mode: 0755]
regression-tests/1dyndns-update-delete-add-host/description [new file with mode: 0755]
regression-tests/1dyndns-update-delete-add-host/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delete-add-host/expected_result.narrow [new file with mode: 0644]
regression-tests/1dyndns-update-delete-add-host/expected_result.nsec3 [new file with mode: 0644]
regression-tests/1dyndns-update-delete-multi-add-host/command [new file with mode: 0755]
regression-tests/1dyndns-update-delete-multi-add-host/description [new file with mode: 0644]
regression-tests/1dyndns-update-delete-multi-add-host/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delete-multi-add-host/expected_result.narrow [new file with mode: 0644]
regression-tests/1dyndns-update-delete-multi-add-host/expected_result.nsec3 [new file with mode: 0644]
regression-tests/1dyndns-update-delete-mx-prio/command [new file with mode: 0755]
regression-tests/1dyndns-update-delete-mx-prio/description [new file with mode: 0755]
regression-tests/1dyndns-update-delete-mx-prio/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-delete-ns/command [new file with mode: 0755]
regression-tests/1dyndns-update-delete-ns/description [new file with mode: 0755]
regression-tests/1dyndns-update-delete-ns/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-delete-soa/command [new file with mode: 0755]
regression-tests/1dyndns-update-delete-soa/description [new file with mode: 0755]
regression-tests/1dyndns-update-delete-soa/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-in-between/command [new file with mode: 0755]
regression-tests/1dyndns-update-in-between/description [new file with mode: 0644]
regression-tests/1dyndns-update-in-between/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-in-between/expected_result.narrow [new file with mode: 0755]
regression-tests/1dyndns-update-in-between/expected_result.nsec3 [new file with mode: 0755]
regression-tests/1dyndns-update-replace-a-host/command [new file with mode: 0755]
regression-tests/1dyndns-update-replace-a-host/description [new file with mode: 0644]
regression-tests/1dyndns-update-replace-a-host/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-replace-cname/command [new file with mode: 0755]
regression-tests/1dyndns-update-replace-cname/description [new file with mode: 0755]
regression-tests/1dyndns-update-replace-cname/expected_result [new file with mode: 0755]
regression-tests/1dyndns-update-replace-mx/command [new file with mode: 0755]
regression-tests/1dyndns-update-replace-mx/description [new file with mode: 0755]
regression-tests/1dyndns-update-replace-mx/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-srv/command [new file with mode: 0755]
regression-tests/1dyndns-update-srv/description [new file with mode: 0755]
regression-tests/1dyndns-update-srv/expected_result [new file with mode: 0644]
regression-tests/1dyndns-update-update-ttl/command [new file with mode: 0755]
regression-tests/1dyndns-update-update-ttl/description [new file with mode: 0644]
regression-tests/1dyndns-update-update-ttl/expected_result [new file with mode: 0755]
regression-tests/2dyndns-update-replace-soa/command [new file with mode: 0755]
regression-tests/2dyndns-update-replace-soa/description [new file with mode: 0644]
regression-tests/2dyndns-update-replace-soa/expected_result [new file with mode: 0755]
regression-tests/cleandig
regression-tests/named.conf
regression-tests/runtests
regression-tests/start-test-stop
regression-tests/test.dyndns [new file with mode: 0755]

diff --git a/regression-tests/0dyndns-prereq-all/command b/regression-tests/0dyndns-prereq-all/command
new file mode 100755 (executable)
index 0000000..409228b
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Check if the record really does not exist.
+cleandig host-255.test.dyndns ANY hidesoadetails
+
+# check if a domain exists, this should result in an NXDomain (section 3.2.1)
+# if the check fails, it will delete a record, which should not happen.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxdomain host-255.test.dyndns
+update delete host-1.test.dyndns
+send
+answer
+!
+
+# check if the record is still there.
+cleandig host-1.test.dyndns ANY
+
+# check if the record exists, should result in an NXRRSET (section 3.2.1)
+# if the check fails, it will delete a record. 
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset host-255.test.dyndns A
+update delete host-1.test.dyndns
+send
+answer
+!
+
+# check if the records still exists, and query the record record to be deleted.
+cleandig host-1.test.dyndns A
+cleandig host-2.test.dyndns A
+
+# check if host-2 does not exist, if so, delete host-2.
+# this checks section 3.2.2
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq nxdomain host-2.test.dyndns
+update delete host-2.test.dyndns
+send
+answer
+!
+
+# if the check worked, this record is still there.
+cleandig host-2.test.dyndns A
+
+# check if the specific record type styll exists, if not the case, delete it.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq nxrrset host-2.test.dyndns A
+update delete host-2.test.dyndns
+send
+answer
+!
+
+# if the check worked, this record still exists.
+cleandig host-2.test.dyndns A
+
+# Check ENT records
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxdomain host.test.dyndns 
+send
+answer
+!
diff --git a/regression-tests/0dyndns-prereq-all/description b/regression-tests/0dyndns-prereq-all/description
new file mode 100755 (executable)
index 0000000..577be11
--- /dev/null
@@ -0,0 +1 @@
+This test checks section 3.2.1 and 3.2.3 of RFC2136, which is the prerequisite section.
diff --git a/regression-tests/0dyndns-prereq-all/expected_result b/regression-tests/0dyndns-prereq-all/expected_result
new file mode 100644 (file)
index 0000000..f570a26
--- /dev/null
@@ -0,0 +1,48 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-255.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=A
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/0dyndns-prereq-all/expected_result.narrow b/regression-tests/0dyndns-prereq-all/expected_result.narrow
new file mode 100644 (file)
index 0000000..3f07246
--- /dev/null
@@ -0,0 +1,49 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-255.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+0      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE3 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=A
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/0dyndns-prereq-all/expected_result.nsec3 b/regression-tests/0dyndns-prereq-all/expected_result.nsec3
new file mode 100644 (file)
index 0000000..c216a26
--- /dev/null
@@ -0,0 +1,49 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-255.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+0      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-1.test.dyndns.', qtype=A
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: YXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-2.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXDOMAIN ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/0dyndns-prereq-nxrrset-full/command b/regression-tests/0dyndns-prereq-nxrrset-full/command
new file mode 100755 (executable)
index 0000000..b032800
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# query to see if the records that we need, are actually there.
+cleandig multi.test.dyndns ANY
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset multi.test.dyndns IN A 127.0.0.1
+prereq yxrrset multi.test.dyndns IN A 127.0.0.2
+send
+answer
+!
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset multi.test.dyndns IN A 127.0.0.1
+prereq yxrrset multi.test.dyndns IN A 127.0.0.2
+prereq yxrrset multi.test.dyndns IN A 127.0.0.3
+send
+answer
+!
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset multi.test.dyndns IN A 127.0.0.1
+prereq yxrrset multi.test.dyndns IN A 127.0.0.2
+prereq yxrrset multi.test.dyndns IN A 127.0.0.3
+prereq yxrrset multi.test.dyndns IN A 127.0.0.3
+send
+answer
+!
diff --git a/regression-tests/0dyndns-prereq-nxrrset-full/description b/regression-tests/0dyndns-prereq-nxrrset-full/description
new file mode 100755 (executable)
index 0000000..9bcbd5c
--- /dev/null
@@ -0,0 +1 @@
+This test checks the specific case mentioned in RFC2136 3.2.3, where an RRSet is needed, and not the specific record.
diff --git a/regression-tests/0dyndns-prereq-nxrrset-full/expected_result b/regression-tests/0dyndns-prereq-nxrrset-full/expected_result
new file mode 100644 (file)
index 0000000..729afea
--- /dev/null
@@ -0,0 +1,23 @@
+0      multi.test.dyndns.      IN      A       3600    127.0.0.1
+0      multi.test.dyndns.      IN      A       3600    127.0.0.2
+0      multi.test.dyndns.      IN      A       3600    127.0.0.3
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='multi.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/0dyndns-prereq-nxrrset-full/expected_result.narrow b/regression-tests/0dyndns-prereq-nxrrset-full/expected_result.narrow
new file mode 100644 (file)
index 0000000..41b6916
--- /dev/null
@@ -0,0 +1,24 @@
+0      multi.test.dyndns.      IN      A       3600    127.0.0.1
+0      multi.test.dyndns.      IN      A       3600    127.0.0.2
+0      multi.test.dyndns.      IN      A       3600    127.0.0.3
+0      tntcbdfsihhd24nt96bq9973vd019u43.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U44 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='multi.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/0dyndns-prereq-nxrrset-full/expected_result.nsec3 b/regression-tests/0dyndns-prereq-nxrrset-full/expected_result.nsec3
new file mode 100644 (file)
index 0000000..890c028
--- /dev/null
@@ -0,0 +1,24 @@
+0      multi.test.dyndns.      IN      A       3600    127.0.0.1
+0      multi.test.dyndns.      IN      A       3600    127.0.0.2
+0      multi.test.dyndns.      IN      A       3600    127.0.0.3
+0      tntcbdfsihhd24nt96bq9973vd019u43.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd U36F0TJOOQV1KSPATTO6QNS0VAP731V2 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='multi.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NXRRSET ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
diff --git a/regression-tests/1dyndns-update-add-delete-cname/command b/regression-tests/1dyndns-update-add-delete-cname/command
new file mode 100755 (executable)
index 0000000..bd7d12e
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+#check if the cname exists
+cleandig cname3.test.dyndns CNAME hidesoadetails 
+
+# add mx record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add cname3.test.dyndns. 3600 CNAME cname1.test.dyndns.
+send
+answer
+!
+
+# check if record was really added
+cleandig cname3.test.dyndns CNAME
+
+# delete the just added record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete cname3.test.dyndns. 3600 CNAME cname1.test.dyndns.
+send
+answer
+!
+
+# check if the record was deleted.
+cleandig cname3.test.dyndns CNAME hidesoadetails 
diff --git a/regression-tests/1dyndns-update-add-delete-cname/description b/regression-tests/1dyndns-update-add-delete-cname/description
new file mode 100644 (file)
index 0000000..58fe8e1
--- /dev/null
@@ -0,0 +1,2 @@
+A test to see if RFC2136 add and delete record works properly on a cname record. This is important because CNAME's have a special function
+when they are replaced. This test aims to check add/delete of the cname.
diff --git a/regression-tests/1dyndns-update-add-delete-cname/expected_result b/regression-tests/1dyndns-update-add-delete-cname/expected_result
new file mode 100644 (file)
index 0000000..a096d66
--- /dev/null
@@ -0,0 +1,21 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname3.test.dyndns.', qtype=CNAME
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      cname3.test.dyndns.     IN      CNAME   3600    cname1.test.dyndns.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname3.test.dyndns.', qtype=CNAME
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname3.test.dyndns.', qtype=CNAME
diff --git a/regression-tests/1dyndns-update-add-delete-mx/command b/regression-tests/1dyndns-update-add-delete-mx/command
new file mode 100755 (executable)
index 0000000..ff6acb2
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# check all MX records
+cleandig test.dyndns MX
+
+# add mx record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3000 MX 30 host-3.test.dyndns
+send
+answer
+!
+
+# check if record was really added
+cleandig test.dyndns MX
+
+# delete the just added record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns. 3000 MX 30 host-3.test.dyndns
+send
+answer
+!
+
+# check if the record was deleted.
+cleandig test.dyndns MX
diff --git a/regression-tests/1dyndns-update-add-delete-mx/description b/regression-tests/1dyndns-update-add-delete-mx/description
new file mode 100644 (file)
index 0000000..cece2f2
--- /dev/null
@@ -0,0 +1,3 @@
+A test to see if RFC2136 add and delete record works properly on an MX record,
+this is interesting because the priority is stored seperately in powerdns and 
+it is part of the RDATA.
diff --git a/regression-tests/1dyndns-update-add-delete-mx/expected_result b/regression-tests/1dyndns-update-add-delete-mx/expected_result
new file mode 100644 (file)
index 0000000..ddba226
--- /dev/null
@@ -0,0 +1,32 @@
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3000    30 host-3.test.dyndns.
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+2      host-3.test.dyndns.     IN      A       3600    127.0.0.103
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
diff --git a/regression-tests/1dyndns-update-add-delete-wildcard/command b/regression-tests/1dyndns-update-add-delete-wildcard/command
new file mode 100755 (executable)
index 0000000..1ef7200
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# check if add-delete.test.dyndns exists. It should not.
+cleandig abc.add-delete.test.dyndns ANY hidesoadetails 
+
+# add a record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq nxrrset *.add-delete.test.dyndns TXT
+update add *.add-delete.test.dyndns. 3600 TXT "Wildcard with non-empty terminal"
+send
+answer
+!
+
+# query if the record now exists
+cleandig abc.add-delete.test.dyndns ANY
+cleandig abc1.add-delete.test.dyndns ANY
+
+# delete the just added record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset *.add-delete.test.dyndns TXT
+update delete *.add-delete.test.dyndns.
+send
+answer
+!
+
+# check if the record was deleted.
+cleandig abc.add-delete.test.dyndns ANY hidesoadetails
diff --git a/regression-tests/1dyndns-update-add-delete-wildcard/description b/regression-tests/1dyndns-update-add-delete-wildcard/description
new file mode 100644 (file)
index 0000000..bfc22f8
--- /dev/null
@@ -0,0 +1 @@
+This test performs a simple add and delete of an A-record using RFC2136.
diff --git a/regression-tests/1dyndns-update-add-delete-wildcard/expected_result b/regression-tests/1dyndns-update-add-delete-wildcard/expected_result
new file mode 100644 (file)
index 0000000..50ab009
--- /dev/null
@@ -0,0 +1,24 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='abc.add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      abc.add-delete.test.dyndns.     IN      TXT     3600    "Wildcard with non-empty terminal"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='abc.add-delete.test.dyndns.', qtype=ANY
+0      abc1.add-delete.test.dyndns.    IN      TXT     3600    "Wildcard with non-empty terminal"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='abc1.add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='abc.add-delete.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-add-delete/command b/regression-tests/1dyndns-update-add-delete/command
new file mode 100755 (executable)
index 0000000..aadd4fe
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# check if add-delete.test.dyndns exists. It should not.
+cleandig add-delete.test.dyndns ANY hidesoadetails
+
+# add a record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq nxrrset add-delete.test.dyndns A
+update add add-delete.test.dyndns. 3600 A 127.0.0.108
+send
+answer
+!
+
+# query if the record now exists
+cleandig add-delete.test.dyndns ANY
+
+# delete the just added record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset add-delete.test.dyndns A
+update delete add-delete.test.dyndns.
+send
+answer
+!
+
+# check if the record was deleted.
+cleandig add-delete.test.dyndns ANY hidesoadetails
diff --git a/regression-tests/1dyndns-update-add-delete/description b/regression-tests/1dyndns-update-add-delete/description
new file mode 100644 (file)
index 0000000..bfc22f8
--- /dev/null
@@ -0,0 +1 @@
+This test performs a simple add and delete of an A-record using RFC2136.
diff --git a/regression-tests/1dyndns-update-add-delete/expected_result b/regression-tests/1dyndns-update-add-delete/expected_result
new file mode 100644 (file)
index 0000000..25d8bb1
--- /dev/null
@@ -0,0 +1,21 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      add-delete.test.dyndns. IN      A       3600    127.0.0.108
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-add-delete/expected_result.narrow b/regression-tests/1dyndns-update-add-delete/expected_result.narrow
new file mode 100644 (file)
index 0000000..9c2bbdf
--- /dev/null
@@ -0,0 +1,22 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      add-delete.test.dyndns. IN      A       3600    127.0.0.108
+0      gkhs0ms64101fs1dj19h7no8vn2tp4fk.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd GKHS0MS64101FS1DJ19H7NO8VN2TP4FL A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-add-delete/expected_result.nsec3 b/regression-tests/1dyndns-update-add-delete/expected_result.nsec3
new file mode 100644 (file)
index 0000000..242172f
--- /dev/null
@@ -0,0 +1,22 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      add-delete.test.dyndns. IN      A       3600    127.0.0.108
+0      gkhs0ms64101fs1dj19h7no8vn2tp4fk.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd GOU9AO3RKDCNHQLDF4056M9OIGMTKUH6 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-add-invalid-record/command b/regression-tests/1dyndns-update-add-invalid-record/command
new file mode 100755 (executable)
index 0000000..ce43cff
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+cleandig host-invalid.test.dyndns ANY hidesoadetails
+$testname/sendupdate.pl $nameserver $port
+cleandig host-invalid.test.dyndns ANY hidesoadetails
diff --git a/regression-tests/1dyndns-update-add-invalid-record/description b/regression-tests/1dyndns-update-add-invalid-record/description
new file mode 100644 (file)
index 0000000..e9b2276
--- /dev/null
@@ -0,0 +1,3 @@
+This test tries to add a bogus record. It's an invalid record because not all the 
+specifications have been met. (no type, etc). The test is using DNS::Update from perl
+because nsupdate does not allow you to send bogus records.
diff --git a/regression-tests/1dyndns-update-add-invalid-record/expected_result b/regression-tests/1dyndns-update-add-invalid-record/expected_result
new file mode 100755 (executable)
index 0000000..feb8bff
--- /dev/null
@@ -0,0 +1,7 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-invalid.test.dyndns.', qtype=ANY
+RCODE: FORMERR
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host-invalid.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-add-soa/command b/regression-tests/1dyndns-update-add-soa/command
new file mode 100755 (executable)
index 0000000..703e221
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test2.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050100999 28800 7200 604800 86400
+send
+answer
+!
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test2.dyndns
+update add test2.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050100999 28800 7200 604800 86400
+send
+answer
+!
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test2.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050100999 28800 7200 604800 86400
+send
+answer
+!
+
+cleandig test2.dyndns SOA hidesoadetails
diff --git a/regression-tests/1dyndns-update-add-soa/description b/regression-tests/1dyndns-update-add-soa/description
new file mode 100755 (executable)
index 0000000..c133334
--- /dev/null
@@ -0,0 +1 @@
+This test tries to add SOA records in different ways which should all fail. Soa's are only updated (see 2dyndns-update-replace-soa)
diff --git a/regression-tests/1dyndns-update-add-soa/expected_result b/regression-tests/1dyndns-update-add-soa/expected_result
new file mode 100755 (executable)
index 0000000..9339963
--- /dev/null
@@ -0,0 +1,46 @@
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOTZONE ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOTAUTH ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test2.dyndns.                 IN      SOA
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOTZONE ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      .       IN      NS      518400  a.root-servers.net.
+1      .       IN      NS      518400  b.root-servers.net.
+1      .       IN      NS      518400  c.root-servers.net.
+1      .       IN      NS      518400  d.root-servers.net.
+1      .       IN      NS      518400  e.root-servers.net.
+1      .       IN      NS      518400  f.root-servers.net.
+1      .       IN      NS      518400  g.root-servers.net.
+1      .       IN      NS      518400  h.root-servers.net.
+1      .       IN      NS      518400  i.root-servers.net.
+1      .       IN      NS      518400  j.root-servers.net.
+1      .       IN      NS      518400  k.root-servers.net.
+1      .       IN      NS      518400  l.root-servers.net.
+1      .       IN      NS      518400  m.root-servers.net.
+2      a.root-servers.net.     IN      A       3600000 198.41.0.4
+2      b.root-servers.net.     IN      A       3600000 192.228.79.201
+2      c.root-servers.net.     IN      A       3600000 192.33.4.12
+2      d.root-servers.net.     IN      A       3600000 128.8.10.90
+2      e.root-servers.net.     IN      A       3600000 192.203.230.10
+2      f.root-servers.net.     IN      A       3600000 192.5.5.241
+2      g.root-servers.net.     IN      A       3600000 192.112.36.4
+2      h.root-servers.net.     IN      A       3600000 128.63.2.53
+2      i.root-servers.net.     IN      A       3600000 192.36.148.17
+2      j.root-servers.net.     IN      A       3600000 192.58.128.30
+2      k.root-servers.net.     IN      A       3600000 193.0.14.129
+2      l.root-servers.net.     IN      A       3600000 198.32.64.12
+2      m.root-servers.net.     IN      A       3600000 202.12.27.33
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='test2.dyndns.', qtype=SOA
diff --git a/regression-tests/1dyndns-update-delegate-in-between/command b/regression-tests/1dyndns-update-delegate-in-between/command
new file mode 100755 (executable)
index 0000000..a282f75
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.e.host.test.dyndns ANY dnssec hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add c.host.test.dyndns 3600 NS ns1.c.host.test.dyndns
+update add ns1.c.host.test.dyndns 3600 A 127.0.0.2
+send
+answer
+!
+
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.e.host.test.dyndns ANY dnssec hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete c.host.test.dyndns NS
+send
+answer
+!
+
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.e.host.test.dyndns ANY dnssec hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete ns1.c.host.test.dyndns A
+send
+answer
+!
+
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig b.b.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.e.host.test.dyndns ANY dnssec hidesoadetails
diff --git a/regression-tests/1dyndns-update-delegate-in-between/description b/regression-tests/1dyndns-update-delegate-in-between/description
new file mode 100755 (executable)
index 0000000..96df3a2
--- /dev/null
@@ -0,0 +1,3 @@
+For DNSSEC, PowerDNS uses the Auth and Ordername fields in the database. This tests adds an (delegate) NS and A record
+to the test.dyndns zone, it also deletes these records. The test is rather big because it should cover
+all the scenario's.  This thus validates the correction of these records, known as rectify-zone and cache.
diff --git a/regression-tests/1dyndns-update-delegate-in-between/expected_result b/regression-tests/1dyndns-update-delegate-in-between/expected_result
new file mode 100755 (executable)
index 0000000..0581edf
--- /dev/null
@@ -0,0 +1,392 @@
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   c.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      c.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. NS RRSIG NSEC
+1      c.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. NS RRSIG NSEC
+1      c.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      c.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. NS RRSIG NSEC
+1      c.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. NS RRSIG NSEC
+1      c.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      ns1.c.host.test.dyndns. IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      ns1.c.host.test.dyndns. IN      RRSIG   86400   NSEC 8 5 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   ns1.c.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      ns1.c.host.test.dyndns. IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      ns1.c.host.test.dyndns. IN      RRSIG   86400   NSEC 8 5 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delegate-in-between/expected_result.narrow b/regression-tests/1dyndns-update-delegate-in-between/expected_result.narrow
new file mode 100755 (executable)
index 0000000..b49ef51
--- /dev/null
@@ -0,0 +1,464 @@
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd BQ8UL1D9PIR8BM0BQ7T9OV5CKK8GHKHF
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd UEL5OHQCMEFOO28JDMRCMQ1UGMLO0POE
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+2      ns1.c.host.test.dyndns. IN      RRSIG   3600    A 8 5 3600 [expiry] [inception] [keytag] test.dyndns. ...
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+2      ns1.c.host.test.dyndns. IN      RRSIG   3600    A 8 5 3600 [expiry] [inception] [keytag] test.dyndns. ...
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd BQ8UL1D9PIR8BM0BQ7T9OV5CKK8GHKHF
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd UEL5OHQCMEFOO28JDMRCMQ1UGMLO0POE
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      pjn3mi4alcs21beld7nveruudmhh8t4l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd PJN3MI4ALCS21BELD7NVERUUDMHH8T4N
+1      pjn3mi4alcs21beld7nveruudmhh8t4l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      rnplq1876o9vq8qr599rlr4ism2beht4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd RNPLQ1876O9VQ8QR599RLR4ISM2BEHT6
+1      rnplq1876o9vq8qr599rlr4ism2beht4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd BQ8UL1D9PIR8BM0BQ7T9OV5CKK8GHKHF
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd UEL5OHQCMEFOO28JDMRCMQ1UGMLO0POE
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8V0C5RPU3BNVS3KLJ997NS1CMB4ID023
+1      8v0c5rpu3bnvs3klj997ns1cmb4id021.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd BQ8UL1D9PIR8BM0BQ7T9OV5CKK8GHKHF
+1      bq8ul1d9pir8bm0bq7t9ov5ckk8ghkhd.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd UEL5OHQCMEFOO28JDMRCMQ1UGMLO0POE
+1      uel5ohqcmefoo28jdmrcmq1ugmlo0poc.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delegate-in-between/expected_result.nsec3 b/regression-tests/1dyndns-update-delegate-in-between/expected_result.nsec3
new file mode 100755 (executable)
index 0000000..18c58be
--- /dev/null
@@ -0,0 +1,430 @@
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 2GP5RDNJOQ5OOSPC5O1IH9LALI101DI8 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      c.host.test.dyndns.     IN      NS      3600    ns1.c.host.test.dyndns.
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+2      ns1.c.host.test.dyndns. IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 2GP5RDNJOQ5OOSPC5O1IH9LALI101DI8 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MI A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6OVOD1M5KOSSAIIQPRLAF42PRQRKEAQ7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6OVOD1M5KOSSAIIQPRLAF42PRQRKEAQ7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6OVOD1M5KOSSAIIQPRLAF42PRQRKEAQ7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MI A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6OVOD1M5KOSSAIIQPRLAF42PRQRKEAQ7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P
+1      fgun0ru4oe3g76tr551hg97mpu37b6mi.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lresbbp3lv8blgj9fsgtdmm4q7vj3d6j.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd Q75PNOE7PB74PND6OGN44T5BTUURBHRF A RRSIG
+1      lresbbp3lv8blgj9fsgtdmm4q7vj3d6j.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      r9s1cj8dkmnmenjn95sti8nhh9utpq9k.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd S30OPRHQREKH5SUH6L530KD668ELK9OS
+1      r9s1cj8dkmnmenjn95sti8nhh9utpq9k.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6OVOD1M5KOSSAIIQPRLAF42PRQRKEAQ7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 2GP5RDNJOQ5OOSPC5O1IH9LALI101DI8 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='b.b.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.d.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 2GP5RDNJOQ5OOSPC5O1IH9LALI101DI8 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1      u36f0tjooqv1kspatto6qns0vap731v2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.e.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delegate/command b/regression-tests/1dyndns-update-delegate/command
new file mode 100755 (executable)
index 0000000..491dc07
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+cleandig delegate1.test.dyndns ANY hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add delegate1.test.dyndns 3600 NS ns1.delegate1.test.dyndns
+update add delegate1.test.dyndns 3600 NS ns2.delegate1.test.dyndns
+update add ns1.delegate1.test.dyndns 3600 A 127.0.0.1
+update add ns2.delegate1.test.dyndns 3600 A 127.0.0.2
+send
+answer
+!
+
+cleandig delegate1.test.dyndns ANY
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add ns1.delegate2.test.dyndns 3600 A 127.0.0.1
+update add ns2.delegate2.test.dyndns 3600 A 127.0.0.1
+update add delegate2.test.dyndns 3600 NS ns1.delegate2.test.dyndns
+update add delegate2.test.dyndns 3600 NS ns2.example.com 
+send
+answer
+!
+
+cleandig delegate2.test.dyndns ANY
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete delegate2.test.dyndns NS
+update delete delegate1.test.dyndns NS
+send
+answer
+!
+
+cleandig delegate2.test.dyndns ANY hidesoadetails
+cleandig delegate1.test.dyndns ANY hidesoadetails
+cleandig ns1.delegate1.test.dyndns ANY
+cleandig ns2.delegate1.test.dyndns ANY
+cleandig ns1.delegate2.test.dyndns ANY
+cleandig ns2.delegate2.test.dyndns ANY
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete ns1.delegate2.test.dyndns A
+update delete ns2.delegate2.test.dyndns A 
+update delete ns1.delegate1.test.dyndns A
+update delete ns2.delegate1.test.dyndns A
+send
+answer
+!
+
+cleandig ns1.delegate1.test.dyndns ANY hidesoadetails
+cleandig ns2.delegate1.test.dyndns ANY hidesoadetails
+cleandig ns1.delegate2.test.dyndns ANY hidesoadetails
+cleandig ns2.delegate2.test.dyndns ANY hidesoadetails
diff --git a/regression-tests/1dyndns-update-delegate/description b/regression-tests/1dyndns-update-delegate/description
new file mode 100755 (executable)
index 0000000..c415568
--- /dev/null
@@ -0,0 +1,3 @@
+For DNSSEC, PowerDNS uses the Auth and Ordername fields in the database. This tests adds an (delegate) NS and A record
+to the test.dyndns zone, it also deletes these records. The test is rather big because it should cover
+all the scenario's.  This thus validates the correction of these records, known as rectify-zone.
diff --git a/regression-tests/1dyndns-update-delegate/expected_result b/regression-tests/1dyndns-update-delegate/expected_result
new file mode 100755 (executable)
index 0000000..660f78f
--- /dev/null
@@ -0,0 +1,69 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate1.test.dyndns.  IN      NS      3600    ns1.delegate1.test.dyndns.
+1      delegate1.test.dyndns.  IN      NS      3600    ns2.delegate1.test.dyndns.
+2      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate2.test.dyndns.  IN      NS      3600    ns1.delegate2.test.dyndns.
+1      delegate2.test.dyndns.  IN      NS      3600    ns2.example.com.
+2      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.example.com.        IN      A       120     192.168.1.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+0      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+0      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+0      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+0      ns2.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delegate/expected_result.narrow b/regression-tests/1dyndns-update-delegate/expected_result.narrow
new file mode 100755 (executable)
index 0000000..6ab5e63
--- /dev/null
@@ -0,0 +1,73 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate1.test.dyndns.  IN      NS      3600    ns1.delegate1.test.dyndns.
+1      delegate1.test.dyndns.  IN      NS      3600    ns2.delegate1.test.dyndns.
+2      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate2.test.dyndns.  IN      NS      3600    ns1.delegate2.test.dyndns.
+1      delegate2.test.dyndns.  IN      NS      3600    ns2.example.com.
+2      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.example.com.        IN      A       120     192.168.1.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+0      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+0      rcogol03mg1pg3u4338eo0nvvh6bs567.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd RCOGOL03MG1PG3U4338EO0NVVH6BS568 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+0      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+0      oshpf39sqa4j1ciudbbvtb5dkrijnpss.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd OSHPF39SQA4J1CIUDBBVTB5DKRIJNPST A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+0      asm440u7p2im2slo6iqo92vfp6jtopa0.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ASM440U7P2IM2SLO6IQO92VFP6JTOPA1 A RRSIG
+0      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+0      ns2.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+0      rcd0fo052s6a41ao8ue0b43e1mhv50ds.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd RCD0FO052S6A41AO8UE0B43E1MHV50DT A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delegate/expected_result.nsec3 b/regression-tests/1dyndns-update-delegate/expected_result.nsec3
new file mode 100755 (executable)
index 0000000..df4db66
--- /dev/null
@@ -0,0 +1,73 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate1.test.dyndns.  IN      NS      3600    ns1.delegate1.test.dyndns.
+1      delegate1.test.dyndns.  IN      NS      3600    ns2.delegate1.test.dyndns.
+2      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delegate2.test.dyndns.  IN      NS      3600    ns1.delegate2.test.dyndns.
+1      delegate2.test.dyndns.  IN      NS      3600    ns2.example.com.
+2      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+2      ns2.example.com.        IN      A       120     192.168.1.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegate1.test.dyndns.', qtype=ANY
+0      ns1.delegate1.test.dyndns.      IN      A       3600    127.0.0.1
+0      rcogol03mg1pg3u4338eo0nvvh6bs567.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd S30OPRHQREKH5SUH6L530KD668ELK9OS A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+0      ns2.delegate1.test.dyndns.      IN      A       3600    127.0.0.2
+0      oshpf39sqa4j1ciudbbvtb5dkrijnpss.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd Q75PNOE7PB74PND6OGN44T5BTUURBHRF A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+0      asm440u7p2im2slo6iqo92vfp6jtopa0.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      ns1.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+0      ns2.delegate2.test.dyndns.      IN      A       3600    127.0.0.1
+0      rcd0fo052s6a41ao8ue0b43e1mhv50ds.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd RCOGOL03MG1PG3U4338EO0NVVH6BS567 A RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate1.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns1.delegate2.test.dyndns.', qtype=ANY
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ns2.delegate2.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-add-host/command b/regression-tests/1dyndns-update-delete-add-host/command
new file mode 100755 (executable)
index 0000000..5f24e2b
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# check that the record does not exist.
+cleandig delete-add.test.dyndns ANY
+
+# add the record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete delete-add.test.dyndns. 3600 A 127.0.0.108
+send
+answer
+!
+
+# check if the record is gone
+cleandig delete-add.test.dyndns ANY
+
+# add the record again
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add delete-add.test.dyndns. 3600 A 127.0.0.108
+send
+answer
+!
+
+# check if the record is added.
+cleandig delete-add.test.dyndns ANY
diff --git a/regression-tests/1dyndns-update-delete-add-host/description b/regression-tests/1dyndns-update-delete-add-host/description
new file mode 100755 (executable)
index 0000000..37abe2c
--- /dev/null
@@ -0,0 +1 @@
+This test deletes a record and add's it again. Another record with the same name exists, this test check if we only delete the correct record.
diff --git a/regression-tests/1dyndns-update-delete-add-host/expected_result b/regression-tests/1dyndns-update-delete-add-host/expected_result
new file mode 100755 (executable)
index 0000000..557ddc6
--- /dev/null
@@ -0,0 +1,23 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-add-host/expected_result.narrow b/regression-tests/1dyndns-update-delete-add-host/expected_result.narrow
new file mode 100644 (file)
index 0000000..13355b5
--- /dev/null
@@ -0,0 +1,26 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd SLSCK1ENIA56LRKR5GEP7CLU9J1O5IFO A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd SLSCK1ENIA56LRKR5GEP7CLU9J1O5IFO TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd SLSCK1ENIA56LRKR5GEP7CLU9J1O5IFO A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-add-host/expected_result.nsec3 b/regression-tests/1dyndns-update-delete-add-host/expected_result.nsec3
new file mode 100644 (file)
index 0000000..2c27fd8
--- /dev/null
@@ -0,0 +1,26 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE2 A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE2 TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE2 A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-multi-add-host/command b/regression-tests/1dyndns-update-delete-multi-add-host/command
new file mode 100755 (executable)
index 0000000..0063a52
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# check if the records exist
+cleandig delete-add.test.dyndns ANY
+
+# delete all delete-add.test.dyndns records
+# add-records that we deleted.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete delete-add.test.dyndns.
+send
+answer
+!
+
+# check if the records are gone.
+cleandig delete-add.test.dyndns ANY hidesoadetails
+
+# add-records that we deleted.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add delete-add.test.dyndns. 3600 A 127.0.0.108
+update add delete-add.test.dyndns. 3600 TXT "Should be gone after a while"
+send
+answer
+!
+
+# check if everything is ok again.
+cleandig delete-add.test.dyndns ANY
diff --git a/regression-tests/1dyndns-update-delete-multi-add-host/description b/regression-tests/1dyndns-update-delete-multi-add-host/description
new file mode 100644 (file)
index 0000000..32448ba
--- /dev/null
@@ -0,0 +1,2 @@
+This test performs a delete without a record type (which removes all the items with that name).
+It then adds the records again. Also contains an 'add' to the TXT
diff --git a/regression-tests/1dyndns-update-delete-multi-add-host/expected_result b/regression-tests/1dyndns-update-delete-multi-add-host/expected_result
new file mode 100755 (executable)
index 0000000..ce7dc86
--- /dev/null
@@ -0,0 +1,23 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-multi-add-host/expected_result.narrow b/regression-tests/1dyndns-update-delete-multi-add-host/expected_result.narrow
new file mode 100644 (file)
index 0000000..5529581
--- /dev/null
@@ -0,0 +1,25 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd SLSCK1ENIA56LRKR5GEP7CLU9J1O5IFO A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd SLSCK1ENIA56LRKR5GEP7CLU9J1O5IFO A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-multi-add-host/expected_result.nsec3 b/regression-tests/1dyndns-update-delete-multi-add-host/expected_result.nsec3
new file mode 100644 (file)
index 0000000..7731449
--- /dev/null
@@ -0,0 +1,25 @@
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE2 A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      delete-add.test.dyndns. IN      A       3600    127.0.0.108
+0      delete-add.test.dyndns. IN      TXT     3600    "Should be gone after a while"
+0      slsck1enia56lrkr5gep7clu9j1o5ifn.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TDHV9CBK13JG8DRIVLDHSL3MJI8QQQE2 A TXT RRSIG
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delete-add.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-delete-mx-prio/command b/regression-tests/1dyndns-update-delete-mx-prio/command
new file mode 100755 (executable)
index 0000000..d2d051f
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+cleandig test.dyndns MX hidesoadetails
+
+# Insert a MX record for the test.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns 3600 MX 100 mx1.google.com.
+send
+answer
+!
+
+#check if it exists
+cleandig test.dyndns MX 
+
+# remove a MX record, with the wrong priority, so this should not match.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns 3600 MX 50 mx1.google.com.
+send
+answer
+!
+
+#check that we didn't delete it.
+cleandig test.dyndns MX
+
+# Finally delete it for real.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns 3600 MX 100 mx1.google.com.
+send
+answer
+!
+
+#check that it's gone.
+cleandig test.dyndns MX hidesoadetails
diff --git a/regression-tests/1dyndns-update-delete-mx-prio/description b/regression-tests/1dyndns-update-delete-mx-prio/description
new file mode 100755 (executable)
index 0000000..5288ed5
--- /dev/null
@@ -0,0 +1,2 @@
+This test checks to see if deleting a MX record with a specific Priority works correctly. This is
+interesting because the gsql-backends store priority in a seperate field, where other backends probably store it together with the content (or RDATA).
diff --git a/regression-tests/1dyndns-update-delete-mx-prio/expected_result b/regression-tests/1dyndns-update-delete-mx-prio/expected_result
new file mode 100644 (file)
index 0000000..3ce1c68
--- /dev/null
@@ -0,0 +1,44 @@
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    100 mx1.google.com.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    100 mx1.google.com.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
diff --git a/regression-tests/1dyndns-update-delete-ns/command b/regression-tests/1dyndns-update-delete-ns/command
new file mode 100755 (executable)
index 0000000..f694ce6
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+cleandig test.dyndns NS
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns. NS
+send
+answer
+!
+
+cleandig test.dyndns NS
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns. 3600 NS ns1.test.dyndns. 
+update delete test.dyndns. 3600 NS ns2.test.dyndns. 
+send
+answer
+!
+
+cleandig test.dyndns NS
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns. 3600 NS ns1.test.dyndns.
+send
+answer
+!
+
+cleandig test.dyndns NS
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 NS ns1.test.dyndns. 
+send
+answer
+!
+
+cleandig test.dyndns NS 
+
diff --git a/regression-tests/1dyndns-update-delete-ns/description b/regression-tests/1dyndns-update-delete-ns/description
new file mode 100755 (executable)
index 0000000..e4847ed
--- /dev/null
@@ -0,0 +1 @@
+This test checks if we delete NS records properly from the zone apex. There must always remain 1 NS record at the zone apex.
diff --git a/regression-tests/1dyndns-update-delete-ns/expected_result b/regression-tests/1dyndns-update-delete-ns/expected_result
new file mode 100755 (executable)
index 0000000..4840182
--- /dev/null
@@ -0,0 +1,52 @@
+0      test.dyndns.    IN      NS      3600    ns1.test.dyndns.
+0      test.dyndns.    IN      NS      3600    ns2.test.dyndns.
+2      ns1.test.dyndns.        IN      A       3600    127.0.0.1
+2      ns2.test.dyndns.        IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=NS
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      NS      3600    ns1.test.dyndns.
+0      test.dyndns.    IN      NS      3600    ns2.test.dyndns.
+2      ns1.test.dyndns.        IN      A       3600    127.0.0.1
+2      ns2.test.dyndns.        IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=NS
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      NS      3600    ns1.test.dyndns.
+0      test.dyndns.    IN      NS      3600    ns2.test.dyndns.
+2      ns1.test.dyndns.        IN      A       3600    127.0.0.1
+2      ns2.test.dyndns.        IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=NS
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      NS      3600    ns2.test.dyndns.
+2      ns2.test.dyndns.        IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=NS
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      NS      3600    ns1.test.dyndns.
+0      test.dyndns.    IN      NS      3600    ns2.test.dyndns.
+2      ns1.test.dyndns.        IN      A       3600    127.0.0.1
+2      ns2.test.dyndns.        IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=NS
diff --git a/regression-tests/1dyndns-update-delete-soa/command b/regression-tests/1dyndns-update-delete-soa/command
new file mode 100755 (executable)
index 0000000..090ab90
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+cleandig test.dyndns SOA hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete test.dyndns. SOA
+send
+answer
+!
+
+cleandig test.dyndns SOA hidesoadetails
+
+
diff --git a/regression-tests/1dyndns-update-delete-soa/description b/regression-tests/1dyndns-update-delete-soa/description
new file mode 100755 (executable)
index 0000000..8efbc24
--- /dev/null
@@ -0,0 +1 @@
+Check to see that we cannot delete a SOA record.
diff --git a/regression-tests/1dyndns-update-delete-soa/expected_result b/regression-tests/1dyndns-update-delete-soa/expected_result
new file mode 100755 (executable)
index 0000000..9d979b0
--- /dev/null
@@ -0,0 +1,12 @@
+0      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
diff --git a/regression-tests/1dyndns-update-in-between/command b/regression-tests/1dyndns-update-in-between/command
new file mode 100755 (executable)
index 0000000..3265ea5
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+cleandig host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add d.host.test.dyndns. 3600 A 127.0.0.1
+send
+answer
+!
+
+cleandig host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete d.host.test.dyndns. 3600 A 127.0.0.1
+send
+answer
+!
+
+cleandig host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.a.host.test.dyndns ANY dnssec hidesoadetails
+cleandig c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig a.c.host.test.dyndns ANY dnssec hidesoadetails
+cleandig d.host.test.dyndns ANY dnssec hidesoadetails
+cleandig e.host.test.dyndns ANY dnssec hidesoadetails
+cleandig f.host.test.dyndns ANY dnssec hidesoadetails
diff --git a/regression-tests/1dyndns-update-in-between/description b/regression-tests/1dyndns-update-in-between/description
new file mode 100644 (file)
index 0000000..476501a
--- /dev/null
@@ -0,0 +1 @@
+This test aims to check NSEC and NSEC3 records.
diff --git a/regression-tests/1dyndns-update-in-between/expected_result b/regression-tests/1dyndns-update-in-between/expected_result
new file mode 100755 (executable)
index 0000000..7a44481
--- /dev/null
@@ -0,0 +1,208 @@
+1      delete-add.test.dyndns. IN      NSEC    86400   a.host.test.dyndns. A TXT RRSIG NSEC
+1      delete-add.test.dyndns. IN      RRSIG   86400   NSEC 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delete-add.test.dyndns. IN      NSEC    86400   a.host.test.dyndns. A TXT RRSIG NSEC
+1      delete-add.test.dyndns. IN      RRSIG   86400   NSEC 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   d.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   d.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   d.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   d.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+0      d.host.test.dyndns.     IN      A       3600    127.0.0.1
+0      d.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+0      d.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      d.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      delete-add.test.dyndns. IN      NSEC    86400   a.host.test.dyndns. A TXT RRSIG NSEC
+1      delete-add.test.dyndns. IN      RRSIG   86400   NSEC 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      a.host.test.dyndns.     IN      NSEC    86400   e.host.test.dyndns. A RRSIG NSEC
+1      a.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      e.host.test.dyndns.     IN      NSEC    86400   host-1.test.dyndns. A RRSIG NSEC
+1      e.host.test.dyndns.     IN      RRSIG   86400   NSEC 8 4 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      NSEC    86400   cname1.test.dyndns. NS SOA MX RRSIG NSEC DNSKEY
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   86400   NSEC 8 2 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-in-between/expected_result.narrow b/regression-tests/1dyndns-update-in-between/expected_result.narrow
new file mode 100755 (executable)
index 0000000..b51d8b3
--- /dev/null
@@ -0,0 +1,236 @@
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+0      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N A RRSIG
+0      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      d.host.test.dyndns.     IN      A       3600    127.0.0.1
+0      d.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 9ESKCI2JT1GR4EB97DR5MG4A1NNJN5HL
+1      9eskci2jt1gr4eb97dr5mg4a1nnjn5hj.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR7 A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd ECLK033HJV6D7GBOLF2UAMVD7A9HJULJ
+1      eclk033hjv6d7gbolf2uamvd7a9hjulh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FGUN0RU4OE3G76TR551HG97MPU37B6MJ
+1      fgun0ru4oe3g76tr551hg97mpu37b6mh.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 4LU40MIOAPF67TRU8ES6U204HIFN8P3N
+1      4lu40mioapf67tru8es6u204hifn8p3l.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8TI9TGH8D81FRR5VR4O1O5BVKO42V9DR A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 6F4A5UATP57LKHGBUSC1KCFC51T5DI0D
+1      6f4a5uatp57lkhgbusc1kcfc51t5di0b.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LMRSADK2BB62QPRUAULES5I5AP06CP56
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TL50O2E6J8AJ79R56OLQQ5H6R0H7HVLT
+1      tl50o2e6j8aj79r56olqq5h6r0h7hvlr.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-in-between/expected_result.nsec3 b/regression-tests/1dyndns-update-in-between/expected_result.nsec3
new file mode 100755 (executable)
index 0000000..4ba70f3
--- /dev/null
@@ -0,0 +1,226 @@
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 A RRSIG
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 A RRSIG
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+0      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 A RRSIG
+0      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      d.host.test.dyndns.     IN      A       3600    127.0.0.1
+0      d.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 A RRSIG
+1      4lu40mioapf67tru8es6u204hifn8p3m.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='host.test.dyndns.', qtype=ANY
+0      a.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      a.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+0      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.host.test.dyndns.', qtype=ANY
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+1      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.a.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd FQU365VN7BR5CSV8CG6NE9V8HA6D008P A RRSIG
+1      dsa3ti9nu3apdsvl3f63qlvakv555sr6.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='a.c.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='d.host.test.dyndns.', qtype=ANY
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd DSA3TI9NU3APDSVL3F63QLVAKV555SR6 A RRSIG
+0      8ti9tgh8d81frr5vr4o1o5bvko42v9dq.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+0      e.host.test.dyndns.     IN      A       3600    1.1.1.1
+0      e.host.test.dyndns.     IN      RRSIG   3600    A 8 4 3600 [expiry] [inception] [keytag] test.dyndns. ...
+2      .       IN      OPT     32768   
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='e.host.test.dyndns.', qtype=ANY
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd 8PQJV4B3M0LCFMVAE0HP394LC154L1I7 CNAME RRSIG
+1      4i84rosksbmegcqfnkf6n6ci093h7rq4.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd LRESBBP3LV8BLGJ9FSGTDMM4Q7VJ3D6J
+1      lmrsadk2bb62qpruaules5i5ap06cp55.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      NSEC3   86400   1 1 1 abcd TNTCBDFSIHHD24NT96BQ9973VD019U43 A RRSIG
+1      tdhv9cbk13jg8drivldhsl3mji8qqqe2.test.dyndns.   IN      RRSIG   86400   NSEC3 8 3 86400 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      RRSIG   3600    SOA 8 2 3600 [expiry] [inception] [keytag] test.dyndns. ...
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+2      .       IN      OPT     32768   
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='f.host.test.dyndns.', qtype=ANY
diff --git a/regression-tests/1dyndns-update-replace-a-host/command b/regression-tests/1dyndns-update-replace-a-host/command
new file mode 100755 (executable)
index 0000000..857cf7c
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# query current value.
+cleandig replace.test.dyndns A
+
+# replace the value
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete replace.test.dyndns. A
+update add replace.test.dyndns. 3600 A 127.0.0.2
+send
+answer
+!
+
+cleandig replace.test.dyndns A
+
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+prereq yxrrset replace.test.dyndns. A
+update delete replace.test.dyndns. A
+update add replace.test.dyndns. 3600 A 127.0.0.1
+send
+answer
+!
+
+cleandig replace.test.dyndns A
diff --git a/regression-tests/1dyndns-update-replace-a-host/description b/regression-tests/1dyndns-update-replace-a-host/description
new file mode 100644 (file)
index 0000000..d92ae4e
--- /dev/null
@@ -0,0 +1,2 @@
+A test for RFC2136 which checks section 3.4.2.2 - Replacing a record.
+
diff --git a/regression-tests/1dyndns-update-replace-a-host/expected_result b/regression-tests/1dyndns-update-replace-a-host/expected_result
new file mode 100644 (file)
index 0000000..e8ae0f0
--- /dev/null
@@ -0,0 +1,21 @@
+0      replace.test.dyndns.    IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='replace.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      replace.test.dyndns.    IN      A       3600    127.0.0.2
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='replace.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      replace.test.dyndns.    IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='replace.test.dyndns.', qtype=A
diff --git a/regression-tests/1dyndns-update-replace-cname/command b/regression-tests/1dyndns-update-replace-cname/command
new file mode 100755 (executable)
index 0000000..48e90d2
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+cleandig cname1.test.dyndns CNAME
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add cname1.test.dyndns. 3600 CNAME host-2.test.dyndns.
+send
+answer
+!
+
+cleandig cname1.test.dyndns CNAME
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add cname1.test.dyndns. 3600 CNAME host-1.test.dyndns.
+send
+answer
+!
+
+cleandig cname1.test.dyndns CNAME
diff --git a/regression-tests/1dyndns-update-replace-cname/description b/regression-tests/1dyndns-update-replace-cname/description
new file mode 100755 (executable)
index 0000000..d559fa3
--- /dev/null
@@ -0,0 +1 @@
+A test for RFC2136 which checks section 3.4.2.2 - Replacing CNAME record.
\ No newline at end of file
diff --git a/regression-tests/1dyndns-update-replace-cname/expected_result b/regression-tests/1dyndns-update-replace-cname/expected_result
new file mode 100755 (executable)
index 0000000..5a32bd2
--- /dev/null
@@ -0,0 +1,21 @@
+0      cname1.test.dyndns.     IN      CNAME   3600    host-1.test.dyndns.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname1.test.dyndns.', qtype=CNAME
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      cname1.test.dyndns.     IN      CNAME   3600    host-2.test.dyndns.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname1.test.dyndns.', qtype=CNAME
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      cname1.test.dyndns.     IN      CNAME   3600    host-1.test.dyndns.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='cname1.test.dyndns.', qtype=CNAME
diff --git a/regression-tests/1dyndns-update-replace-mx/command b/regression-tests/1dyndns-update-replace-mx/command
new file mode 100755 (executable)
index 0000000..dba4821
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+cleandig test.dyndns MX 
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3000 MX 10 host-1.test.dyndns.
+send
+answer
+!
+
+cleandig test.dyndns MX
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 MX 10 host-1.test.dyndns.
+send
+answer
+!
+
+cleandig test.dyndns MX
diff --git a/regression-tests/1dyndns-update-replace-mx/description b/regression-tests/1dyndns-update-replace-mx/description
new file mode 100755 (executable)
index 0000000..bd4549c
--- /dev/null
@@ -0,0 +1,2 @@
+A test for RFC2136 which checks section 3.4.2.2 - Replacing a record. 
+In this test, we specifically use MX record, to see if the TTL changes of the MX record with the correct priority.
\ No newline at end of file
diff --git a/regression-tests/1dyndns-update-replace-mx/expected_result b/regression-tests/1dyndns-update-replace-mx/expected_result
new file mode 100644 (file)
index 0000000..2e52380
--- /dev/null
@@ -0,0 +1,30 @@
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3000    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      MX      3600    10 host-1.test.dyndns.
+0      test.dyndns.    IN      MX      3600    20 host-2.test.dyndns.
+2      host-1.test.dyndns.     IN      A       3600    127.0.0.101
+2      host-2.test.dyndns.     IN      A       3600    127.0.0.102
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=MX
diff --git a/regression-tests/1dyndns-update-srv/command b/regression-tests/1dyndns-update-srv/command
new file mode 100755 (executable)
index 0000000..0a4d16c
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+cleandig srv.test.dyndns SRV hidesoadetails
+
+# Insert a SRV record
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add srv.test.dyndns 3600 SRV 0 100 389 server1
+send
+answer
+!
+cleandig srv.test.dyndns SRV
+
+# Insert anthoer with different prio, and update the other.
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add srv.test.dyndns 3600 SRV 1 100 389 server2
+update add srv.test.dyndns 3601 SRV 0 100 389 server1
+send
+answer
+!
+cleandig srv.test.dyndns SRV
+
+# And cleanup
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update delete srv.test.dyndns SRV
+send
+!
+
+cleandig srv.test.dyndns SRV hidesoadetails
diff --git a/regression-tests/1dyndns-update-srv/description b/regression-tests/1dyndns-update-srv/description
new file mode 100755 (executable)
index 0000000..40eaf5a
--- /dev/null
@@ -0,0 +1,2 @@
+This test checks to see if SRV records are parsed/handled correctly when adding/updating/deleting
+via RFC2136.
diff --git a/regression-tests/1dyndns-update-srv/expected_result b/regression-tests/1dyndns-update-srv/expected_result
new file mode 100644 (file)
index 0000000..8506f83
--- /dev/null
@@ -0,0 +1,25 @@
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='srv.test.dyndns.', qtype=SRV
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      srv.test.dyndns.        IN      SRV     3600    0 100 389 server1.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='srv.test.dyndns.', qtype=SRV
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      srv.test.dyndns.        IN      SRV     3600    1 100 389 server2.
+0      srv.test.dyndns.        IN      SRV     3601    0 100 389 server1.
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='srv.test.dyndns.', qtype=SRV
+1      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='srv.test.dyndns.', qtype=SRV
diff --git a/regression-tests/1dyndns-update-update-ttl/command b/regression-tests/1dyndns-update-update-ttl/command
new file mode 100755 (executable)
index 0000000..71de538
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+cleandig ttl.test.dyndns A
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add ttl.test.dyndns. 31337 A 127.0.0.1
+send
+answer
+!
+
+cleandig ttl.test.dyndns A
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add ttl.test.dyndns. 3600 A 127.0.0.1
+send
+answer
+!
+
+cleandig ttl.test.dyndns A
diff --git a/regression-tests/1dyndns-update-update-ttl/description b/regression-tests/1dyndns-update-update-ttl/description
new file mode 100644 (file)
index 0000000..31ce46d
--- /dev/null
@@ -0,0 +1 @@
+A test for RFC2136 which checks section 3.4.2.2 - Update the TTL, which occurs if the record + content is the same.
diff --git a/regression-tests/1dyndns-update-update-ttl/expected_result b/regression-tests/1dyndns-update-update-ttl/expected_result
new file mode 100755 (executable)
index 0000000..40fb99d
--- /dev/null
@@ -0,0 +1,21 @@
+0      ttl.test.dyndns.        IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ttl.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      ttl.test.dyndns.        IN      A       31337   127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ttl.test.dyndns.', qtype=A
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      ttl.test.dyndns.        IN      A       3600    127.0.0.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='ttl.test.dyndns.', qtype=A
diff --git a/regression-tests/2dyndns-update-replace-soa/command b/regression-tests/2dyndns-update-replace-soa/command
new file mode 100755 (executable)
index 0000000..3607483
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+cleandig test.dyndns SOA hidesoadetails
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050101000 28800 7200 604800 86400
+send
+answer
+!
+
+cleandig test.dyndns SOA
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050101000 28800 7200 604800 86400
+send
+answer
+!
+
+cleandig test.dyndns SOA
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050100999 28800 7200 604800 86400
+send
+answer
+!
+
+cleandig test.dyndns SOA
+
+nsupdate <<! | sed 's/\, id:.*/ ID_REPLACED/'
+server $nameserver $port
+zone test.dyndns
+update add test.dyndns. 3600 SOA ns2.test.dyndns. ahu.example.dyndns. 2050101001 28800 7200 604800 86400
+send
+answer
+!
+
+cleandig test.dyndns SOA
diff --git a/regression-tests/2dyndns-update-replace-soa/description b/regression-tests/2dyndns-update-replace-soa/description
new file mode 100644 (file)
index 0000000..37beb78
--- /dev/null
@@ -0,0 +1,4 @@
+A test for RFC2136 which checks section 3.4.2.2 - Replacing a SOA record.
+This is special because we can 'set' the soa serial. 
+This test also does not use the hidesoaserial option because we want to compare that serial. It's also the reason why the test is run only once.
+
diff --git a/regression-tests/2dyndns-update-replace-soa/expected_result b/regression-tests/2dyndns-update-replace-soa/expected_result
new file mode 100755 (executable)
index 0000000..fb1e70c
--- /dev/null
@@ -0,0 +1,39 @@
+0      test.dyndns.    IN      SOA     3600    ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      SOA     3600    ns2.test.dyndns. ahu.example.dyndns. 2050101000 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      SOA     3600    ns2.test.dyndns. ahu.example.dyndns. 2050101000 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      SOA     3600    ns2.test.dyndns. ahu.example.dyndns. 2050101000 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR ID_REPLACED
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns.                  IN      SOA
+
+0      test.dyndns.    IN      SOA     3600    ns2.test.dyndns. ahu.example.dyndns. 2050101001 28800 7200 604800 86400
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='test.dyndns.', qtype=SOA
index be9def6d39bd662aed9291f7b272fc8cc4a734bc..c41f06899e398998ccbbf88664cb088d75371dc2 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 if [ ! -e ${testsdir}/${testname}/use.drill ]
 then
-../pdns/sdig $nameserver $port "$1" $2 $3 $4 | LC_ALL=C sort
+../pdns/sdig $nameserver $port "$1" $2 $3 $4 $5 | LC_ALL=C sort
 fi
 ../pdns/nsec3dig $nameserver $port "$1" $2 > ${testsdir}/${testname}/nsec3dig.out 2>&1
 drill -a -p $port -o rd -D -S -k trustedkeys "$1" $2 @$nameserver > ${testsdir}/${testname}/drillchase.out 2>&1 
@@ -20,6 +20,6 @@ then
 fi
 if [ -e ${testsdir}/${testname}/use.drill ]
 then
-       cat ${testsdir}/${testname}/drill.out
+       cat ${testsdir}/${testname}/drill.out | sed 's/ ;.*//'
 fi
 grep -iw bogus ${testsdir}/${testname}/*.out
index 4da1377575f71844b3fa3227f5f4dd4d7922fd30..1b3ff8f413384a597cbbc798285f09c27886bbb1 100644 (file)
@@ -17,6 +17,14 @@ zone "test.com"{
        file "./test.com";
 };
 
+zone "test.dyndns" {
+       type master;
+       file "./test.dyndns";
+       allow-update {
+               127.0.0.0/8;
+       };
+};
+
 zone "wtest.com"{
        type master;
        file "./wtest.com";
index 327930621a4df23989802b69baf6ec99ccd5b174..9b78dd1e716bcbdc6057d3ae370d1c20b2259be1 100755 (executable)
@@ -1,6 +1,11 @@
 #!/bin/bash
 PATH=.:$PATH
 
+spectest=$1
+[ -z $spectest ] && spectest=""
+
+make -C ../pdns sdig nsec3dig || exit 1
+
 rm -f test-results failed_tests passed_tests skipped_tests ${testsdir}/*/real_result ${testsdir}/*/diff ${testsdir}/*/*.out
 
 passed=0
@@ -29,7 +34,7 @@ do
                SKIPIT=1
                result="        Skipped test $a"
        else
-               for reason in $skipreasons "$context"
+               for reason in $skipreasons $context
                do
                        if [ -e $a/skip.$reason ]
                        then
@@ -39,6 +44,13 @@ do
                        fi
                done
        fi
+
+       if [ "$spectest" != "" ] && [ "$spectest" != "$testname" ] && [ "$testname" != "00dnssec-grabkeys" ]
+       then
+               SKIPIT=1
+               result="        Skipped test $a because it's not the specified single test"
+       fi
+
                                
        if [ $SKIPIT = 1 ]
        then
index f6e37314715d58d0e0fc6aa402b9b590a670494b..5e6e96eb2f918e63502901563ee3fd0c57f146ff 100755 (executable)
@@ -50,6 +50,10 @@ port=$1
 context=$2
 [ -z "$context" ] && context=bind-dnssec
 wait=$3
+[ -z "$wait" ] && wait=nowait
+cachettl=$4
+[ -z "$cachettl" ] && cachettl=0
+spectest=$5
 
 testsdir=.
 
@@ -58,7 +62,7 @@ then
        set +x
        grep -v '^#' << '__EOF__'
 
-Usage: ./start-test-stop <port> [<context>] [wait]
+Usage: ./start-test-stop <port> [<context>] [wait|nowait] [<cachettl>] [<specifictest>]
 
 context is one of:
 bind bind-dnssec bind-dnssec-nsec3 bind-dnssec-nsec3-optout bind-dnssec-nsec3-narrow
@@ -73,16 +77,26 @@ remotebackend-pipe-dnssec remotebackend-unix-dnssec remotebackend-http-dnssec
 #remotebackend-pipe-nsec3 remotebackend-unix-nsec3 remotebackend-http-nsec3
 #remotebackend-pipe-nsec3-narrow remotebackend-unix-nsec3-narrow remotebackend-http-nsec3-narrow
 
-add -presigned to any bind, gmysql or gsqlite3 test (except narrow)
-to test presigned operation
+* Add -presigned to any gmysql test (except narrow) to
+  test presigned operation
 
-add 'wait' (literally) after the context to not kill 
-pdns_server immediately after testing
+* Add 'wait' (literally) after the context to not kill
+  pdns_server immediately after testing. 'nowait' will kill it.
+
+* A cachettl can be supplied if you want to run tests with a
+  ttl setting set. The default cachettl is 0.
+
+* Specifictest can be used to run only one single test.
 __EOF__
        exit 1
 fi
 
 make -C ../pdns sdig nsec3dig || exit 1
+# Copy zones because the test might modify them (well only the dyndns stuff, but let's make this work for others as well)
+for zone in $(grep zone named.conf  | cut -f2 -d\")
+do
+       cp $zone $zone.backup
+done
 
 rm -f pdns*.pid
 
@@ -673,7 +687,7 @@ fi
 
 ## TODO: give pdns a few seconds to startup or fail, then check if it did not fail
 ## TODO: give sdig a timeout
-nameserver=127.0.0.1 ./runtests
+nameserver=127.0.0.1 ./runtests $spectest
 ./toxml
 ./totar
 if [ "$wait" = "wait" ]
@@ -684,6 +698,11 @@ fi
 kill $(cat pdns*.pid)
 rm pdns*.pid
 
+for zone in $(grep zone named.conf  | cut -f2 -d\")
+do
+       mv $zone.backup $zone
+done
+
 if [ -s "./failed_tests" ]
 then
        for t in `cat failed_tests`
@@ -693,3 +712,4 @@ then
        done
        exit 1
 fi
+
diff --git a/regression-tests/test.dyndns b/regression-tests/test.dyndns
new file mode 100755 (executable)
index 0000000..ae28cf7
--- /dev/null
@@ -0,0 +1,31 @@
+$TTL 3600
+$ORIGIN test.dyndns.
+@              IN      SOA     ns1.test.dyndns.        ahu.example.dyndns. (  2012060701
+                       8H ; refresh
+                       2H ; retry
+                       1W ; expire
+                       1D ; default_ttl
+                       )
+
+@                      IN      NS      ns1.test.dyndns.
+@                      IN      NS      ns2.test.dyndns.
+@                      IN      MX      10 host-1.test.dyndns.
+@                      IN      MX      20 host-2.test.dyndns.
+ns1                    IN      A       127.0.0.1
+ns2                    IN      A       127.0.0.2
+cname1                 IN      CNAME   host-1.test.dyndns.
+cname2                 IN      CNAME   host-2.test.dyndns.
+txt                    IN      TXT     "This is some text"
+host-1                 IN      A       127.0.0.101
+host-2                 IN      A       127.0.0.102
+host-3                 IN      A       127.0.0.103
+multi                  IN      A       127.0.0.1
+multi                  IN      A       127.0.0.2
+multi                  IN      A       127.0.0.3
+replace                        IN      A       127.0.0.1
+delete-add             IN      A       127.0.0.108
+delete-add             IN      TXT     "Should be gone after a while"
+ttl                    IN      A       127.0.0.1
+*.wild                 IN      A       127.0.1.255
+a.host                 IN      A       1.1.1.1
+e.host                 IN      A       1.1.1.1