xref: /minix3/external/bsd/bind/dist/bin/tests/system/inline/tests.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#!/bin/sh
2*00b67f09SDavid van Moolenbroek#
3*00b67f09SDavid van Moolenbroek# Copyright (C) 2011-2014  Internet Systems Consortium, Inc. ("ISC")
4*00b67f09SDavid van Moolenbroek#
5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
8*00b67f09SDavid van Moolenbroek#
9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
16*00b67f09SDavid van Moolenbroek
17*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.18 2012/02/23 06:53:15 marka Exp
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=..
20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van MoolenbroekDIGOPTS="+tcp +dnssec"
23*00b67f09SDavid van Moolenbroek
24*00b67f09SDavid van Moolenbroekstatus=0
25*00b67f09SDavid van Moolenbroekn=0
26*00b67f09SDavid van Moolenbroek
27*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -nsec3param 1 0 0 - nsec3 > /dev/null 2>&1
28*00b67f09SDavid van Moolenbroek
29*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0
30*00b67f09SDavid van Moolenbroekdo
31*00b67f09SDavid van Moolenbroek	nsec3param=`$DIG +short @10.53.0.3 -p 5300 nsec3param nsec3.`
32*00b67f09SDavid van Moolenbroek	test "$nsec3param" = "1 0 0 -" && break
33*00b67f09SDavid van Moolenbroek	sleep 1
34*00b67f09SDavid van Moolenbroekdone
35*00b67f09SDavid van Moolenbroek
36*00b67f09SDavid van Moolenbroek# Loop until retransfer3 has been transferred.
37*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0
38*00b67f09SDavid van Moolenbroekdo
39*00b67f09SDavid van Moolenbroek        ans=0
40*00b67f09SDavid van Moolenbroek        $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ans=1
41*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
42*00b67f09SDavid van Moolenbroekdone
43*00b67f09SDavid van Moolenbroek
44*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0
45*00b67f09SDavid van Moolenbroekdo
46*00b67f09SDavid van Moolenbroek	nsec3param=`$DIG +short @10.53.0.3 -p 5300 nsec3param retransfer3.`
47*00b67f09SDavid van Moolenbroek	test "$nsec3param" = "1 0 0 -" && break
48*00b67f09SDavid van Moolenbroek	sleep 1
49*00b67f09SDavid van Moolenbroekdone
50*00b67f09SDavid van Moolenbroek
51*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
52*00b67f09SDavid van Moolenbroekecho "I:checking that rrsigs are replaced with ksk only"
53*00b67f09SDavid van Moolenbroekret=0
54*00b67f09SDavid van Moolenbroek$DIG @10.53.0.3 -p 5300 axfr nsec3. |
55*00b67f09SDavid van Moolenbroek	awk '/RRSIG NSEC3/ {a[$1]++} END { for (i in a) {if (a[i] != 1) exit (1)}}' || ret=1
56*00b67f09SDavid van Moolenbroek#$DIG @10.53.0.3 -p 5300 axfr nsec3. | grep -w NSEC | grep -v "IN.RRSIG.NSEC"
57*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
58*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
59*00b67f09SDavid van Moolenbroek
60*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
61*00b67f09SDavid van Moolenbroekecho "I:checking that the zone is signed on initial transfer ($n)"
62*00b67f09SDavid van Moolenbroekret=0
63*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
64*00b67f09SDavid van Moolenbroekdo
65*00b67f09SDavid van Moolenbroek	ret=0
66*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1
67*00b67f09SDavid van Moolenbroek	keys=`grep '^Done signing' signing.out.test$n | wc -l`
68*00b67f09SDavid van Moolenbroek	[ $keys = 2 ] || ret=1
69*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
70*00b67f09SDavid van Moolenbroek	sleep 1
71*00b67f09SDavid van Moolenbroekdone
72*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
73*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
74*00b67f09SDavid van Moolenbroek
75*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
76*00b67f09SDavid van Moolenbroekecho "I:checking expired signatures are updated on load ($n)"
77*00b67f09SDavid van Moolenbroekret=0
78*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 +noall +answer +dnssec expired SOA > dig.out.ns3.test$n
79*00b67f09SDavid van Moolenbroekexpiry=`awk '$4 == "RRSIG" { print $9 }' dig.out.ns3.test$n`
80*00b67f09SDavid van Moolenbroek[ "$expiry" = "20110101000000" ] && ret=1
81*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
82*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
83*00b67f09SDavid van Moolenbroek
84*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
85*00b67f09SDavid van Moolenbroekecho "I:checking removal of private type record via 'rndc signing -clear' ($n)"
86*00b67f09SDavid van Moolenbroekret=0
87*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1
88*00b67f09SDavid van Moolenbroekkeys=`sed -n -e 's/Done signing with key \(.*\)$/\1/p' signing.out.test$n`
89*00b67f09SDavid van Moolenbroekfor key in $keys; do
90*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear ${key} bits > /dev/null || ret=1
91*00b67f09SDavid van Moolenbroek	break;	# We only want to remove 1 record for now.
92*00b67f09SDavid van Moolenbroekdone 2>&1 |sed 's/^/I:ns3 /'
93*00b67f09SDavid van Moolenbroek
94*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
95*00b67f09SDavid van Moolenbroekdo
96*00b67f09SDavid van Moolenbroek	ans=0
97*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1
98*00b67f09SDavid van Moolenbroek        num=`grep "Done signing with" signing.out.test$n | wc -l`
99*00b67f09SDavid van Moolenbroek	[ $num = 1 ] && break
100*00b67f09SDavid van Moolenbroek	sleep 1
101*00b67f09SDavid van Moolenbroekdone
102*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
103*00b67f09SDavid van Moolenbroek
104*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
105*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
106*00b67f09SDavid van Moolenbroek
107*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
108*00b67f09SDavid van Moolenbroekecho "I:checking private type was properly signed ($n)"
109*00b67f09SDavid van Moolenbroekret=0
110*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 bits TYPE65534 > dig.out.ns6.test$n
111*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ret=1
112*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1
113*00b67f09SDavid van Moolenbroek
114*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
115*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
116*00b67f09SDavid van Moolenbroek
117*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
118*00b67f09SDavid van Moolenbroekecho "I:checking removal of remaining private type record via 'rndc signing -clear all' ($n)"
119*00b67f09SDavid van Moolenbroekret=0
120*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear all bits > /dev/null || ret=1
121*00b67f09SDavid van Moolenbroek
122*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
123*00b67f09SDavid van Moolenbroekdo
124*00b67f09SDavid van Moolenbroek	ans=0
125*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1
126*00b67f09SDavid van Moolenbroek	grep "No signing records found" signing.out.test$n > /dev/null || ans=1
127*00b67f09SDavid van Moolenbroek	[ $ans = 1 ] || break
128*00b67f09SDavid van Moolenbroek	sleep 1
129*00b67f09SDavid van Moolenbroekdone
130*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
131*00b67f09SDavid van Moolenbroek
132*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
133*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
134*00b67f09SDavid van Moolenbroek
135*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
136*00b67f09SDavid van Moolenbroekecho "I:checking negative private type response was properly signed ($n)"
137*00b67f09SDavid van Moolenbroekret=0
138*00b67f09SDavid van Moolenbroeksleep 1
139*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 bits TYPE65534 > dig.out.ns6.test$n
140*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns6.test$n > /dev/null || ret=1
141*00b67f09SDavid van Moolenbroekgrep "ANSWER: 0," dig.out.ns6.test$n > /dev/null || ret=1
142*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1
143*00b67f09SDavid van Moolenbroek
144*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
145*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
146*00b67f09SDavid van Moolenbroek
147*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
148*00b67f09SDavid van Moolenbroekzone bits
149*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300
150*00b67f09SDavid van Moolenbroekupdate add added.bits 0 A 1.2.3.4
151*00b67f09SDavid van Moolenbroeksend
152*00b67f09SDavid van MoolenbroekEOF
153*00b67f09SDavid van Moolenbroek
154*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
155*00b67f09SDavid van Moolenbroekecho "I:checking that the record is added on the hidden master ($n)"
156*00b67f09SDavid van Moolenbroekret=0
157*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 added.bits A > dig.out.ns2.test$n
158*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1
159*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1
160*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
161*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
162*00b67f09SDavid van Moolenbroek
163*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
164*00b67f09SDavid van Moolenbroekecho "I:checking that update has been transfered and has been signed ($n)"
165*00b67f09SDavid van Moolenbroekret=0
166*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
167*00b67f09SDavid van Moolenbroekdo
168*00b67f09SDavid van Moolenbroek	ret=0
169*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 added.bits A > dig.out.ns3.test$n
170*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
171*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
172*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
173*00b67f09SDavid van Moolenbroek	sleep 1
174*00b67f09SDavid van Moolenbroekdone
175*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
176*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
177*00b67f09SDavid van Moolenbroek
178*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
179*00b67f09SDavid van Moolenbroekzone bits
180*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300
181*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072400 20 20 1814400 3600
182*00b67f09SDavid van Moolenbroeksend
183*00b67f09SDavid van MoolenbroekEOF
184*00b67f09SDavid van Moolenbroek
185*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
186*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial on hidden master ($n)"
187*00b67f09SDavid van Moolenbroekret=0
188*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n
189*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1
190*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1
191*00b67f09SDavid van Moolenbroekgrep "2011072400" dig.out.ns2.test$n > /dev/null || ret=1
192*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
193*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
194*00b67f09SDavid van Moolenbroek
195*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
196*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial in signed zone ($n)"
197*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
198*00b67f09SDavid van Moolenbroekdo
199*00b67f09SDavid van Moolenbroek	ret=0
200*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n
201*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
202*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
203*00b67f09SDavid van Moolenbroek	grep "2011072400" dig.out.ns3.test$n > /dev/null || ret=1
204*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
205*00b67f09SDavid van Moolenbroek	sleep 1
206*00b67f09SDavid van Moolenbroekdone
207*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
208*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
209*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
210*00b67f09SDavid van Moolenbroek
211*00b67f09SDavid van Moolenbroekecho "I:checking that the zone is signed on initial transfer, noixfr ($n)"
212*00b67f09SDavid van Moolenbroekret=0
213*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
214*00b67f09SDavid van Moolenbroekdo
215*00b67f09SDavid van Moolenbroek	ret=0
216*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list noixfr > signing.out.test$n 2>&1
217*00b67f09SDavid van Moolenbroek	keys=`grep '^Done signing' signing.out.test$n | wc -l`
218*00b67f09SDavid van Moolenbroek	[ $keys = 2 ] || ret=1
219*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
220*00b67f09SDavid van Moolenbroek	sleep 1
221*00b67f09SDavid van Moolenbroekdone
222*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
223*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
224*00b67f09SDavid van Moolenbroek
225*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
226*00b67f09SDavid van Moolenbroekzone noixfr
227*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300
228*00b67f09SDavid van Moolenbroekupdate add added.noixfr 0 A 1.2.3.4
229*00b67f09SDavid van Moolenbroeksend
230*00b67f09SDavid van MoolenbroekEOF
231*00b67f09SDavid van Moolenbroek
232*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
233*00b67f09SDavid van Moolenbroekecho "I:checking that the record is added on the hidden master, noixfr ($n)"
234*00b67f09SDavid van Moolenbroekret=0
235*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 added.noixfr A > dig.out.ns4.test$n
236*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1
237*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1
238*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
239*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
240*00b67f09SDavid van Moolenbroek
241*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
242*00b67f09SDavid van Moolenbroekecho "I:checking that update has been transfered and has been signed, noixfr ($n)"
243*00b67f09SDavid van Moolenbroekret=0
244*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
245*00b67f09SDavid van Moolenbroekdo
246*00b67f09SDavid van Moolenbroek	ret=0
247*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 added.noixfr A > dig.out.ns3.test$n
248*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
249*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
250*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
251*00b67f09SDavid van Moolenbroek	sleep 1
252*00b67f09SDavid van Moolenbroekdone
253*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
254*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
255*00b67f09SDavid van Moolenbroek
256*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
257*00b67f09SDavid van Moolenbroekzone noixfr
258*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300
259*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072400 20 20 1814400 3600
260*00b67f09SDavid van Moolenbroeksend
261*00b67f09SDavid van MoolenbroekEOF
262*00b67f09SDavid van Moolenbroek
263*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
264*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial on hidden master, noixfr ($n)"
265*00b67f09SDavid van Moolenbroekret=0
266*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n
267*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1
268*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1
269*00b67f09SDavid van Moolenbroekgrep "2011072400" dig.out.ns4.test$n > /dev/null || ret=1
270*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
271*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
272*00b67f09SDavid van Moolenbroek
273*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
274*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial in signed zone, noixfr ($n)"
275*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
276*00b67f09SDavid van Moolenbroekdo
277*00b67f09SDavid van Moolenbroek	ret=0
278*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n
279*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
280*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
281*00b67f09SDavid van Moolenbroek	grep "2011072400" dig.out.ns3.test$n > /dev/null || ret=1
282*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
283*00b67f09SDavid van Moolenbroek	sleep 1
284*00b67f09SDavid van Moolenbroekdone
285*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
286*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
287*00b67f09SDavid van Moolenbroek
288*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
289*00b67f09SDavid van Moolenbroekecho "I:checking that the master zone signed on initial load ($n)"
290*00b67f09SDavid van Moolenbroekret=0
291*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
292*00b67f09SDavid van Moolenbroekdo
293*00b67f09SDavid van Moolenbroek	ret=0
294*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master  > signing.out.test$n 2>&1
295*00b67f09SDavid van Moolenbroek	keys=`grep '^Done signing' signing.out.test$n | wc -l`
296*00b67f09SDavid van Moolenbroek	[ $keys = 2 ] || ret=1
297*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
298*00b67f09SDavid van Moolenbroek	sleep 1
299*00b67f09SDavid van Moolenbroekdone
300*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
301*00b67f09SDavid van Moolenbroek
302*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
303*00b67f09SDavid van Moolenbroekecho "I:checking removal of private type record via 'rndc signing -clear' (master) ($n)"
304*00b67f09SDavid van Moolenbroekret=0
305*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1
306*00b67f09SDavid van Moolenbroekkeys=`sed -n -e 's/Done signing with key \(.*\)$/\1/p' signing.out.test$n`
307*00b67f09SDavid van Moolenbroekfor key in $keys; do
308*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear ${key} master > /dev/null || ret=1
309*00b67f09SDavid van Moolenbroek	break;	# We only want to remove 1 record for now.
310*00b67f09SDavid van Moolenbroekdone 2>&1 |sed 's/^/I:ns3 /'
311*00b67f09SDavid van Moolenbroek
312*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
313*00b67f09SDavid van Moolenbroekdo
314*00b67f09SDavid van Moolenbroek	ans=0
315*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1
316*00b67f09SDavid van Moolenbroek        num=`grep "Done signing with" signing.out.test$n | wc -l`
317*00b67f09SDavid van Moolenbroek	[ $num = 1 ] && break
318*00b67f09SDavid van Moolenbroek	sleep 1
319*00b67f09SDavid van Moolenbroekdone
320*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
321*00b67f09SDavid van Moolenbroek
322*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
323*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
324*00b67f09SDavid van Moolenbroek
325*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
326*00b67f09SDavid van Moolenbroekecho "I:checking private type was properly signed (master) ($n)"
327*00b67f09SDavid van Moolenbroekret=0
328*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 master TYPE65534 > dig.out.ns6.test$n
329*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ret=1
330*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1
331*00b67f09SDavid van Moolenbroek
332*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
333*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
334*00b67f09SDavid van Moolenbroek
335*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
336*00b67f09SDavid van Moolenbroekecho "I:checking removal of remaining private type record via 'rndc signing -clear' (master) ($n)"
337*00b67f09SDavid van Moolenbroekret=0
338*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear all master > /dev/null || ret=1
339*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
340*00b67f09SDavid van Moolenbroekdo
341*00b67f09SDavid van Moolenbroek	ans=0
342*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1
343*00b67f09SDavid van Moolenbroek	grep "No signing records found" signing.out.test$n > /dev/null || ans=1
344*00b67f09SDavid van Moolenbroek	[ $ans = 1 ] || break
345*00b67f09SDavid van Moolenbroek	sleep 1
346*00b67f09SDavid van Moolenbroekdone
347*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
348*00b67f09SDavid van Moolenbroek
349*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
350*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
351*00b67f09SDavid van Moolenbroek
352*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
353*00b67f09SDavid van Moolenbroekecho "I:check adding of record to unsigned master ($n)"
354*00b67f09SDavid van Moolenbroekret=0
355*00b67f09SDavid van Moolenbroekcp ns3/master2.db.in ns3/master.db
356*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload master || ret=1
357*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
358*00b67f09SDavid van Moolenbroekdo
359*00b67f09SDavid van Moolenbroek	ans=0
360*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 e.master A > dig.out.ns3.test$n
361*00b67f09SDavid van Moolenbroek	grep "10.0.0.5" dig.out.ns3.test$n > /dev/null || ans=1
362*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1
363*00b67f09SDavid van Moolenbroek	[ $ans = 1 ] || break
364*00b67f09SDavid van Moolenbroek	sleep 1
365*00b67f09SDavid van Moolenbroekdone
366*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
367*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
368*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
369*00b67f09SDavid van Moolenbroek
370*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
371*00b67f09SDavid van Moolenbroekecho "I:check adding record fails when SOA serial not changed ($n)"
372*00b67f09SDavid van Moolenbroekret=0
373*00b67f09SDavid van Moolenbroekecho "c A 10.0.0.3" >> ns3/master.db
374*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload || ret=1
375*00b67f09SDavid van Moolenbroeksleep 1
376*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 c.master A > dig.out.ns3.test$n
377*00b67f09SDavid van Moolenbroekgrep "NXDOMAIN" dig.out.ns3.test$n > /dev/null || ret=1
378*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
379*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
380*00b67f09SDavid van Moolenbroek
381*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
382*00b67f09SDavid van Moolenbroekecho "I:check adding record works after updating SOA serial ($n)"
383*00b67f09SDavid van Moolenbroekret=0
384*00b67f09SDavid van Moolenbroekcp ns3/master3.db.in ns3/master.db
385*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload master || ret=1
386*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
387*00b67f09SDavid van Moolenbroekdo
388*00b67f09SDavid van Moolenbroek	ans=0
389*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 c.master A > dig.out.ns3.test$n
390*00b67f09SDavid van Moolenbroek	grep "10.0.0.3" dig.out.ns3.test$n > /dev/null || ans=1
391*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1
392*00b67f09SDavid van Moolenbroek	[ $ans = 1 ] || break
393*00b67f09SDavid van Moolenbroek	sleep 1
394*00b67f09SDavid van Moolenbroekdone
395*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
396*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
397*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
398*00b67f09SDavid van Moolenbroek
399*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
400*00b67f09SDavid van Moolenbroekecho "I:check the added record was properly signed ($n)"
401*00b67f09SDavid van Moolenbroekret=0
402*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 e.master A > dig.out.ns6.test$n
403*00b67f09SDavid van Moolenbroekgrep "10.0.0.5" dig.out.ns6.test$n > /dev/null || ans=1
404*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ans=1
405*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ans=1
406*00b67f09SDavid van Moolenbroek
407*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
408*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
409*00b67f09SDavid van Moolenbroek
410*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
411*00b67f09SDavid van Moolenbroekecho "I:checking that the dynamic master zone signed on initial load ($n)"
412*00b67f09SDavid van Moolenbroekret=0
413*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
414*00b67f09SDavid van Moolenbroekdo
415*00b67f09SDavid van Moolenbroek	ret=0
416*00b67f09SDavid van Moolenbroek	$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list dynamic > signing.out.test$n 2>&1
417*00b67f09SDavid van Moolenbroek	keys=`grep '^Done signing' signing.out.test$n | wc -l`
418*00b67f09SDavid van Moolenbroek	[ $keys = 2 ] || ret=1
419*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
420*00b67f09SDavid van Moolenbroek	sleep 1
421*00b67f09SDavid van Moolenbroekdone
422*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
423*00b67f09SDavid van Moolenbroek
424*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
425*00b67f09SDavid van Moolenbroekecho "I:checking master zone that was updated while offline is correct ($n)"
426*00b67f09SDavid van Moolenbroekret=0
427*00b67f09SDavid van Moolenbroekserial=`$DIG $DIGOPTS +short @10.53.0.3 -p 5300 updated SOA | awk '{print $3}'`
428*00b67f09SDavid van Moolenbroek# serial should have changed
429*00b67f09SDavid van Moolenbroek[ "$serial" = "2000042407" ] && ret=1
430*00b67f09SDavid van Moolenbroek# e.updated should exist and should be signed
431*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 e.updated A > dig.out.ns3.test$n
432*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
433*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
434*00b67f09SDavid van Moolenbroek# updated.db.signed.jnl should exist, should have the source serial
435*00b67f09SDavid van Moolenbroek# of master2.db, and should show a minimal diff: no more than 8 added
436*00b67f09SDavid van Moolenbroek# records (SOA/RRSIG, 2 x NSEC/RRSIG, A/RRSIG), and 4 removed records
437*00b67f09SDavid van Moolenbroek# (SOA/RRSIG, NSEC/RRSIG).
438*00b67f09SDavid van Moolenbroekserial=`$JOURNALPRINT ns3/updated.db.signed.jnl | head -1 | awk '{print $4}'`
439*00b67f09SDavid van Moolenbroek[ "$serial" = "2000042408" ] || ret=1
440*00b67f09SDavid van Moolenbroekdiffsize=`$JOURNALPRINT ns3/updated.db.signed.jnl | wc -l`
441*00b67f09SDavid van Moolenbroek[ "$diffsize" -le 13 ] || ret=1
442*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
443*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
444*00b67f09SDavid van Moolenbroek
445*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
446*00b67f09SDavid van Moolenbroekecho "I:checking adding of record to unsigned master using UPDATE ($n)"
447*00b67f09SDavid van Moolenbroekret=0
448*00b67f09SDavid van Moolenbroek
449*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] && { ret=1 ; echo "I:journal exists (pretest)" ; }
450*00b67f09SDavid van Moolenbroek
451*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
452*00b67f09SDavid van Moolenbroekzone dynamic
453*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300
454*00b67f09SDavid van Moolenbroekupdate add e.dynamic 0 A 1.2.3.4
455*00b67f09SDavid van Moolenbroeksend
456*00b67f09SDavid van MoolenbroekEOF
457*00b67f09SDavid van Moolenbroek
458*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] || { ret=1 ; echo "I:journal does not exist (posttest)" ; }
459*00b67f09SDavid van Moolenbroek
460*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
461*00b67f09SDavid van Moolenbroekdo
462*00b67f09SDavid van Moolenbroek	ans=0
463*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 e.dynamic > dig.out.ns3.test$n
464*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1
465*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1
466*00b67f09SDavid van Moolenbroek	grep "1.2.3.4" dig.out.ns3.test$n > /dev/null || ans=1
467*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
468*00b67f09SDavid van Moolenbroek	sleep 1
469*00b67f09SDavid van Moolenbroekdone
470*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || { ret=1; echo "I:signed record not found"; cat dig.out.ns3.test$n ; }
471*00b67f09SDavid van Moolenbroek
472*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
473*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
474*00b67f09SDavid van Moolenbroek
475*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
476*00b67f09SDavid van Moolenbroekecho "I:stop bump in the wire signer server ($n)"
477*00b67f09SDavid van Moolenbroekret=0
478*00b67f09SDavid van Moolenbroek$PERL ../stop.pl . ns3 || ret=1
479*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
480*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
481*00b67f09SDavid van Moolenbroek
482*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
483*00b67f09SDavid van Moolenbroekecho "I:restart bump in the wire signer server ($n)"
484*00b67f09SDavid van Moolenbroekret=0
485*00b67f09SDavid van Moolenbroek$PERL ../start.pl --noclean --restart . ns3 || ret=1
486*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
487*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
488*00b67f09SDavid van Moolenbroek
489*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
490*00b67f09SDavid van Moolenbroekzone bits
491*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300
492*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072450 20 20 1814400 3600
493*00b67f09SDavid van Moolenbroeksend
494*00b67f09SDavid van MoolenbroekEOF
495*00b67f09SDavid van Moolenbroek
496*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
497*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial on hidden master ($n)"
498*00b67f09SDavid van Moolenbroekret=0
499*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n
500*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1
501*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1
502*00b67f09SDavid van Moolenbroekgrep "2011072450" dig.out.ns2.test$n > /dev/null || ret=1
503*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
504*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
505*00b67f09SDavid van Moolenbroek
506*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
507*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial in signed zone ($n)"
508*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
509*00b67f09SDavid van Moolenbroekdo
510*00b67f09SDavid van Moolenbroek	ret=0
511*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n
512*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
513*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
514*00b67f09SDavid van Moolenbroek	grep "2011072450" dig.out.ns3.test$n > /dev/null || ret=1
515*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
516*00b67f09SDavid van Moolenbroek	sleep 1
517*00b67f09SDavid van Moolenbroekdone
518*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
519*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
520*00b67f09SDavid van Moolenbroek
521*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
522*00b67f09SDavid van Moolenbroekzone noixfr
523*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300
524*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072450 20 20 1814400 3600
525*00b67f09SDavid van Moolenbroeksend
526*00b67f09SDavid van MoolenbroekEOF
527*00b67f09SDavid van Moolenbroek
528*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
529*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial on hidden master, noixfr ($n)"
530*00b67f09SDavid van Moolenbroekret=0
531*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n
532*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1
533*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1
534*00b67f09SDavid van Moolenbroekgrep "2011072450" dig.out.ns4.test$n > /dev/null || ret=1
535*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
536*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
537*00b67f09SDavid van Moolenbroek
538*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
539*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial in signed zone, noixfr ($n)"
540*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
541*00b67f09SDavid van Moolenbroekdo
542*00b67f09SDavid van Moolenbroek	ret=0
543*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n
544*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
545*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
546*00b67f09SDavid van Moolenbroek	grep "2011072450" dig.out.ns3.test$n > /dev/null || ret=1
547*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
548*00b67f09SDavid van Moolenbroek	sleep 1
549*00b67f09SDavid van Moolenbroekdone
550*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
551*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
552*00b67f09SDavid van Moolenbroek
553*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
554*00b67f09SDavid van Moolenbroekzone bits
555*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300
556*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072460 20 20 1814400 3600
557*00b67f09SDavid van Moolenbroeksend
558*00b67f09SDavid van MoolenbroekEOF
559*00b67f09SDavid van Moolenbroek
560*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
561*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on hidden master ($n)"
562*00b67f09SDavid van Moolenbroekret=0
563*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n
564*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1
565*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1
566*00b67f09SDavid van Moolenbroekgrep "2011072460" dig.out.ns2.test$n > /dev/null || ret=1
567*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
568*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
569*00b67f09SDavid van Moolenbroek
570*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
571*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on signed zone ($n)"
572*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
573*00b67f09SDavid van Moolenbroekdo
574*00b67f09SDavid van Moolenbroek	ret=0
575*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n
576*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
577*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
578*00b67f09SDavid van Moolenbroek	grep "2011072460" dig.out.ns3.test$n > /dev/null || ret=1
579*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
580*00b67f09SDavid van Moolenbroek	sleep 1
581*00b67f09SDavid van Moolenbroekdone
582*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
583*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
584*00b67f09SDavid van Moolenbroek
585*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
586*00b67f09SDavid van Moolenbroekzone noixfr
587*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300
588*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072460 20 20 1814400 3600
589*00b67f09SDavid van Moolenbroeksend
590*00b67f09SDavid van MoolenbroekEOF
591*00b67f09SDavid van Moolenbroek
592*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
593*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on hidden master, noixfr ($n)"
594*00b67f09SDavid van Moolenbroekret=0
595*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n
596*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1
597*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1
598*00b67f09SDavid van Moolenbroekgrep "2011072460" dig.out.ns4.test$n > /dev/null || ret=1
599*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
600*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
601*00b67f09SDavid van Moolenbroek
602*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
603*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on signed zone, noixfr ($n)"
604*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
605*00b67f09SDavid van Moolenbroekdo
606*00b67f09SDavid van Moolenbroek	ret=0
607*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n
608*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
609*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
610*00b67f09SDavid van Moolenbroek	grep "2011072460" dig.out.ns3.test$n > /dev/null || ret=1
611*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
612*00b67f09SDavid van Moolenbroek	sleep 1
613*00b67f09SDavid van Moolenbroekdone
614*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
615*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
616*00b67f09SDavid van Moolenbroek
617*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
618*00b67f09SDavid van Moolenbroekecho "I:checking turning on of inline signing in a slave zone via reload ($n)"
619*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.5 -p 5300 +dnssec bits SOA > dig.out.ns5.test$n
620*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns5.test$n > /dev/null || ret=1
621*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns5.test$n > /dev/null || ret=1
622*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:setup broken"; fi
623*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
624*00b67f09SDavid van Moolenbroekcp ns5/named.conf.post ns5/named.conf
625*00b67f09SDavid van Moolenbroek(cd ns5; $KEYGEN -q -r $RANDFILE bits) > /dev/null 2>&1
626*00b67f09SDavid van Moolenbroek(cd ns5; $KEYGEN -q -r $RANDFILE -f KSK bits) > /dev/null 2>&1
627*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.5 -p 9953 reload 2>&1 | sed 's/^/I:ns5 /'
628*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10
629*00b67f09SDavid van Moolenbroekdo
630*00b67f09SDavid van Moolenbroek	ret=0
631*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.5 -p 5300 bits SOA > dig.out.ns5.test$n
632*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns5.test$n > /dev/null || ret=1
633*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns5.test$n > /dev/null || ret=1
634*00b67f09SDavid van Moolenbroek	if [ $ret = 0 ]; then break; fi
635*00b67f09SDavid van Moolenbroek	sleep 1
636*00b67f09SDavid van Moolenbroekdone
637*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
638*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
639*00b67f09SDavid van Moolenbroek
640*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
641*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of dynamic inline zone no change ($n)"
642*00b67f09SDavid van Moolenbroekret=0
643*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze dynamic > freeze.test$n 2>&1 || { echo "I: rndc freeze dynamic failed" ; sed 's/^/I:/' < freeze.test$n ; ret=1;  }
644*00b67f09SDavid van Moolenbroeksleep 1
645*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw dynamic > thaw.test$n 2>&1 || { echo "I: rndc thaw dynamic failed" ; ret=1; }
646*00b67f09SDavid van Moolenbroeksleep 1
647*00b67f09SDavid van Moolenbroekgrep "zone dynamic/IN (unsigned): ixfr-from-differences: unchanged" ns3/named.run > /dev/null ||  ret=1
648*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
649*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
650*00b67f09SDavid van Moolenbroek
651*00b67f09SDavid van Moolenbroek
652*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
653*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of dynamic inline zone ($n)"
654*00b67f09SDavid van Moolenbroekret=0
655*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze dynamic > freeze.test$n 2>&1 || ret=1
656*00b67f09SDavid van Moolenbroeksleep 1
657*00b67f09SDavid van Moolenbroekawk '$2 == ";" && $3 == "serial" { printf("%d %s %s\n", $1 + 1, $2, $3); next; }
658*00b67f09SDavid van Moolenbroek     { print; }
659*00b67f09SDavid van Moolenbroek     END { print "freeze1.dynamic. 0 TXT freeze1"; } ' ns3/dynamic.db > ns3/dynamic.db.new
660*00b67f09SDavid van Moolenbroekmv ns3/dynamic.db.new ns3/dynamic.db
661*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw dynamic > thaw.test$n 2>&1 || ret=1
662*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
663*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
664*00b67f09SDavid van Moolenbroek
665*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
666*00b67f09SDavid van Moolenbroekecho "I:check added record freeze1.dynamic ($n)"
667*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
668*00b67f09SDavid van Moolenbroekdo
669*00b67f09SDavid van Moolenbroek    ret=0
670*00b67f09SDavid van Moolenbroek    $DIG $DIGOPTS @10.53.0.3 -p 5300 freeze1.dynamic TXT > dig.out.ns3.test$n
671*00b67f09SDavid van Moolenbroek    grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
672*00b67f09SDavid van Moolenbroek    grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
673*00b67f09SDavid van Moolenbroek    test $ret = 0 && break
674*00b67f09SDavid van Moolenbroek    sleep 1
675*00b67f09SDavid van Moolenbroekdone
676*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
677*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
678*00b67f09SDavid van Moolenbroek
679*00b67f09SDavid van Moolenbroek# allow 1 second so that file time stamps change
680*00b67f09SDavid van Moolenbroeksleep 1
681*00b67f09SDavid van Moolenbroek
682*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
683*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of server ($n)"
684*00b67f09SDavid van Moolenbroekret=0
685*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze > freeze.test$n 2>&1 || ret=1
686*00b67f09SDavid van Moolenbroeksleep 1
687*00b67f09SDavid van Moolenbroekawk '$2 == ";" && $3 == "serial" { printf("%d %s %s\n", $1 + 1, $2, $3); next; }
688*00b67f09SDavid van Moolenbroek     { print; }
689*00b67f09SDavid van Moolenbroek     END { print "freeze2.dynamic. 0 TXT freeze2"; } ' ns3/dynamic.db > ns3/dynamic.db.new
690*00b67f09SDavid van Moolenbroekmv ns3/dynamic.db.new ns3/dynamic.db
691*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw > thaw.test$n 2>&1 || ret=1
692*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
693*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
694*00b67f09SDavid van Moolenbroek
695*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
696*00b67f09SDavid van Moolenbroekecho "I:check added record freeze2.dynamic ($n)"
697*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
698*00b67f09SDavid van Moolenbroekdo
699*00b67f09SDavid van Moolenbroek    ret=0
700*00b67f09SDavid van Moolenbroek    $DIG $DIGOPTS @10.53.0.3 -p 5300 freeze2.dynamic TXT > dig.out.ns3.test$n
701*00b67f09SDavid van Moolenbroek    grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1
702*00b67f09SDavid van Moolenbroek    grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1
703*00b67f09SDavid van Moolenbroek    test $ret = 0 && break
704*00b67f09SDavid van Moolenbroek    sleep 1
705*00b67f09SDavid van Moolenbroekdone
706*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
707*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
708*00b67f09SDavid van Moolenbroek
709*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
710*00b67f09SDavid van Moolenbroekecho "I:check rndc reload allows reuse of inline-signing zones ($n)"
711*00b67f09SDavid van Moolenbroekret=0
712*00b67f09SDavid van Moolenbroek{ $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload 2>&1 || ret=1 ; } |
713*00b67f09SDavid van Moolenbroeksed 's/^/I:ns3 /'
714*00b67f09SDavid van Moolenbroekgrep "not reusable" ns3/named.run > /dev/null 2>&1 && ret=1
715*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
716*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
717*00b67f09SDavid van Moolenbroek
718*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
719*00b67f09SDavid van Moolenbroekecho "I:check rndc sync removes both signed and unsigned journals ($n)"
720*00b67f09SDavid van Moolenbroekret=0
721*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] || ret=1
722*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.signed.jnl ] || ret=1
723*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 sync -clean dynamic 2>&1 || ret=1
724*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] && ret=1
725*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.signed.jnl ] && ret=1
726*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
727*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
728*00b67f09SDavid van Moolenbroek
729*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF
730*00b67f09SDavid van Moolenbroekzone retransfer
731*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300
732*00b67f09SDavid van Moolenbroekupdate add added.retransfer 0 A 1.2.3.4
733*00b67f09SDavid van Moolenbroeksend
734*00b67f09SDavid van Moolenbroek
735*00b67f09SDavid van MoolenbroekEOF
736*00b67f09SDavid van Moolenbroek
737*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
738*00b67f09SDavid van Moolenbroekecho "I:checking that the retransfer record is added on the hidden master ($n)"
739*00b67f09SDavid van Moolenbroekret=0
740*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 added.retransfer A > dig.out.ns2.test$n
741*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1
742*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1
743*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
744*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
745*00b67f09SDavid van Moolenbroek
746*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
747*00b67f09SDavid van Moolenbroekecho "I:checking that the change has not been transfered due to notify ($n)"
748*00b67f09SDavid van Moolenbroekret=0
749*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
750*00b67f09SDavid van Moolenbroekdo
751*00b67f09SDavid van Moolenbroek	ans=0
752*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 added.retransfer A > dig.out.ns3.test$n
753*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1
754*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
755*00b67f09SDavid van Moolenbroek	sleep 1
756*00b67f09SDavid van Moolenbroekdone
757*00b67f09SDavid van Moolenbroekif [ $ans != 1 ]; then echo "I:failed"; ret=1; fi
758*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
759*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
760*00b67f09SDavid van Moolenbroek
761*00b67f09SDavid van Moolenbroekecho "I:check rndc retransfer of a inline slave zone works ($n)"
762*00b67f09SDavid van Moolenbroekret=0
763*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 retransfer retransfer 2>&1 || ret=1
764*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
765*00b67f09SDavid van Moolenbroekdo
766*00b67f09SDavid van Moolenbroek	ans=0
767*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 added.retransfer A > dig.out.ns3.test$n
768*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1
769*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1
770*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
771*00b67f09SDavid van Moolenbroek	sleep 1
772*00b67f09SDavid van Moolenbroekdone
773*00b67f09SDavid van Moolenbroek[ $ans = 1 ] && ret=1
774*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
775*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
776*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
777*00b67f09SDavid van Moolenbroek
778*00b67f09SDavid van Moolenbroekecho "I:check rndc retransfer of a inline nsec3 slave retains nsec3 ($n)"
779*00b67f09SDavid van Moolenbroekret=0
780*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
781*00b67f09SDavid van Moolenbroekdo
782*00b67f09SDavid van Moolenbroek	ans=0
783*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 nonexist.retransfer3 A > dig.out.ns3.pre.test$n
784*00b67f09SDavid van Moolenbroek	grep "status: NXDOMAIN" dig.out.ns3.pre.test$n > /dev/null || ans=1
785*00b67f09SDavid van Moolenbroek	grep "NSEC3" dig.out.ns3.pre.test$n > /dev/null || ans=1
786*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
787*00b67f09SDavid van Moolenbroek	sleep 1
788*00b67f09SDavid van Moolenbroekdone
789*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 retransfer retransfer3 2>&1 || ret=1
790*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
791*00b67f09SDavid van Moolenbroekdo
792*00b67f09SDavid van Moolenbroek	ans=0
793*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 nonexist.retransfer3 A > dig.out.ns3.post.test$n
794*00b67f09SDavid van Moolenbroek	grep "status: NXDOMAIN" dig.out.ns3.post.test$n > /dev/null || ans=1
795*00b67f09SDavid van Moolenbroek	grep "NSEC3" dig.out.ns3.post.test$n > /dev/null || ans=1
796*00b67f09SDavid van Moolenbroek	[ $ans = 0 ] && break
797*00b67f09SDavid van Moolenbroek	sleep 1
798*00b67f09SDavid van Moolenbroekdone
799*00b67f09SDavid van Moolenbroek[ $ans = 1 ] && ret=1
800*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
801*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
802*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
803*00b67f09SDavid van Moolenbroek
804*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
805*00b67f09SDavid van Moolenbroekecho "I:stop bump in the wire signer server ($n)"
806*00b67f09SDavid van Moolenbroekret=0
807*00b67f09SDavid van Moolenbroek$PERL ../stop.pl . ns3 || ret=1
808*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
809*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
810*00b67f09SDavid van Moolenbroek
811*00b67f09SDavid van Moolenbroekecho "I:update SOA record while stopped"
812*00b67f09SDavid van Moolenbroekcp ns3/master4.db.in ns3/master.db
813*00b67f09SDavid van Moolenbroekrm ns3/master.db.jnl
814*00b67f09SDavid van Moolenbroek
815*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
816*00b67f09SDavid van Moolenbroekecho "I:restart bump in the wire signer server ($n)"
817*00b67f09SDavid van Moolenbroekret=0
818*00b67f09SDavid van Moolenbroek$PERL ../start.pl --noclean --restart . ns3 || ret=1
819*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
820*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
821*00b67f09SDavid van Moolenbroek
822*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
823*00b67f09SDavid van Moolenbroekecho "I:updates to SOA parameters other than serial while stopped are reflected in signed zone ($n)"
824*00b67f09SDavid van Moolenbroekret=0
825*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9
826*00b67f09SDavid van Moolenbroekdo
827*00b67f09SDavid van Moolenbroek	ans=0
828*00b67f09SDavid van Moolenbroek	$DIG $DIGOPTS @10.53.0.3 -p 5300 master SOA > dig.out.ns3.test$n
829*00b67f09SDavid van Moolenbroek	grep "hostmaster" dig.out.ns3.test$n > /dev/null || ans=1
830*00b67f09SDavid van Moolenbroek	grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1
831*00b67f09SDavid van Moolenbroek	[ $ans = 1 ] || break
832*00b67f09SDavid van Moolenbroek	sleep 1
833*00b67f09SDavid van Moolenbroekdone
834*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1
835*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
836*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
837*00b67f09SDavid van Moolenbroek
838*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
839*00b67f09SDavid van Moolenbroekecho "I:test add/del zone combinations ($n)"
840*00b67f09SDavid van Moolenbroekret=0
841*00b67f09SDavid van Moolenbroekfor zone in a b c d e f g h i j k l m n o p q r s t u v w x y z
842*00b67f09SDavid van Moolenbroekdo
843*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone test-$zone \
844*00b67f09SDavid van Moolenbroek	'{ type master; file "bits.db.in"; allow-transfer { any; }; };'
845*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 test-$zone SOA > dig.out.ns2.$zone.test$n
846*00b67f09SDavid van Moolenbroekgrep "status: NOERROR," dig.out.ns2.$zone.test$n  > /dev/null || { ret=1; cat dig.out.ns2.$zone.test$n; }
847*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone test-$zone \
848*00b67f09SDavid van Moolenbroek	'{ type slave; masters { 10.53.0.2; }; file "'test-$zone.bk'"; inline-signing yes; auto-dnssec maintain; allow-transfer { any; }; };'
849*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 delzone test-$zone > /dev/null 2>&1
850*00b67f09SDavid van Moolenbroekdone
851*00b67f09SDavid van Moolenbroek
852*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
853*00b67f09SDavid van Moolenbroekecho "I:testing adding external keys to a inline zone ($n)"
854*00b67f09SDavid van Moolenbroekret=0
855*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 dnskey externalkey > dig.out.ns3.test$n
856*00b67f09SDavid van Moolenbroekfor alg in 3 7 12 13
857*00b67f09SDavid van Moolenbroekdo
858*00b67f09SDavid van Moolenbroek   [ $alg = 3 -a ! -f checkdsa ] && continue;
859*00b67f09SDavid van Moolenbroek   [ $alg = 12 -a ! -f checkgost ] && continue;
860*00b67f09SDavid van Moolenbroek   [ $alg = 13 -a ! -f checkecdsa ] && continue;
861*00b67f09SDavid van Moolenbroek
862*00b67f09SDavid van Moolenbroek   case $alg in
863*00b67f09SDavid van Moolenbroek   3) echo "I: checking DSA";;
864*00b67f09SDavid van Moolenbroek   7) echo "I: checking NSEC3RSASHA1";;
865*00b67f09SDavid van Moolenbroek   12) echo "I: checking GOST";;
866*00b67f09SDavid van Moolenbroek   13) echo "I: checking ECDSAP256SHA256";;
867*00b67f09SDavid van Moolenbroek   *) echo "I: checking $alg";;
868*00b67f09SDavid van Moolenbroek   esac
869*00b67f09SDavid van Moolenbroek
870*00b67f09SDavid van Moolenbroek   dnskeys=`grep "IN.DNSKEY.25[67] [0-9]* $alg " dig.out.ns3.test$n | wc -l`
871*00b67f09SDavid van Moolenbroek   rrsigs=`grep "RRSIG.DNSKEY $alg " dig.out.ns3.test$n | wc -l`
872*00b67f09SDavid van Moolenbroek   test ${dnskeys:-0} -eq 3 || { echo "I: failed $alg (dnskeys ${dnskeys:-0})"; ret=1; }
873*00b67f09SDavid van Moolenbroek   test ${rrsigs:-0} -eq 2 || { echo "I: failed $alg (rrsigs ${rrsigs:-0})"; ret=1; }
874*00b67f09SDavid van Moolenbroekdone
875*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
876*00b67f09SDavid van Moolenbroek
877*00b67f09SDavid van Moolenbroekn=`expr $n + 1`
878*00b67f09SDavid van Moolenbroekecho "I:testing imported key won't overwrite a private key ($n)"
879*00b67f09SDavid van Moolenbroekret=0
880*00b67f09SDavid van Moolenbroekkey=`$KEYGEN -r $RANDFILE -q import.example`
881*00b67f09SDavid van Moolenbroekcp ${key}.key import.key
882*00b67f09SDavid van Moolenbroek# import should fail
883*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 && ret=1
884*00b67f09SDavid van Moolenbroekrm -f ${key}.private
885*00b67f09SDavid van Moolenbroek# private key removed; import should now succeed
886*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 || ret=1
887*00b67f09SDavid van Moolenbroek# now that it's an external key, re-import should succeed
888*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 || ret=1
889*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi
890*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
891*00b67f09SDavid van Moolenbroek
892*00b67f09SDavid van Moolenbroekexit $status
893