1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2004, 2007, 2009-2014 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# Copyright (C) 2000, 2001 Internet Software Consortium. 5*00b67f09SDavid van Moolenbroek# 6*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 7*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 8*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 9*00b67f09SDavid van Moolenbroek# 10*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 11*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 12*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 13*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 14*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 15*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 17*00b67f09SDavid van Moolenbroek 18*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.42 2011/12/16 23:01:17 each Exp 19*00b67f09SDavid van Moolenbroek 20*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 21*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 22*00b67f09SDavid van Moolenbroek 23*00b67f09SDavid van Moolenbroekstatus=0 24*00b67f09SDavid van Moolenbroekn=0 25*00b67f09SDavid van Moolenbroek 26*00b67f09SDavid van Moolenbroek# wait for zone transfer to complete 27*00b67f09SDavid van Moolenbroektries=0 28*00b67f09SDavid van Moolenbroekwhile true; do 29*00b67f09SDavid van Moolenbroek if [ $tries -eq 10 ] 30*00b67f09SDavid van Moolenbroek then 31*00b67f09SDavid van Moolenbroek exit 1 32*00b67f09SDavid van Moolenbroek fi 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van Moolenbroek if grep "example.nil/IN.*Transfer completed" ns2/named.run > /dev/null 35*00b67f09SDavid van Moolenbroek then 36*00b67f09SDavid van Moolenbroek break 37*00b67f09SDavid van Moolenbroek else 38*00b67f09SDavid van Moolenbroek echo "I:zones are not fully loaded, waiting..." 39*00b67f09SDavid van Moolenbroek tries=`expr $tries + 1` 40*00b67f09SDavid van Moolenbroek sleep 1 41*00b67f09SDavid van Moolenbroek fi 42*00b67f09SDavid van Moolenbroekdone 43*00b67f09SDavid van Moolenbroek 44*00b67f09SDavid van Moolenbroekret=0 45*00b67f09SDavid van Moolenbroekecho "I:fetching first copy of zone before update" 46*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 47*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1 || ret=1 48*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroekret=0 51*00b67f09SDavid van Moolenbroekecho "I:fetching second copy of zone before update" 52*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 53*00b67f09SDavid van Moolenbroek @10.53.0.2 axfr -p 5300 > dig.out.ns2 || ret=1 54*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 55*00b67f09SDavid van Moolenbroek 56*00b67f09SDavid van Moolenbroekret=0 57*00b67f09SDavid van Moolenbroekecho "I:comparing pre-update copies to known good data" 58*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.before dig.out.ns1 || ret=1 59*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.before dig.out.ns2 || ret=1 60*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 61*00b67f09SDavid van Moolenbroek 62*00b67f09SDavid van Moolenbroekret=0 63*00b67f09SDavid van Moolenbroekecho "I:updating zone" 64*00b67f09SDavid van Moolenbroek# nsupdate will print a ">" prompt to stdout as it gets each input line. 65*00b67f09SDavid van Moolenbroek$NSUPDATE -k ns1/ddns.key <<END > /dev/null || ret=1 66*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 67*00b67f09SDavid van Moolenbroekupdate add updated.example.nil. 600 A 10.10.10.1 68*00b67f09SDavid van Moolenbroekadd updated.example.nil. 600 TXT Foo 69*00b67f09SDavid van Moolenbroekdelete t.example.nil. 70*00b67f09SDavid van Moolenbroek 71*00b67f09SDavid van MoolenbroekEND 72*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 73*00b67f09SDavid van Moolenbroek 74*00b67f09SDavid van Moolenbroekecho "I:sleeping 5 seconds for server to incorporate changes" 75*00b67f09SDavid van Moolenbroeksleep 5 76*00b67f09SDavid van Moolenbroek 77*00b67f09SDavid van Moolenbroekret=0 78*00b67f09SDavid van Moolenbroekecho "I:fetching first copy of zone after update" 79*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 80*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1 || ret=1 81*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 82*00b67f09SDavid van Moolenbroek 83*00b67f09SDavid van Moolenbroekret=0 84*00b67f09SDavid van Moolenbroekecho "I:fetching second copy of zone after update" 85*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 86*00b67f09SDavid van Moolenbroek @10.53.0.2 axfr -p 5300 > dig.out.ns2 || ret=1 87*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 88*00b67f09SDavid van Moolenbroek 89*00b67f09SDavid van Moolenbroekret=0 90*00b67f09SDavid van Moolenbroekecho "I:comparing post-update copies to known good data" 91*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.after dig.out.ns1 || ret=1 92*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.after dig.out.ns2 || ret=1 93*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 94*00b67f09SDavid van Moolenbroek 95*00b67f09SDavid van Moolenbroekret=0 96*00b67f09SDavid van Moolenbroekecho "I:testing local update policy" 97*00b67f09SDavid van Moolenbroekpre=`$DIG +short new.other.nil. @10.53.0.1 a -p 5300` || ret=1 98*00b67f09SDavid van Moolenbroek[ -z "$pre" ] || ret=1 99*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 100*00b67f09SDavid van Moolenbroek 101*00b67f09SDavid van Moolenbroekret=0 102*00b67f09SDavid van Moolenbroekecho "I:updating zone" 103*00b67f09SDavid van Moolenbroek# nsupdate will print a ">" prompt to stdout as it gets each input line. 104*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/session.key > /dev/null <<END || ret=1 105*00b67f09SDavid van Moolenbroekzone other.nil. 106*00b67f09SDavid van Moolenbroekupdate add new.other.nil. 600 IN A 10.10.10.1 107*00b67f09SDavid van Moolenbroeksend 108*00b67f09SDavid van MoolenbroekEND 109*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 110*00b67f09SDavid van Moolenbroek 111*00b67f09SDavid van Moolenbroekecho "I:sleeping 5 seconds for server to incorporate changes" 112*00b67f09SDavid van Moolenbroeksleep 5 113*00b67f09SDavid van Moolenbroek 114*00b67f09SDavid van Moolenbroekret=0 115*00b67f09SDavid van Moolenbroekecho "I:checking result of update" 116*00b67f09SDavid van Moolenbroekpost=`$DIG +short new.other.nil. @10.53.0.1 a -p 5300` || ret=1 117*00b67f09SDavid van Moolenbroek[ "$post" = "10.10.10.1" ] || ret=1 118*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 119*00b67f09SDavid van Moolenbroek 120*00b67f09SDavid van Moolenbroekret=0 121*00b67f09SDavid van Moolenbroekecho "I:comparing post-update copy to known good data" 122*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.after dig.out.ns1 || ret=1 123*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 124*00b67f09SDavid van Moolenbroek 125*00b67f09SDavid van Moolenbroekret=0 126*00b67f09SDavid van Moolenbroekecho "I:testing zone consistency checks" 127*00b67f09SDavid van Moolenbroek# inserting an NS record without a corresponding A or AAAA record should fail 128*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/session.key > nsupdate.out 2>&1 << END && ret=1 129*00b67f09SDavid van Moolenbroekupdate add other.nil. 600 in ns ns3.other.nil. 130*00b67f09SDavid van Moolenbroeksend 131*00b67f09SDavid van MoolenbroekEND 132*00b67f09SDavid van Moolenbroekgrep REFUSED nsupdate.out > /dev/null 2>&1 || ret=1 133*00b67f09SDavid van Moolenbroek# ...but should work if an A record is inserted first: 134*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/session.key > nsupdate.out 2>&1 << END || ret=1 135*00b67f09SDavid van Moolenbroekupdate add ns4.other.nil 600 in a 10.53.0.1 136*00b67f09SDavid van Moolenbroeksend 137*00b67f09SDavid van Moolenbroekupdate add other.nil. 600 in ns ns4.other.nil. 138*00b67f09SDavid van Moolenbroeksend 139*00b67f09SDavid van MoolenbroekEND 140*00b67f09SDavid van Moolenbroekgrep REFUSED nsupdate.out > /dev/null 2>&1 && ret=1 141*00b67f09SDavid van Moolenbroek# ...or if an AAAA record does: 142*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/session.key > nsupdate.out 2>&1 << END || ret=1 143*00b67f09SDavid van Moolenbroekupdate add ns5.other.nil 600 in aaaa 2001:db8::1 144*00b67f09SDavid van Moolenbroeksend 145*00b67f09SDavid van Moolenbroekupdate add other.nil. 600 in ns ns5.other.nil. 146*00b67f09SDavid van Moolenbroeksend 147*00b67f09SDavid van MoolenbroekEND 148*00b67f09SDavid van Moolenbroekgrep REFUSED nsupdate.out > /dev/null 2>&1 && ret=1 149*00b67f09SDavid van Moolenbroek# ...or if the NS and A/AAAA are inserted together: 150*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/session.key > nsupdate.out 2>&1 << END || ret=1 151*00b67f09SDavid van Moolenbroekupdate add other.nil. 600 in ns ns6.other.nil. 152*00b67f09SDavid van Moolenbroekupdate add ns6.other.nil 600 in a 10.53.0.1 153*00b67f09SDavid van Moolenbroeksend 154*00b67f09SDavid van MoolenbroekEND 155*00b67f09SDavid van Moolenbroekgrep REFUSED nsupdate.out > /dev/null 2>&1 && ret=1 156*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 157*00b67f09SDavid van Moolenbroek 158*00b67f09SDavid van Moolenbroekecho "I:sleeping 5 seconds for server to incorporate changes" 159*00b67f09SDavid van Moolenbroeksleep 5 160*00b67f09SDavid van Moolenbroek 161*00b67f09SDavid van Moolenbroekret=0 162*00b67f09SDavid van Moolenbroekecho "I:checking result of update" 163*00b67f09SDavid van Moolenbroek$DIG +short @10.53.0.1 -p 5300 ns other.nil > dig.out.ns1 || ret=1 164*00b67f09SDavid van Moolenbroekgrep ns3.other.nil dig.out.ns1 > /dev/null 2>&1 && ret=1 165*00b67f09SDavid van Moolenbroekgrep ns4.other.nil dig.out.ns1 > /dev/null 2>&1 || ret=1 166*00b67f09SDavid van Moolenbroekgrep ns5.other.nil dig.out.ns1 > /dev/null 2>&1 || ret=1 167*00b67f09SDavid van Moolenbroekgrep ns6.other.nil dig.out.ns1 > /dev/null 2>&1 || ret=1 168*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 169*00b67f09SDavid van Moolenbroek 170*00b67f09SDavid van Moolenbroekret=0 171*00b67f09SDavid van Moolenbroekecho "I:check SIG(0) key is accepted" 172*00b67f09SDavid van Moolenbroekkey=`$KEYGEN -q -r $RANDFILE -a NSEC3RSASHA1 -b 512 -T KEY -n ENTITY xxx` 173*00b67f09SDavid van Moolenbroekecho "" | $NSUPDATE -k ${key}.private > /dev/null 2>&1 || ret=1 174*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 175*00b67f09SDavid van Moolenbroek 176*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 177*00b67f09SDavid van Moolenbroekret=0 178*00b67f09SDavid van Moolenbroekecho "I:check TYPE=0 update is rejected by nsupdate ($n)" 179*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > nsupdate.out 2>&1 && ret=1 180*00b67f09SDavid van Moolenbroek server 10.53.0.1 5300 181*00b67f09SDavid van Moolenbroek ttl 300 182*00b67f09SDavid van Moolenbroek update add example.nil. in type0 "" 183*00b67f09SDavid van Moolenbroek send 184*00b67f09SDavid van MoolenbroekEND 185*00b67f09SDavid van Moolenbroekgrep "unknown class/type" nsupdate.out > /dev/null 2>&1 || ret=1 186*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 187*00b67f09SDavid van Moolenbroek 188*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 189*00b67f09SDavid van Moolenbroekret=0 190*00b67f09SDavid van Moolenbroekecho "I:check TYPE=0 prerequisite is handled ($n)" 191*00b67f09SDavid van Moolenbroek$NSUPDATE -k ns1/ddns.key <<END > nsupdate.out 2>&1 || ret=1 192*00b67f09SDavid van Moolenbroek server 10.53.0.1 5300 193*00b67f09SDavid van Moolenbroek prereq nxrrset example.nil. type0 194*00b67f09SDavid van Moolenbroek send 195*00b67f09SDavid van MoolenbroekEND 196*00b67f09SDavid van Moolenbroek$DIG +tcp version.bind txt ch @10.53.0.1 -p 5300 > dig.out.ns1.$n 197*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns1.$n > /dev/null || ret=1 198*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 199*00b67f09SDavid van Moolenbroek 200*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 201*00b67f09SDavid van Moolenbroekret=0 202*00b67f09SDavid van Moolenbroekecho "I:check that TYPE=0 update is handled ($n)" 203*00b67f09SDavid van Moolenbroekecho "a0e4280000010000000100000000060001c00c000000fe000000000000" | 204*00b67f09SDavid van Moolenbroek$PERL ../packet.pl -a 10.53.0.1 -p 5300 -t tcp > /dev/null 205*00b67f09SDavid van Moolenbroek$DIG +tcp version.bind txt ch @10.53.0.1 -p 5300 > dig.out.ns1.$n 206*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns1.$n > /dev/null || ret=1 207*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 208*00b67f09SDavid van Moolenbroek 209*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 210*00b67f09SDavid van Moolenbroekecho "I:check that TYPE=0 additional data is handled ($n)" 211*00b67f09SDavid van Moolenbroekecho "a0e4280000010000000000010000060001c00c000000fe000000000000" | 212*00b67f09SDavid van Moolenbroek$PERL ../packet.pl -a 10.53.0.1 -p 5300 -t tcp > /dev/null 213*00b67f09SDavid van Moolenbroek$DIG +tcp version.bind txt ch @10.53.0.1 -p 5300 > dig.out.ns1.$n 214*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns1.$n > /dev/null || ret=1 215*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 216*00b67f09SDavid van Moolenbroek 217*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 218*00b67f09SDavid van Moolenbroekecho "I:check that update to undefined class is handled ($n)" 219*00b67f09SDavid van Moolenbroekecho "a0e4280000010001000000000000060101c00c000000fe000000000000" | 220*00b67f09SDavid van Moolenbroek$PERL ../packet.pl -a 10.53.0.1 -p 5300 -t tcp > /dev/null 221*00b67f09SDavid van Moolenbroek$DIG +tcp version.bind txt ch @10.53.0.1 -p 5300 > dig.out.ns1.$n 222*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns1.$n > /dev/null || ret=1 223*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 224*00b67f09SDavid van Moolenbroek 225*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 226*00b67f09SDavid van Moolenbroekecho "I:check that address family mismatch is handled ($n)" 227*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > /dev/null 2>&1 && ret=1 228*00b67f09SDavid van Moolenbroekserver ::1 229*00b67f09SDavid van Moolenbroeklocal 127.0.0.1 230*00b67f09SDavid van Moolenbroekupdate add 600 txt.example.nil in txt "test" 231*00b67f09SDavid van Moolenbroeksend 232*00b67f09SDavid van MoolenbroekEND 233*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 234*00b67f09SDavid van Moolenbroek 235*00b67f09SDavid van Moolenbroek 236*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 237*00b67f09SDavid van Moolenbroekecho "I:check that unixtime serial number is correctly generated ($n)" 238*00b67f09SDavid van Moolenbroekoldserial=`$DIG +short unixtime.nil. soa @10.53.0.1 -p 5300 | awk '{print $3}'` || ret=1 239*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > /dev/null 2>&1 || ret=1 240*00b67f09SDavid van Moolenbroek server 10.53.0.1 5300 241*00b67f09SDavid van Moolenbroek ttl 600 242*00b67f09SDavid van Moolenbroek update add new.unixtime.nil in a 1.2.3.4 243*00b67f09SDavid van Moolenbroek send 244*00b67f09SDavid van MoolenbroekEND 245*00b67f09SDavid van Moolenbroeknow=`$PERL -e 'print time()."\n";'` 246*00b67f09SDavid van Moolenbroeksleep 1 247*00b67f09SDavid van Moolenbroekserial=`$DIG +short unixtime.nil. soa @10.53.0.1 -p 5300 | awk '{print $3}'` || ret=1 248*00b67f09SDavid van Moolenbroek[ "$oldserial" -ne "$serial" ] || ret=1 249*00b67f09SDavid van Moolenbroek# allow up to 2 seconds difference between the serial 250*00b67f09SDavid van Moolenbroek# number and the unix epoch date but no more 251*00b67f09SDavid van Moolenbroek$PERL -e 'exit 1 if abs($ARGV[1] - $ARGV[0]) > 2;' $now $serial || ret=1 252*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 253*00b67f09SDavid van Moolenbroek 254*00b67f09SDavid van Moolenbroekif $PERL -e 'use Net::DNS;' 2>/dev/null 255*00b67f09SDavid van Moolenbroekthen 256*00b67f09SDavid van Moolenbroek echo "I:running update.pl test" 257*00b67f09SDavid van Moolenbroek $PERL update_test.pl -s 10.53.0.1 -p 5300 update.nil. || status=1 258*00b67f09SDavid van Moolenbroekelse 259*00b67f09SDavid van Moolenbroek echo "I:The second part of this test requires the Net::DNS library." >&2 260*00b67f09SDavid van Moolenbroekfi 261*00b67f09SDavid van Moolenbroek 262*00b67f09SDavid van Moolenbroekret=0 263*00b67f09SDavid van Moolenbroekecho "I:fetching first copy of test zone" 264*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 265*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1 || ret=1 266*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 267*00b67f09SDavid van Moolenbroek 268*00b67f09SDavid van Moolenbroekecho "I:fetching second copy of test zone" 269*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 270*00b67f09SDavid van Moolenbroek @10.53.0.2 axfr -p 5300 > dig.out.ns2 || ret=1 271*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 272*00b67f09SDavid van Moolenbroek 273*00b67f09SDavid van Moolenbroekret=0 274*00b67f09SDavid van Moolenbroekecho "I:comparing zones" 275*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns1 dig.out.ns2 || ret=1 276*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 277*00b67f09SDavid van Moolenbroek 278*00b67f09SDavid van Moolenbroekecho "I:SIGKILL and restart server ns1" 279*00b67f09SDavid van Moolenbroekcd ns1 280*00b67f09SDavid van Moolenbroekkill -KILL `cat named.pid` 281*00b67f09SDavid van Moolenbroekrm named.pid 282*00b67f09SDavid van Moolenbroekcd .. 283*00b67f09SDavid van Moolenbroeksleep 10 284*00b67f09SDavid van Moolenbroekif 285*00b67f09SDavid van Moolenbroek $PERL $SYSTEMTESTTOP/start.pl --noclean --restart . ns1 286*00b67f09SDavid van Moolenbroekthen 287*00b67f09SDavid van Moolenbroek echo "I:restarted server ns1" 288*00b67f09SDavid van Moolenbroekelse 289*00b67f09SDavid van Moolenbroek echo "I:could not restart server ns1" 290*00b67f09SDavid van Moolenbroek exit 1 291*00b67f09SDavid van Moolenbroekfi 292*00b67f09SDavid van Moolenbroeksleep 10 293*00b67f09SDavid van Moolenbroek 294*00b67f09SDavid van Moolenbroekret=0 295*00b67f09SDavid van Moolenbroekecho "I:fetching ns1 after hard restart" 296*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.nil.\ 297*00b67f09SDavid van Moolenbroek @10.53.0.1 axfr -p 5300 > dig.out.ns1.after || ret=1 298*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 299*00b67f09SDavid van Moolenbroek 300*00b67f09SDavid van Moolenbroekret=0 301*00b67f09SDavid van Moolenbroekecho "I:comparing zones" 302*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns1 dig.out.ns1.after || ret=1 303*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 304*00b67f09SDavid van Moolenbroek 305*00b67f09SDavid van Moolenbroekecho "I:begin RT #482 regression test" 306*00b67f09SDavid van Moolenbroek 307*00b67f09SDavid van Moolenbroekret=0 308*00b67f09SDavid van Moolenbroekecho "I:update master" 309*00b67f09SDavid van Moolenbroek$NSUPDATE -k ns1/ddns.key <<END > /dev/null || ret=1 310*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 311*00b67f09SDavid van Moolenbroekupdate add updated2.example.nil. 600 A 10.10.10.2 312*00b67f09SDavid van Moolenbroekupdate add updated2.example.nil. 600 TXT Bar 313*00b67f09SDavid van Moolenbroekupdate delete c.example.nil. 314*00b67f09SDavid van Moolenbroeksend 315*00b67f09SDavid van MoolenbroekEND 316*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 317*00b67f09SDavid van Moolenbroek 318*00b67f09SDavid van Moolenbroeksleep 5 319*00b67f09SDavid van Moolenbroek 320*00b67f09SDavid van Moolenbroekecho "I:SIGHUP slave" 321*00b67f09SDavid van Moolenbroekkill -HUP `cat ns2/named.pid` 322*00b67f09SDavid van Moolenbroek 323*00b67f09SDavid van Moolenbroeksleep 5 324*00b67f09SDavid van Moolenbroek 325*00b67f09SDavid van Moolenbroekret=0 326*00b67f09SDavid van Moolenbroekecho "I:update master again" 327*00b67f09SDavid van Moolenbroek$NSUPDATE -k ns1/ddns.key <<END > /dev/null || ret=1 328*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 329*00b67f09SDavid van Moolenbroekupdate add updated3.example.nil. 600 A 10.10.10.3 330*00b67f09SDavid van Moolenbroekupdate add updated3.example.nil. 600 TXT Zap 331*00b67f09SDavid van Moolenbroekdel d.example.nil. 332*00b67f09SDavid van Moolenbroeksend 333*00b67f09SDavid van MoolenbroekEND 334*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 335*00b67f09SDavid van Moolenbroek 336*00b67f09SDavid van Moolenbroeksleep 5 337*00b67f09SDavid van Moolenbroek 338*00b67f09SDavid van Moolenbroekecho "I:SIGHUP slave again" 339*00b67f09SDavid van Moolenbroekkill -HUP `cat ns2/named.pid` 340*00b67f09SDavid van Moolenbroek 341*00b67f09SDavid van Moolenbroeksleep 5 342*00b67f09SDavid van Moolenbroek 343*00b67f09SDavid van Moolenbroekecho "I:check to 'out of sync' message" 344*00b67f09SDavid van Moolenbroekif grep "out of sync" ns2/named.run 345*00b67f09SDavid van Moolenbroekthen 346*00b67f09SDavid van Moolenbroek echo "I: failed (found 'out of sync')" 347*00b67f09SDavid van Moolenbroek status=1 348*00b67f09SDavid van Moolenbroekfi 349*00b67f09SDavid van Moolenbroek 350*00b67f09SDavid van Moolenbroekecho "I:end RT #482 regression test" 351*00b67f09SDavid van Moolenbroek 352*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 353*00b67f09SDavid van Moolenbroekret=0 354*00b67f09SDavid van Moolenbroekecho "I:start NSEC3PARAM changes via UPDATE on a unsigned zone test ($n)" 355*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 356*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 357*00b67f09SDavid van Moolenbroekupdate add example 3600 nsec3param 1 0 0 - 358*00b67f09SDavid van Moolenbroeksend 359*00b67f09SDavid van MoolenbroekEOF 360*00b67f09SDavid van Moolenbroek 361*00b67f09SDavid van Moolenbroeksleep 1 362*00b67f09SDavid van Moolenbroek 363*00b67f09SDavid van Moolenbroek# the zone is not signed. The nsec3param records should be removed. 364*00b67f09SDavid van Moolenbroek# this also proves that the server is still running. 365*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocmd +norec example.\ 366*00b67f09SDavid van Moolenbroek @10.53.0.3 nsec3param -p 5300 > dig.out.ns3.$n || ret=1 367*00b67f09SDavid van Moolenbroekgrep "ANSWER: 0" dig.out.ns3.$n > /dev/null || ret=1 368*00b67f09SDavid van Moolenbroekgrep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1 369*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 370*00b67f09SDavid van Moolenbroek 371*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 372*00b67f09SDavid van Moolenbroekret=0 373*00b67f09SDavid van Moolenbroekecho "I:change the NSEC3PARAM ttl via update ($n)" 374*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 375*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 376*00b67f09SDavid van Moolenbroekupdate add nsec3param.test 3600 NSEC3PARAM 1 0 1 - 377*00b67f09SDavid van Moolenbroeksend 378*00b67f09SDavid van MoolenbroekEOF 379*00b67f09SDavid van Moolenbroek 380*00b67f09SDavid van Moolenbroeksleep 1 381*00b67f09SDavid van Moolenbroek 382*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocmd +norec nsec3param.test.\ 383*00b67f09SDavid van Moolenbroek @10.53.0.3 nsec3param -p 5300 > dig.out.ns3.$n || ret=1 384*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1" dig.out.ns3.$n > /dev/null || ret=1 385*00b67f09SDavid van Moolenbroekgrep "3600.*NSEC3PARAM" dig.out.ns3.$n > /dev/null || ret=1 386*00b67f09SDavid van Moolenbroekgrep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1 387*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 388*00b67f09SDavid van Moolenbroek 389*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 390*00b67f09SDavid van Moolenbroekret=0 391*00b67f09SDavid van Moolenbroekecho "I:add a new the NSEC3PARAM via update ($n)" 392*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 393*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 394*00b67f09SDavid van Moolenbroekupdate add nsec3param.test 3600 NSEC3PARAM 1 0 4 - 395*00b67f09SDavid van Moolenbroeksend 396*00b67f09SDavid van MoolenbroekEOF 397*00b67f09SDavid van Moolenbroek 398*00b67f09SDavid van Moolenbroeksleep 1 399*00b67f09SDavid van Moolenbroek 400*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocmd +norec nsec3param.test.\ 401*00b67f09SDavid van Moolenbroek @10.53.0.3 nsec3param -p 5300 > dig.out.ns3.$n || ret=1 402*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2" dig.out.ns3.$n > /dev/null || ret=1 403*00b67f09SDavid van Moolenbroekgrep "NSEC3PARAM 1 0 4 -" dig.out.ns3.$n > /dev/null || ret=1 404*00b67f09SDavid van Moolenbroekgrep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1 405*00b67f09SDavid van Moolenbroekif [ $ret != 0 ] ; then echo "I: failed"; status=`expr $ret + $status`; fi 406*00b67f09SDavid van Moolenbroek 407*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 408*00b67f09SDavid van Moolenbroekret=0 409*00b67f09SDavid van Moolenbroekecho "I:add, delete and change the ttl of the NSEC3PARAM rrset via update ($n)" 410*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 411*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 412*00b67f09SDavid van Moolenbroekupdate delete nsec3param.test NSEC3PARAM 413*00b67f09SDavid van Moolenbroekupdate add nsec3param.test 7200 NSEC3PARAM 1 0 5 - 414*00b67f09SDavid van Moolenbroeksend 415*00b67f09SDavid van MoolenbroekEOF 416*00b67f09SDavid van Moolenbroek 417*00b67f09SDavid van Moolenbroeksleep 1 418*00b67f09SDavid van Moolenbroek 419*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocmd +norec nsec3param.test.\ 420*00b67f09SDavid van Moolenbroek @10.53.0.3 nsec3param -p 5300 > dig.out.ns3.$n || ret=1 421*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1" dig.out.ns3.$n > /dev/null || ret=1 422*00b67f09SDavid van Moolenbroekgrep "7200.*NSEC3PARAM 1 0 5 -" dig.out.ns3.$n > /dev/null || ret=1 423*00b67f09SDavid van Moolenbroekgrep "flags:[^;]* aa[ ;]" dig.out.ns3.$n > /dev/null || ret=1 424*00b67f09SDavid van Moolenbroek$JOURNALPRINT ns3/nsec3param.test.db.signed.jnl > jp.out.ns3.$n 425*00b67f09SDavid van Moolenbroek# intermediate TTL changes. 426*00b67f09SDavid van Moolenbroekgrep "add nsec3param.test. 7200 IN NSEC3PARAM 1 0 4 -" jp.out.ns3.$n > /dev/null || ret=1 427*00b67f09SDavid van Moolenbroekgrep "add nsec3param.test. 7200 IN NSEC3PARAM 1 0 1 -" jp.out.ns3.$n > /dev/null || ret=1 428*00b67f09SDavid van Moolenbroek# delayed adds and deletes. 429*00b67f09SDavid van Moolenbroekgrep "add nsec3param.test. 0 IN TYPE65534 .# 6 000180000500" jp.out.ns3.$n > /dev/null || ret=1 430*00b67f09SDavid van Moolenbroekgrep "add nsec3param.test. 0 IN TYPE65534 .# 6 000140000100" jp.out.ns3.$n > /dev/null || ret=1 431*00b67f09SDavid van Moolenbroekgrep "add nsec3param.test. 0 IN TYPE65534 .# 6 000140000400" jp.out.ns3.$n > /dev/null || ret=1 432*00b67f09SDavid van Moolenbroekif [ $ret != 0 ] ; then echo "I: failed"; status=`expr $ret + $status`; fi 433*00b67f09SDavid van Moolenbroek 434*00b67f09SDavid van Moolenbroek 435*00b67f09SDavid van Moolenbroek 436*00b67f09SDavid van Moolenbroekecho "I:testing that rndc stop updates the master file" 437*00b67f09SDavid van Moolenbroek$NSUPDATE -k ns1/ddns.key <<END > /dev/null || ret=1 438*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 439*00b67f09SDavid van Moolenbroekupdate add updated4.example.nil. 600 A 10.10.10.3 440*00b67f09SDavid van Moolenbroeksend 441*00b67f09SDavid van MoolenbroekEND 442*00b67f09SDavid van Moolenbroek$PERL $SYSTEMTESTTOP/stop.pl --use-rndc . ns1 443*00b67f09SDavid van Moolenbroek# Removing the journal file and restarting the server means 444*00b67f09SDavid van Moolenbroek# that the data served by the new server process are exactly 445*00b67f09SDavid van Moolenbroek# those dumped to the master file by "rndc stop". 446*00b67f09SDavid van Moolenbroekrm -f ns1/*jnl 447*00b67f09SDavid van Moolenbroek$PERL $SYSTEMTESTTOP/start.pl --noclean --restart . ns1 448*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd updated4.example.nil.\ 449*00b67f09SDavid van Moolenbroek @10.53.0.1 a -p 5300 > dig.out.ns1 || status=1 450*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl knowngood.ns1.afterstop dig.out.ns1 || ret=1 451*00b67f09SDavid van Moolenbroek[ $ret = 0 ] || { echo I:failed; status=1; } 452*00b67f09SDavid van Moolenbroek 453*00b67f09SDavid van Moolenbroekret=0 454*00b67f09SDavid van Moolenbroekecho "I:check that 'nsupdate -l' with a missing keyfile reports the missing file" 455*00b67f09SDavid van Moolenbroek$NSUPDATE -l -p 5300 -k ns1/nonexistant.key 2> nsupdate.out < /dev/null 456*00b67f09SDavid van Moolenbroekgrep ns1/nonexistant.key nsupdate.out > /dev/null || ret=1 457*00b67f09SDavid van Moolenbroekif test $ret -ne 0 458*00b67f09SDavid van Moolenbroekthen 459*00b67f09SDavid van Moolenbroekecho "I:failed"; status=1 460*00b67f09SDavid van Moolenbroekfi 461*00b67f09SDavid van Moolenbroek 462*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 463*00b67f09SDavid van Moolenbroekret=0 464*00b67f09SDavid van Moolenbroekecho "I:check that changes to the DNSKEY RRset TTL do not have side effects ($n)" 465*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd dnskey.test. \ 466*00b67f09SDavid van Moolenbroek @10.53.0.3 -p 5300 dnskey | \ 467*00b67f09SDavid van Moolenbroek sed -n 's/\(.*\)10.IN/update add \1600 IN/p' | 468*00b67f09SDavid van Moolenbroek (echo server 10.53.0.3 5300; cat - ; echo send ) | 469*00b67f09SDavid van Moolenbroek$NSUPDATE 470*00b67f09SDavid van Moolenbroek 471*00b67f09SDavid van Moolenbroek$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd dnskey.test. \ 472*00b67f09SDavid van Moolenbroek @10.53.0.3 -p 5300 any > dig.out.ns3.$n 473*00b67f09SDavid van Moolenbroek 474*00b67f09SDavid van Moolenbroekgrep "600.*DNSKEY" dig.out.ns3.$n > /dev/null || ret=1 475*00b67f09SDavid van Moolenbroekgrep TYPE65534 dig.out.ns3.$n > /dev/null && ret=1 476*00b67f09SDavid van Moolenbroekif test $ret -ne 0 477*00b67f09SDavid van Moolenbroekthen 478*00b67f09SDavid van Moolenbroekecho "I:failed"; status=1 479*00b67f09SDavid van Moolenbroekfi 480*00b67f09SDavid van Moolenbroek 481*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 482*00b67f09SDavid van Moolenbroekret=0 483*00b67f09SDavid van Moolenbroekecho "I:check notify with TSIG worked ($n)" 484*00b67f09SDavid van Moolenbroek# if the alternate view received a notify--meaning, the notify was 485*00b67f09SDavid van Moolenbroek# validly signed by "altkey"--then the zonefile update.alt.bk will 486*00b67f09SDavid van Moolenbroek# will have been created. 487*00b67f09SDavid van Moolenbroek[ -f ns2/update.alt.bk ] || ret=1 488*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 489*00b67f09SDavid van Moolenbroek echo "I:failed" 490*00b67f09SDavid van Moolenbroek status=1 491*00b67f09SDavid van Moolenbroekfi 492*00b67f09SDavid van Moolenbroek 493*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 494*00b67f09SDavid van Moolenbroekret=0 495*00b67f09SDavid van Moolenbroekecho "I:check type list options ($n)" 496*00b67f09SDavid van Moolenbroek$NSUPDATE -T > typelist.out.T.${n} || { ret=1; echo "I: nsupdate -T failed"; } 497*00b67f09SDavid van Moolenbroek$NSUPDATE -P > typelist.out.P.${n} || { ret=1; echo "I: nsupdate -P failed"; } 498*00b67f09SDavid van Moolenbroek$NSUPDATE -TP > typelist.out.TP.${n} || { ret=1; echo "I: nsupdate -TP failed"; } 499*00b67f09SDavid van Moolenbroekgrep ANY typelist.out.T.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-T)"; } 500*00b67f09SDavid van Moolenbroekgrep ANY typelist.out.P.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-P)"; } 501*00b67f09SDavid van Moolenbroekgrep ANY typelist.out.TP.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-TP)"; } 502*00b67f09SDavid van Moolenbroekgrep KEYDATA typelist.out.T.${n} > /dev/null && { ret=1; echo "I: failed: KEYDATA found (-T)"; } 503*00b67f09SDavid van Moolenbroekgrep KEYDATA typelist.out.P.${n} > /dev/null && { ret=1; echo "I: failed: KEYDATA found (-P)"; } 504*00b67f09SDavid van Moolenbroekgrep KEYDATA typelist.out.TP.${n} > /dev/null && { ret=1; echo "I: failed: KEYDATA found (-TP)"; } 505*00b67f09SDavid van Moolenbroekgrep AAAA typelist.out.T.${n} > /dev/null || { ret=1; echo "I: failed: AAAA not found (-T)"; } 506*00b67f09SDavid van Moolenbroekgrep AAAA typelist.out.P.${n} > /dev/null && { ret=1; echo "I: failed: AAAA found (-P)"; } 507*00b67f09SDavid van Moolenbroekgrep AAAA typelist.out.TP.${n} > /dev/null || { ret=1; echo "I: failed: AAAA not found (-TP)"; } 508*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 509*00b67f09SDavid van Moolenbroek echo "I:failed" 510*00b67f09SDavid van Moolenbroek status=1 511*00b67f09SDavid van Moolenbroekfi 512*00b67f09SDavid van Moolenbroek 513*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 514*00b67f09SDavid van Moolenbroekret=0 515*00b67f09SDavid van Moolenbroekecho "I:check command list ($n)" 516*00b67f09SDavid van Moolenbroek( 517*00b67f09SDavid van Moolenbroekwhile read cmd 518*00b67f09SDavid van Moolenbroekdo 519*00b67f09SDavid van Moolenbroek echo "$cmd" | $NSUPDATE > /dev/null 2>&1 520*00b67f09SDavid van Moolenbroek if test $? -gt 1 ; then 521*00b67f09SDavid van Moolenbroek echo "I: failed ($cmd)" 522*00b67f09SDavid van Moolenbroek ret=1 523*00b67f09SDavid van Moolenbroek fi 524*00b67f09SDavid van Moolenbroek echo "$cmd " | $NSUPDATE > /dev/null 2>&1 525*00b67f09SDavid van Moolenbroek if test $? -gt 1 ; then 526*00b67f09SDavid van Moolenbroek echo "I: failed ($cmd)" 527*00b67f09SDavid van Moolenbroek ret=1 528*00b67f09SDavid van Moolenbroek fi 529*00b67f09SDavid van Moolenbroekdone 530*00b67f09SDavid van Moolenbroekexit $ret 531*00b67f09SDavid van Moolenbroek) < commandlist || ret=1 532*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 533*00b67f09SDavid van Moolenbroek status=1 534*00b67f09SDavid van Moolenbroekfi 535*00b67f09SDavid van Moolenbroek 536*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 537*00b67f09SDavid van Moolenbroekret=0 538*00b67f09SDavid van Moolenbroekecho "I:check TSIG key algorithms ($n)" 539*00b67f09SDavid van Moolenbroekfor alg in md5 sha1 sha224 sha256 sha384 sha512; do 540*00b67f09SDavid van Moolenbroek $NSUPDATE -k ns1/${alg}.key <<END > /dev/null || ret=1 541*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 542*00b67f09SDavid van Moolenbroekupdate add ${alg}.keytests.nil. 600 A 10.10.10.3 543*00b67f09SDavid van Moolenbroeksend 544*00b67f09SDavid van MoolenbroekEND 545*00b67f09SDavid van Moolenbroekdone 546*00b67f09SDavid van Moolenbroeksleep 2 547*00b67f09SDavid van Moolenbroekfor alg in md5 sha1 sha224 sha256 sha384 sha512; do 548*00b67f09SDavid van Moolenbroek $DIG +short @10.53.0.1 -p 5300 ${alg}.keytests.nil | grep 10.10.10.3 > /dev/null 2>&1 || ret=1 549*00b67f09SDavid van Moolenbroekdone 550*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 551*00b67f09SDavid van Moolenbroek echo "I:failed" 552*00b67f09SDavid van Moolenbroek status=1 553*00b67f09SDavid van Moolenbroekfi 554*00b67f09SDavid van Moolenbroek 555*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 556*00b67f09SDavid van Moolenbroekret=0 557*00b67f09SDavid van Moolenbroekecho "I:check that ttl is capped by max-ttl ($n)" 558*00b67f09SDavid van Moolenbroek$NSUPDATE <<END > /dev/null || ret=1 559*00b67f09SDavid van Moolenbroekserver 10.53.0.1 5300 560*00b67f09SDavid van Moolenbroekupdate add cap.max-ttl.nil. 600 A 10.10.10.3 561*00b67f09SDavid van Moolenbroekupdate add nocap.max-ttl.nil. 150 A 10.10.10.3 562*00b67f09SDavid van Moolenbroeksend 563*00b67f09SDavid van MoolenbroekEND 564*00b67f09SDavid van Moolenbroeksleep 2 565*00b67f09SDavid van Moolenbroek$DIG @10.53.0.1 -p 5300 cap.max-ttl.nil | grep "^cap.max-ttl.nil. 300" > /dev/null 2>&1 || ret=1 566*00b67f09SDavid van Moolenbroek$DIG @10.53.0.1 -p 5300 nocap.max-ttl.nil | grep "^nocap.max-ttl.nil. 150" > /dev/null 2>&1 || ret=1 567*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 568*00b67f09SDavid van Moolenbroek echo "I:failed" 569*00b67f09SDavid van Moolenbroek status=1 570*00b67f09SDavid van Moolenbroekfi 571*00b67f09SDavid van Moolenbroek 572*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 573*00b67f09SDavid van Moolenbroekret=0 574*00b67f09SDavid van Moolenbroekecho "I:add a record which is truncated when logged. ($n)" 575*00b67f09SDavid van Moolenbroek$NSUPDATE verylarge || ret=1 576*00b67f09SDavid van Moolenbroek$DIG +tcp @10.53.0.1 -p 5300 txt txt.update.nil > dig.out.ns1.test$n 577*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns1.test$n > /dev/null || ret=1 578*00b67f09SDavid van Moolenbroekgrep "adding an RR at 'txt.update.nil' TXT .* \[TRUNCATED\]" ns1/named.run > /dev/null || ret=1 579*00b67f09SDavid van Moolenbroekif [ $ret -ne 0 ]; then 580*00b67f09SDavid van Moolenbroek echo "I:failed" 581*00b67f09SDavid van Moolenbroek status=1 582*00b67f09SDavid van Moolenbroekfi 583*00b67f09SDavid van Moolenbroek 584*00b67f09SDavid van Moolenbroekecho "I:exit status: $status" 585*00b67f09SDavid van Moolenbroekexit $status 586