xref: /minix3/external/bsd/bind/dist/bin/tests/system/masterformat/tests.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#!/bin/sh
2*00b67f09SDavid van Moolenbroek#
3*00b67f09SDavid van Moolenbroek# Copyright (C) 2005, 2007, 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
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=..
20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van Moolenbroekismap () {
23*00b67f09SDavid van Moolenbroek    $PERL -e 'binmode STDIN;
24*00b67f09SDavid van Moolenbroek	     read(STDIN, $input, 8);
25*00b67f09SDavid van Moolenbroek             ($style, $version) = unpack("NN", $input);
26*00b67f09SDavid van Moolenbroek             exit 1 if ($style != 3 || $version > 1);' < $1
27*00b67f09SDavid van Moolenbroek    return $?
28*00b67f09SDavid van Moolenbroek}
29*00b67f09SDavid van Moolenbroek
30*00b67f09SDavid van Moolenbroekisraw () {
31*00b67f09SDavid van Moolenbroek    $PERL -e 'binmode STDIN;
32*00b67f09SDavid van Moolenbroek             read(STDIN, $input, 8);
33*00b67f09SDavid van Moolenbroek             ($style, $version) = unpack("NN", $input);
34*00b67f09SDavid van Moolenbroek             exit 1 if ($style != 2 || $version > 1);' < $1
35*00b67f09SDavid van Moolenbroek    return $?
36*00b67f09SDavid van Moolenbroek}
37*00b67f09SDavid van Moolenbroek
38*00b67f09SDavid van Moolenbroekrawversion () {
39*00b67f09SDavid van Moolenbroek    $PERL -e 'binmode STDIN;
40*00b67f09SDavid van Moolenbroek             read(STDIN, $input, 8);
41*00b67f09SDavid van Moolenbroek             if (length($input) < 8) { print "not raw\n"; exit 0; };
42*00b67f09SDavid van Moolenbroek             ($style, $version) = unpack("NN", $input);
43*00b67f09SDavid van Moolenbroek             print ($style == 2 || $style == 3 ? "$version\n" :
44*00b67f09SDavid van Moolenbroek		"not raw or map\n");' < $1
45*00b67f09SDavid van Moolenbroek}
46*00b67f09SDavid van Moolenbroek
47*00b67f09SDavid van Moolenbroeksourceserial () {
48*00b67f09SDavid van Moolenbroek    $PERL -e 'binmode STDIN;
49*00b67f09SDavid van Moolenbroek             read(STDIN, $input, 20);
50*00b67f09SDavid van Moolenbroek             if (length($input) < 20) { print "UNSET\n"; exit; };
51*00b67f09SDavid van Moolenbroek             ($format, $version, $dumptime, $flags, $sourceserial) =
52*00b67f09SDavid van Moolenbroek                     unpack("NNNNN", $input);
53*00b67f09SDavid van Moolenbroek             if ($format != 2 || $version <  1) { print "UNSET\n"; exit; };
54*00b67f09SDavid van Moolenbroek             if ($flags & 02) {
55*00b67f09SDavid van Moolenbroek                     print $sourceserial . "\n";
56*00b67f09SDavid van Moolenbroek             } else {
57*00b67f09SDavid van Moolenbroek                     print "UNSET\n";
58*00b67f09SDavid van Moolenbroek             }' < $1
59*00b67f09SDavid van Moolenbroek}
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van Moolenbroekstomp () {
62*00b67f09SDavid van Moolenbroek        $PERL -e 'open(my $file, "+<", $ARGV[0]);
63*00b67f09SDavid van Moolenbroek                 binmode $file;
64*00b67f09SDavid van Moolenbroek                 seek($file, $ARGV[1], 0);
65*00b67f09SDavid van Moolenbroek                 for (my $i = 0; $i < $ARGV[2]; $i++) {
66*00b67f09SDavid van Moolenbroek                         print $file pack('C', $ARGV[3]);
67*00b67f09SDavid van Moolenbroek                 }
68*00b67f09SDavid van Moolenbroek                 close($file);' $1 $2 $3 $4
69*00b67f09SDavid van Moolenbroek}
70*00b67f09SDavid van Moolenbroek
71*00b67f09SDavid van Moolenbroekrestart () {
72*00b67f09SDavid van Moolenbroek    sleep 1
73*00b67f09SDavid van Moolenbroek    (cd ..; $PERL start.pl --noclean --restart masterformat ns3)
74*00b67f09SDavid van Moolenbroek}
75*00b67f09SDavid van Moolenbroek
76*00b67f09SDavid van MoolenbroekDIGOPTS="+tcp +noauth +noadd +nosea +nostat +noquest +nocomm +nocmd"
77*00b67f09SDavid van Moolenbroek
78*00b67f09SDavid van Moolenbroekstatus=0
79*00b67f09SDavid van Moolenbroek
80*00b67f09SDavid van Moolenbroekecho "I:checking that master files in raw format loaded"
81*00b67f09SDavid van Moolenbroekret=0
82*00b67f09SDavid van Moolenbroekset -- 1 2 3
83*00b67f09SDavid van Moolenbroekfor zone in example example-explicit example-compat; do
84*00b67f09SDavid van Moolenbroek    for server in $*; do
85*00b67f09SDavid van Moolenbroek	for name in ns mx a aaaa cname dname txt rrsig nsec \
86*00b67f09SDavid van Moolenbroek		    dnskey ds cdnskey cds; do
87*00b67f09SDavid van Moolenbroek		$DIG $DIGOPTS $name.$zone. $name @10.53.0.$server -p 5300
88*00b67f09SDavid van Moolenbroek		echo
89*00b67f09SDavid van Moolenbroek	done > dig.out.$zone.$server
90*00b67f09SDavid van Moolenbroek    done
91*00b67f09SDavid van Moolenbroek    $PERL ../digcomp.pl dig.out.$zone.1 dig.out.$zone.2 || ret=1
92*00b67f09SDavid van Moolenbroek    if [ $zone = "example" ]; then
93*00b67f09SDavid van Moolenbroek            set -- 1 2
94*00b67f09SDavid van Moolenbroek            $PERL ../digcomp.pl dig.out.$zone.1 dig.out.$zone.3 || ret=1
95*00b67f09SDavid van Moolenbroek    fi
96*00b67f09SDavid van Moolenbroekdone
97*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
98*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
99*00b67f09SDavid van Moolenbroek
100*00b67f09SDavid van Moolenbroekecho "I:checking raw format versions"
101*00b67f09SDavid van Moolenbroekret=0
102*00b67f09SDavid van Moolenbroekisraw ns1/example.db.raw || ret=1
103*00b67f09SDavid van Moolenbroekisraw ns1/example.db.raw1 || ret=1
104*00b67f09SDavid van Moolenbroekisraw ns1/example.db.compat || ret=1
105*00b67f09SDavid van Moolenbroekismap ns1/example.db.map || ret=1
106*00b67f09SDavid van Moolenbroek[ "`rawversion ns1/example.db.raw`" = 1 ] || ret=1
107*00b67f09SDavid van Moolenbroek[ "`rawversion ns1/example.db.raw1`" = 1 ] || ret=1
108*00b67f09SDavid van Moolenbroek[ "`rawversion ns1/example.db.compat`" = 0 ] || ret=1
109*00b67f09SDavid van Moolenbroek[ "`rawversion ns1/example.db.map`" = 1 ] || ret=1
110*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
111*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
112*00b67f09SDavid van Moolenbroek
113*00b67f09SDavid van Moolenbroekecho "I:checking source serial numbers"
114*00b67f09SDavid van Moolenbroekret=0
115*00b67f09SDavid van Moolenbroek[ "`sourceserial ns1/example.db.raw`" = "UNSET" ] || ret=1
116*00b67f09SDavid van Moolenbroek[ "`sourceserial ns1/example.db.serial.raw`" = "3333" ] || ret=1
117*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
118*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
119*00b67f09SDavid van Moolenbroek
120*00b67f09SDavid van Moolenbroekecho "I:waiting for transfers to complete"
121*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
122*00b67f09SDavid van Moolenbroekdo
123*00b67f09SDavid van Moolenbroek	test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break
124*00b67f09SDavid van Moolenbroek	sleep 1
125*00b67f09SDavid van Moolenbroekdone
126*00b67f09SDavid van Moolenbroek
127*00b67f09SDavid van Moolenbroekecho "I:checking that slave was saved in raw format by default"
128*00b67f09SDavid van Moolenbroekret=0
129*00b67f09SDavid van Moolenbroekisraw ns2/transfer.db.raw || ret=1
130*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
131*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
132*00b67f09SDavid van Moolenbroek
133*00b67f09SDavid van Moolenbroekecho "I:checking that slave was saved in text format when configured"
134*00b67f09SDavid van Moolenbroekret=0
135*00b67f09SDavid van Moolenbroekisraw ns2/transfer.db.txt && ret=1
136*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
137*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
138*00b67f09SDavid van Moolenbroek
139*00b67f09SDavid van Moolenbroekecho "I:checking that slave formerly in text format is now raw"
140*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
141*00b67f09SDavid van Moolenbroekdo
142*00b67f09SDavid van Moolenbroek    ret=0
143*00b67f09SDavid van Moolenbroek    israw ns2/formerly-text.db > /dev/null 2>&1 || ret=1
144*00b67f09SDavid van Moolenbroek    [ "`rawversion ns2/formerly-text.db`" = 1 ] || ret=1
145*00b67f09SDavid van Moolenbroek    [ $ret -eq 0 ] && break
146*00b67f09SDavid van Moolenbroek    sleep 1
147*00b67f09SDavid van Moolenbroekdone
148*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
149*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
150*00b67f09SDavid van Moolenbroek
151*00b67f09SDavid van Moolenbroekecho "I:checking that large rdatasets loaded"
152*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9
153*00b67f09SDavid van Moolenbroekdo
154*00b67f09SDavid van Moolenbroekret=0
155*00b67f09SDavid van Moolenbroekfor a in a b c
156*00b67f09SDavid van Moolenbroekdo
157*00b67f09SDavid van Moolenbroek	$DIG +tcp txt ${a}.large @10.53.0.2 -p 5300 > dig.out
158*00b67f09SDavid van Moolenbroek	grep "status: NOERROR" dig.out > /dev/null || ret=1
159*00b67f09SDavid van Moolenbroekdone
160*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] && break
161*00b67f09SDavid van Moolenbroeksleep 1
162*00b67f09SDavid van Moolenbroekdone
163*00b67f09SDavid van Moolenbroek
164*00b67f09SDavid van Moolenbroekecho "I:checking format transitions: text->raw->map->text"
165*00b67f09SDavid van Moolenbroekret=0
166*00b67f09SDavid van Moolenbroek./named-compilezone -D -f text -F text -o baseline.txt example.nil ns1/example.db > /dev/null
167*00b67f09SDavid van Moolenbroek./named-compilezone -D -f text -F raw -o raw.1 example.nil baseline.txt > /dev/null
168*00b67f09SDavid van Moolenbroek./named-compilezone -D -f raw -F map -o map.1 example.nil raw.1 > /dev/null
169*00b67f09SDavid van Moolenbroek./named-compilezone -D -f map -F text -o text.1 example.nil map.1 > /dev/null
170*00b67f09SDavid van Moolenbroekcmp -s baseline.txt text.1 || ret=0
171*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
172*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
173*00b67f09SDavid van Moolenbroek
174*00b67f09SDavid van Moolenbroekecho "I:checking format transitions: text->map->raw->text"
175*00b67f09SDavid van Moolenbroekret=0
176*00b67f09SDavid van Moolenbroek./named-compilezone -D -f text -F map -o map.2 example.nil baseline.txt > /dev/null
177*00b67f09SDavid van Moolenbroek./named-compilezone -D -f map -F raw -o raw.2 example.nil map.2 > /dev/null
178*00b67f09SDavid van Moolenbroek./named-compilezone -D -f raw -F text -o text.2 example.nil raw.2 > /dev/null
179*00b67f09SDavid van Moolenbroekcmp -s baseline.txt text.2 || ret=0
180*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
181*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
182*00b67f09SDavid van Moolenbroek
183*00b67f09SDavid van Moolenbroekecho "I:checking map format loading with journal file rollforward"
184*00b67f09SDavid van Moolenbroekret=0
185*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > /dev/null || status=1
186*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300
187*00b67f09SDavid van Moolenbroekttl 600
188*00b67f09SDavid van Moolenbroekupdate add newtext.dynamic IN TXT "added text"
189*00b67f09SDavid van Moolenbroekupdate delete aaaa.dynamic
190*00b67f09SDavid van Moolenbroeksend
191*00b67f09SDavid van MoolenbroekEND
192*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 newtext.dynamic txt > dig.out.dynamic.3.1
193*00b67f09SDavid van Moolenbroekgrep "added text" dig.out.dynamic.3.1 > /dev/null 2>&1 || ret=1
194*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS +comm @10.53.0.3 -p 5300 added.dynamic txt > dig.out.dynamic.3.2
195*00b67f09SDavid van Moolenbroekgrep "NXDOMAIN"  dig.out.dynamic.3.2 > /dev/null 2>&1 || ret=1
196*00b67f09SDavid van Moolenbroek# using "rndc halt" ensures that we don't dump the zone file
197*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 halt 2>&1 | sed 's/^/I:ns3 /'
198*00b67f09SDavid van Moolenbroekrestart
199*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9; do
200*00b67f09SDavid van Moolenbroek    lret=0
201*00b67f09SDavid van Moolenbroek    $DIG $DIGOPTS @10.53.0.3 -p 5300 newtext.dynamic txt > dig.out.dynamic.3.3
202*00b67f09SDavid van Moolenbroek    grep "added text" dig.out.dynamic.3.3 > /dev/null 2>&1 || lret=1
203*00b67f09SDavid van Moolenbroek    [ $lret -eq 0 ] && break;
204*00b67f09SDavid van Moolenbroekdone
205*00b67f09SDavid van Moolenbroek[ $lret -eq 1 ] && ret=1
206*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS +comm @10.53.0.3 -p 5300 added.dynamic txt > dig.out.dynamic.3.4
207*00b67f09SDavid van Moolenbroekgrep "NXDOMAIN"  dig.out.dynamic.3.4 > /dev/null 2>&1 || ret=1
208*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
209*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
210*00b67f09SDavid van Moolenbroek
211*00b67f09SDavid van Moolenbroekecho "I:checking map format file dumps correctly"
212*00b67f09SDavid van Moolenbroekret=0
213*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > /dev/null || status=1
214*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300
215*00b67f09SDavid van Moolenbroekttl 600
216*00b67f09SDavid van Moolenbroekupdate add moretext.dynamic IN TXT "more text"
217*00b67f09SDavid van Moolenbroeksend
218*00b67f09SDavid van MoolenbroekEND
219*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 moretext.dynamic txt > dig.out.dynamic.3.5
220*00b67f09SDavid van Moolenbroekgrep "more text" dig.out.dynamic.3.5 > /dev/null 2>&1 || ret=1
221*00b67f09SDavid van Moolenbroek# using "rndc stop" will cause the zone file to flush before shutdown
222*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 stop 2>&1 | sed 's/^/I:ns3 /'
223*00b67f09SDavid van Moolenbroekrm ns3/*.jnl
224*00b67f09SDavid van Moolenbroekrestart
225*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9; do
226*00b67f09SDavid van Moolenbroek    lret=0
227*00b67f09SDavid van Moolenbroek    $DIG $DIGOPTS +comm @10.53.0.3 -p 5300 moretext.dynamic txt > dig.out.dynamic.3.6
228*00b67f09SDavid van Moolenbroek    grep "more text" dig.out.dynamic.3.6 > /dev/null 2>&1 || lret=1
229*00b67f09SDavid van Moolenbroek    [ $lret -eq 0 ] && break;
230*00b67f09SDavid van Moolenbroekdone
231*00b67f09SDavid van Moolenbroek[ $lret -eq 1 ] && ret=1
232*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
233*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
234*00b67f09SDavid van Moolenbroek
235*00b67f09SDavid van Moolenbroek# stomp on the file data so it hashes differently.
236*00b67f09SDavid van Moolenbroek# these are small and subtle changes, so that the resulting file
237*00b67f09SDavid van Moolenbroek# would appear to be a legitimate map file and would not trigger an
238*00b67f09SDavid van Moolenbroek# assertion failure if loaded into memory, but should still fail to
239*00b67f09SDavid van Moolenbroek# load because of a SHA1 hash mismatch.
240*00b67f09SDavid van Moolenbroekecho "I:checking corrupt map files fail to load (bad node header)"
241*00b67f09SDavid van Moolenbroekret=0
242*00b67f09SDavid van Moolenbroek./named-compilezone -D -f text -F map -o map.5 example.nil baseline.txt > /dev/null
243*00b67f09SDavid van Moolenbroekcp map.5 badmap
244*00b67f09SDavid van Moolenbroekstomp badmap 2754 2 99
245*00b67f09SDavid van Moolenbroek./named-compilezone -D -f map -F text -o text.5 example.nil badmap > /dev/null
246*00b67f09SDavid van Moolenbroek[ $? = 1 ] || ret=1
247*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
248*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
249*00b67f09SDavid van Moolenbroek
250*00b67f09SDavid van Moolenbroekecho "I:checking corrupt map files fail to load (bad node data)"
251*00b67f09SDavid van Moolenbroekret=0
252*00b67f09SDavid van Moolenbroekcp map.5 badmap
253*00b67f09SDavid van Moolenbroekstomp badmap 2897 5 127
254*00b67f09SDavid van Moolenbroek./named-compilezone -D -f map -F text -o text.5 example.nil badmap > /dev/null
255*00b67f09SDavid van Moolenbroek[ $? = 1 ] || ret=1
256*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
257*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
258*00b67f09SDavid van Moolenbroek
259*00b67f09SDavid van Moolenbroekecho "I:checking map format zone is scheduled for resigning (compilezone)"
260*00b67f09SDavid van Moolenbroekret=0
261*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 zonestatus signed > rndc.out 2>&1 || ret=1
262*00b67f09SDavid van Moolenbroekgrep 'next resign' rndc.out > /dev/null 2>&1 || ret=1
263*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
264*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
265*00b67f09SDavid van Moolenbroek
266*00b67f09SDavid van Moolenbroekecho "I:checking map format zone is scheduled for resigning (signzone)"
267*00b67f09SDavid van Moolenbroekret=0
268*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 freeze signed > rndc.out 2>&1 || ret=1
269*00b67f09SDavid van Moolenbroekcd ns1
270*00b67f09SDavid van Moolenbroek$SIGNER -S -O map -f signed.db.map -o signed signed.db > /dev/null 2>&1
271*00b67f09SDavid van Moolenbroekcd ..
272*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 reload signed > rndc.out 2>&1 || ret=1
273*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 zonestatus signed > rndc.out 2>&1 || ret=1
274*00b67f09SDavid van Moolenbroekgrep 'next resign' rndc.out > /dev/null 2>&1 || ret=1
275*00b67f09SDavid van Moolenbroek[ $ret -eq 0 ] || echo "I:failed"
276*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret`
277*00b67f09SDavid van Moolenbroek
278*00b67f09SDavid van Moolenbroekecho "I:exit status: $status"
279*00b67f09SDavid van Moolenbroekexit $status
280