1 #!/bin/sh -x 2 # 3 # Copyright (C) Internet Systems Consortium, Inc. ("ISC") 4 # 5 # This Source Code Form is subject to the terms of the Mozilla Public 6 # License, v. 2.0. If a copy of the MPL was not distributed with this 7 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 # 9 # See the COPYRIGHT file distributed with this work for additional 10 # information regarding copyright ownership. 11 12 set -e 13 14 # shellcheck source=conf.sh 15 SYSTEMTESTTOP=.. 16 . "$SYSTEMTESTTOP/conf.sh" 17 18 dig_with_opts() { 19 "$DIG" -p "${PORT}" "$@" 20 } 21 22 rndccmd() ( 23 "$RNDC" -c "$SYSTEMTESTTOP/common/rndc.conf" -p "${CONTROLPORT}" -s "$@" 24 ) 25 26 _wait_for_message() ( 27 nextpartpeek "$1" > wait_for_message.$n 28 grep -F "$2" wait_for_message.$n >/dev/null 29 ) 30 31 wait_for_message() ( 32 retry_quiet 20 _wait_for_message "$@" 33 ) 34 35 _wait_for_rcode() ( 36 rcode="$1" 37 qtype="$2" 38 ns="$3" 39 qname="$4" 40 file="$5" 41 shift 5 42 dig_with_opts "$ns" "$qtype" "$qname" "$@" >"$file" || return 1 43 grep "status: $rcode" "$file" >/dev/null 44 ) 45 46 wait_for_rcode() ( 47 retry_quiet 10 _wait_for_rcode "$@" 48 ) 49 50 wait_for_soa() ( 51 wait_for_rcode NOERROR SOA "$@" 52 ) 53 54 wait_for_a() ( 55 wait_for_rcode NOERROR A "$@" 56 ) 57 58 wait_for_no_soa() { 59 wait_for_rcode REFUSED SOA "$@" 60 } 61 62 _wait_for_zonefile() ( 63 # shellcheck disable=SC2234 64 [ -f "$1" ] 65 ) 66 67 wait_for_zonefile() ( 68 retry_quiet 10 _wait_for_zonefile "$@" 69 ) 70 71 _wait_for_no_zonefile() ( 72 # shellcheck disable=SC2234 73 [ ! -f "$1" ] 74 ) 75 76 wait_for_no_zonefile() ( 77 retry_quiet 10 _wait_for_no_zonefile "$@" 78 ) 79 80 status=0 81 n=0 82 ########################################################################## 83 echo_i "Testing adding/removing of domain in catalog zone" 84 n=$((n+1)) 85 echo_i "checking that dom1.example. is not served by master ($n)" 86 ret=0 87 wait_for_no_soa @10.53.0.1 dom1.example. dig.out.test$n || ret=1 88 if [ $ret -ne 0 ]; then echo_i "failed"; fi 89 status=$((status+ret)) 90 91 n=$((n+1)) 92 echo_i "Adding a domain dom1.example. to master via RNDC ($n)" 93 ret=0 94 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom1.example.db 95 echo "@ IN NS invalid." >> ns1/dom1.example.db 96 rndccmd 10.53.0.1 addzone dom1.example. '{type master; file "dom1.example.db";};' || ret=1 97 if [ $ret -ne 0 ]; then echo_i "failed"; fi 98 status=$((status+ret)) 99 100 n=$((n+1)) 101 echo_i "checking that dom1.example. is now served by master ($n)" 102 ret=0 103 wait_for_soa @10.53.0.1 dom1.example. dig.out.test$n || ret=1 104 if [ $ret -ne 0 ]; then echo_i "failed"; fi 105 status=$((status+ret)) 106 107 nextpart ns2/named.run >/dev/null 108 109 n=$((n+1)) 110 echo_i "Adding domain dom1.example. to catalog1 zone ($n)" 111 ret=0 112 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 113 server 10.53.0.1 ${PORT} 114 update add e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example. 3600 IN PTR dom1.example. 115 send 116 END 117 if [ $ret -ne 0 ]; then echo_i "failed"; fi 118 status=$((status+ret)) 119 120 n=$((n+1)) 121 echo_i "waiting for slave to sync up ($n)" 122 ret=0 123 wait_for_message ns2/named.run "catz: adding zone 'dom1.example' from catalog 'catalog1.example'" && 124 wait_for_message ns2/named.run "transfer of 'dom1.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 125 if [ $ret -ne 0 ]; then echo_i "failed"; fi 126 status=$((status+ret)) 127 128 n=$((n+1)) 129 echo_i "checking that dom1.example. is served by slave ($n)" 130 ret=0 131 wait_for_soa @10.53.0.2 dom1.example. dig.out.test$n || ret=1 132 if [ $ret -ne 0 ]; then echo_i "failed"; fi 133 status=$((status+ret)) 134 135 n=$((n+1)) 136 echo_i "checking that zone-directory is populated ($n)" 137 ret=0 138 wait_for_zonefile "ns2/zonedir/__catz___default_catalog1.example_dom1.example.db" || ret=1 139 if [ $ret -ne 0 ]; then echo_i "failed"; fi 140 status=$((status+ret)) 141 142 n=$((n+1)) 143 echo_i "removing domain dom1.example. from catalog1 zone ($n)" 144 ret=0 145 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 146 server 10.53.0.1 ${PORT} 147 update delete e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example 148 send 149 END 150 if [ $ret -ne 0 ]; then echo_i "failed"; fi 151 status=$((status+ret)) 152 153 n=$((n+1)) 154 echo_i "waiting for slave to sync up ($n)" 155 ret=0 156 wait_for_message ns2/named.run "zone_shutdown: zone dom1.example/IN: shutting down" || ret=1 157 if [ $ret -ne 0 ]; then echo_i "failed"; fi 158 status=$((status+ret)) 159 160 n=$((n+1)) 161 echo_i "checking that dom1.example. is not served by slave ($n)" 162 ret=0 163 wait_for_no_soa @10.53.0.2 dom1.example. dig.out.test$n || ret=1 164 if [ $ret -ne 0 ]; then echo_i "failed"; fi 165 status=$((status+ret)) 166 167 n=$((n+1)) 168 echo_i "checking that zone-directory is emptied ($n)" 169 ret=0 170 wait_for_no_zonefile "ns2/zonedir/__catz___default_catalog1.example_dom1.example.db" || ret=1 171 if [ $ret -ne 0 ]; then echo_i "failed"; fi 172 status=$((status+ret)) 173 174 ########################################################################## 175 echo_i "Testing various simple operations on domains, including using multiple catalog zones and garbage in zone" 176 n=$((n+1)) 177 echo_i "adding domain dom2.example. to master via RNDC ($n)" 178 ret=0 179 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom2.example.db 180 echo "@ IN NS invalid." >> ns1/dom2.example.db 181 rndccmd 10.53.0.1 addzone dom2.example. '{type master; file "dom2.example.db";};' || ret=1 182 if [ $ret -ne 0 ]; then echo_i "failed"; fi 183 status=$((status+ret)) 184 185 n=$((n+1)) 186 echo_i "adding domain dom4.example. to master via RNDC ($n)" 187 ret=0 188 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom4.example.db 189 echo "@ IN NS invalid." >> ns1/dom4.example.db 190 rndccmd 10.53.0.1 addzone dom4.example. '{type master; file "dom4.example.db";};' || ret=1 191 if [ $ret -ne 0 ]; then echo_i "failed"; fi 192 status=$((status+ret)) 193 194 n=$((n+1)) 195 echo_i "adding domains dom2.example, dom3.example. and some garbage to catalog1 zone ($n)" 196 ret=0 197 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 198 server 10.53.0.1 ${PORT} 199 update add 636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN PTR dom2.example. 200 update add b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN PTR dom3.example. 201 update add e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example. 3600 IN NS foo.bar. 202 update add trash.catalog1.example. 3600 IN A 1.2.3.4 203 update add trash2.foo.catalog1.example. 3600 IN A 1.2.3.4 204 update add trash3.zones.catalog1.example. 3600 IN NS a.dom2.example. 205 update add foobarbaz.b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN PTR dom3.example. 206 update add blahblah.636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN PTR dom2.example. 207 update add foobarbaz.b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN APL 1:1.2.3.4/30 208 update add blahblah.636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN TXT "blah blah" 209 update add version.catalog1.example. 3600 IN A 1.2.3.4 210 send 211 212 END 213 if [ $ret -ne 0 ]; then echo_i "failed"; fi 214 status=$((status+ret)) 215 216 n=$((n+1)) 217 echo_i "adding domain dom4.example. to catalog2 zone ($n)" 218 ret=0 219 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 220 server 10.53.0.3 ${PORT} 221 update add de26b88d855397a03f77ff1162fd055d8b419584.zones.catalog2.example. 3600 IN PTR dom4.example. 222 send 223 END 224 if [ $ret -ne 0 ]; then echo_i "failed"; fi 225 status=$((status+ret)) 226 227 228 n=$((n+1)) 229 echo_i "waiting for slave to sync up ($n)" 230 ret=0 231 wait_for_message ns2/named.run "catz: adding zone 'dom4.example' from catalog 'catalog2.example'" && 232 wait_for_message ns2/named.run "transfer of 'dom4.example/IN' from 10.53.0.1#${EXTRAPORT1}: Transfer status: success" || ret=1 233 if [ $ret -ne 0 ]; then echo_i "failed"; fi 234 status=$((status+ret)) 235 236 n=$((n+1)) 237 echo_i "checking that dom4.example. is served by slave ($n)" 238 ret=0 239 wait_for_soa @10.53.0.2 dom4.example. dig.out.test$n || ret=1 240 if [ $ret -ne 0 ]; then echo_i "failed"; fi 241 status=$((status+ret)) 242 243 244 n=$((n+1)) 245 echo_i "checking that dom3.example. is not served by master ($n)" 246 ret=0 247 wait_for_no_soa @10.53.0.1 dom3.example. dig.out.test$n || ret=1 248 if [ $ret -ne 0 ]; then echo_i "failed"; fi 249 status=$((status+ret)) 250 251 n=$((n+1)) 252 echo_i "adding a domain dom3.example. to master via RNDC ($n)" 253 ret=0 254 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom3.example.db 255 echo "@ IN NS invalid." >> ns1/dom3.example.db 256 rndccmd 10.53.0.1 addzone dom3.example. '{type master; file "dom3.example.db"; also-notify { 10.53.0.2; }; notify explicit; };' || ret=1 257 if [ $ret -ne 0 ]; then echo_i "failed"; fi 258 status=$((status+ret)) 259 260 n=$((n+1)) 261 echo_i "checking that dom3.example. is served by master ($n)" 262 ret=0 263 wait_for_soa @10.53.0.1 dom3.example. dig.out.test$n || ret=1 264 if [ $ret -ne 0 ]; then echo_i "failed"; fi 265 status=$((status+ret)) 266 267 n=$((n+1)) 268 echo_i "waiting for slave to sync up ($n)" 269 ret=0 270 wait_for_message ns2/named.run "catz: adding zone 'dom2.example' from catalog 'catalog1.example'" && 271 wait_for_message ns2/named.run "catz: adding zone 'dom3.example' from catalog 'catalog1.example'" && 272 wait_for_message ns2/named.run "transfer of 'dom2.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" && 273 wait_for_message ns2/named.run "transfer of 'dom3.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 274 if [ $ret -ne 0 ]; then echo_i "failed"; fi 275 status=$((status+ret)) 276 277 n=$((n+1)) 278 echo_i "checking that dom3.example. is served by slave ($n)" 279 ret=0 280 wait_for_soa @10.53.0.2 dom3.example. dig.out.test$n || ret=1 281 if [ $ret -ne 0 ]; then echo_i "failed"; fi 282 status=$((status+ret)) 283 284 n=$((n+1)) 285 echo_i "removing all records from catalog1 zone ($n)" 286 ret=0 287 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 288 server 10.53.0.1 ${PORT} 289 update delete 636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN PTR dom2.example. 290 update delete b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN PTR dom3.example. 291 update delete e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example. 3600 IN NS foo.bar. 292 update delete trash.catalog1.example. 3600 IN A 1.2.3.4 293 update delete trash2.foo.catalog1.example. 3600 IN A 1.2.3.4 294 update delete trash3.zones.catalog1.example. 3600 IN NS a.dom2.example. 295 update delete foobarbaz.b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN PTR dom3.example. 296 update delete blahblah.636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN PTR dom2.example. 297 update delete foobarbaz.b901f492f3ebf6c1e5b597e51766f02f0479eb03.zones.catalog1.example. 3600 IN APL 1:1.2.3.4/30 298 update delete blahblah.636722929740e507aaf27c502812fc395d30fb17.zones.catalog1.example. 3600 IN TXT "blah blah" 299 update delete version.catalog1.example. 3600 IN A 1.2.3.4 300 send 301 302 END 303 if [ $ret -ne 0 ]; then echo_i "failed"; fi 304 status=$((status+ret)) 305 306 n=$((n+1)) 307 echo_i "removing all records from catalog2 zone ($n)" 308 ret=0 309 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 310 server 10.53.0.3 ${PORT} 311 update delete de26b88d855397a03f77ff1162fd055d8b419584.zones.catalog2.example. 3600 IN PTR dom4.example. 312 send 313 END 314 if [ $ret -ne 0 ]; then echo_i "failed"; fi 315 status=$((status+ret)) 316 317 ########################################################################## 318 echo_i "Testing masters suboption and random labels" 319 n=$((n+1)) 320 echo_i "adding dom5.example. with a valid masters suboption (IP without TSIG) and a random label ($n)" 321 ret=0 322 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 323 server 10.53.0.1 ${PORT} 324 update add somerandomlabel.zones.catalog1.example. 3600 IN PTR dom5.example. 325 update add masters.somerandomlabel.zones.catalog1.example. 3600 IN A 10.53.0.3 326 send 327 END 328 if [ $ret -ne 0 ]; then echo_i "failed"; fi 329 status=$((status+ret)) 330 331 n=$((n+1)) 332 echo_i "waiting for slave to sync up ($n)" 333 ret=0 334 wait_for_message ns2/named.run "catz: adding zone 'dom5.example' from catalog 'catalog1.example'" && 335 wait_for_message ns2/named.run "transfer of 'dom5.example/IN' from 10.53.0.3#${PORT}: Transfer status: success" || ret=1 336 if [ $ret -ne 0 ]; then echo_i "failed"; fi 337 status=$((status+ret)) 338 339 n=$((n+1)) 340 echo_i "checking that dom5.example. is served by slave ($n)" 341 ret=0 342 wait_for_soa @10.53.0.2 dom5.example. dig.out.test$n || ret=1 343 if [ $ret -ne 0 ]; then echo_i "failed"; fi 344 status=$((status+ret)) 345 346 n=$((n+1)) 347 echo_i "removing dom5.example. ($n)" 348 ret=0 349 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 350 server 10.53.0.1 ${PORT} 351 update delete somerandomlabel.zones.catalog1.example. 3600 IN PTR dom5.example. 352 update delete masters.somerandomlabel.zones.catalog1.example. 3600 IN A 10.53.0.3 353 send 354 END 355 if [ $ret -ne 0 ]; then echo_i "failed"; fi 356 status=$((status+ret)) 357 358 n=$((n+1)) 359 echo_i "waiting for slave to sync up ($n)" 360 ret=0 361 wait_for_message ns2/named.run "zone_shutdown: zone dom5.example/IN: shutting down" || ret=1 362 if [ $ret -ne 0 ]; then echo_i "failed"; fi 363 status=$((status+ret)) 364 365 n=$((n+1)) 366 echo_i "checking that dom5.example. is no longer served by slave ($n)" 367 ret=0 368 wait_for_no_soa @10.53.0.2 dom5.example. dig.out.test$n || ret=1 369 if [ $ret -ne 0 ]; then echo_i "failed"; fi 370 status=$((status+ret)) 371 372 373 ########################################################################## 374 echo_i "Testing masters global option" 375 n=$((n+1)) 376 echo_i "adding dom6.example. and a valid global masters option (IP without TSIG) ($n)" 377 ret=0 378 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 379 server 10.53.0.1 ${PORT} 380 update add masters.catalog1.example. 3600 IN A 10.53.0.3 381 update add masters.catalog1.example. 3600 IN AAAA fd92:7065:b8e:ffff::3 382 update add 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example. 383 send 384 END 385 if [ $ret -ne 0 ]; then echo_i "failed"; fi 386 status=$((status+ret)) 387 388 n=$((n+1)) 389 echo_i "waiting for slave to sync up ($n)" 390 ret=0 391 wait_for_message ns2/named.run "catz: adding zone 'dom6.example' from catalog 'catalog1.example'" && 392 wait_for_message ns2/named.run "transfer of 'dom6.example/IN' from " > /dev/null || ret=1 393 if [ $ret -ne 0 ]; then echo_i "failed"; fi 394 status=$((status+ret)) 395 396 n=$((n+1)) 397 echo_i "checking that dom6.example. is served by slave ($n)" 398 ret=0 399 wait_for_soa @10.53.0.2 dom6.example. dig.out.test$n || ret=1 400 if [ $ret -ne 0 ]; then echo_i "failed"; fi 401 status=$((status+ret)) 402 403 n=$((n+1)) 404 echo_i "removing dom6.example. ($n)" 405 ret=0 406 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 407 server 10.53.0.1 ${PORT} 408 update delete masters.catalog1.example. 3600 IN A 10.53.0.3 409 update delete masters.catalog1.example. 3600 IN AAAA fd92:7065:b8e:ffff::3 410 update delete 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example. 411 send 412 END 413 if [ $ret -ne 0 ]; then echo_i "failed"; fi 414 status=$((status+ret)) 415 416 n=$((n+1)) 417 echo_i "waiting for slave to sync up ($n)" 418 ret=0 419 wait_for_message ns2/named.run "zone_shutdown: zone dom6.example/IN: shutting down" || ret=1 420 if [ $ret -ne 0 ]; then echo_i "failed"; fi 421 status=$((status+ret)) 422 423 n=$((n+1)) 424 echo_i "checking that dom6.example. is no longer served by slave ($n)" 425 ret=0 426 wait_for_no_soa @10.53.0.2 dom6.example. dig.out.test$n || ret=1 427 if [ $ret -ne 0 ]; then echo_i "failed"; fi 428 status=$((status+ret)) 429 430 nextpart ns2/named.run >/dev/null 431 432 n=$((n+1)) 433 echo_i "adding dom6.example. and an invalid global masters option (TSIG without IP) ($n)" 434 ret=0 435 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 436 server 10.53.0.1 ${PORT} 437 update add label1.masters.catalog1.example. 3600 IN TXT "tsig_key" 438 update add 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example. 439 send 440 END 441 if [ $ret -ne 0 ]; then echo_i "failed"; fi 442 status=$((status+ret)) 443 444 n=$((n+1)) 445 echo_i "waiting for slave to sync up ($n)" 446 ret=0 447 wait_for_message ns2/named.run "catz: adding zone 'dom6.example' from catalog 'catalog1.example'" && 448 wait_for_message ns2/named.run "error \"failure\" while trying to generate config for zone \"dom6.example\"" || ret=1 449 if [ $ret -ne 0 ]; then echo_i "failed"; fi 450 status=$((status+ret)) 451 452 n=$((n+1)) 453 echo_i "removing dom6.example. ($n)" 454 ret=0 455 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 456 server 10.53.0.1 ${PORT} 457 update delete label1.masters.catalog1.example. 3600 IN TXT "tsig_key" 458 update delete 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example. 459 send 460 END 461 if [ $ret -ne 0 ]; then echo_i "failed"; fi 462 status=$((status+ret)) 463 464 n=$((n+1)) 465 echo_i "waiting for slave to sync up ($n)" 466 ret=0 467 wait_for_message ns2/named.run "catz: deleting zone 'dom6.example' from catalog 'catalog1.example' - success" > /dev/null || ret=1 468 if [ $ret -ne 0 ]; then echo_i "failed"; fi 469 status=$((status+ret)) 470 471 ########################################################################## 472 n=$((n+1)) 473 echo_i "Checking that a missing zone directory forces in-memory ($n)" 474 ret=0 475 grep "'nonexistent' not found; zone files will not be saved" ns2/named.run > /dev/null || ret=1 476 if [ $ret -ne 0 ]; then echo_i "failed"; fi 477 status=$((status+ret)) 478 479 ########################################################################## 480 echo_i "Testing allow-query and allow-transfer ACLs" 481 n=$((n+1)) 482 echo_i "adding domains dom7.example. and dom8.example. to master via RNDC ($n)" 483 ret=0 484 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom7.example.db 485 echo "@ IN NS invalid." >> ns1/dom7.example.db 486 rndccmd 10.53.0.1 addzone dom7.example. '{type master; file "dom7.example.db";};' || ret=1 487 if [ $ret -ne 0 ]; then echo_i "failed"; fi 488 status=$((status+ret)) 489 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom8.example.db 490 echo "@ IN NS invalid." >> ns1/dom8.example.db 491 rndccmd 10.53.0.1 addzone dom8.example. '{type master; file "dom8.example.db";};' || ret=1 492 if [ $ret -ne 0 ]; then echo_i "failed"; fi 493 status=$((status+ret)) 494 495 n=$((n+1)) 496 echo_i "checking that dom7.example. is now served by master ($n)" 497 ret=0 498 wait_for_soa @10.53.0.1 dom7.example. dig.out.test$n || ret=1 499 if [ $ret -ne 0 ]; then echo_i "failed"; fi 500 status=$((status+ret)) 501 502 nextpart ns2/named.run >/dev/null 503 504 n=$((n+1)) 505 echo_i "adding domain dom7.example. to catalog1 zone with an allow-query statement ($n)" 506 ret=0 507 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 508 server 10.53.0.1 ${PORT} 509 update add 78833ec3c0059fd4540fee81c7eaddce088e7cd7.zones.catalog1.example. 3600 IN PTR dom7.example. 510 update add allow-query.78833ec3c0059fd4540fee81c7eaddce088e7cd7.zones.catalog1.example. 3600 IN APL 1:10.53.0.1/32 !1:10.53.0.0/30 1:0.0.0.0/0 511 send 512 END 513 if [ $ret -ne 0 ]; then echo_i "failed"; fi 514 status=$((status+ret)) 515 516 n=$((n+1)) 517 echo_i "waiting for slave to sync up ($n)" 518 ret=0 519 wait_for_message ns2/named.run "catz: adding zone 'dom7.example' from catalog 'catalog1.example'" > /dev/null && 520 wait_for_message ns2/named.run "transfer of 'dom7.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 521 if [ $ret -ne 0 ]; then echo_i "failed"; fi 522 status=$((status+ret)) 523 524 n=$((n+1)) 525 echo_i "checking that dom7.example. is accessible from 10.53.0.1 ($n)" 526 ret=0 527 wait_for_soa @10.53.0.2 dom7.example. dig.out.test$n -b 10.53.0.1 || ret=1 528 if [ $ret -ne 0 ]; then echo_i "failed"; fi 529 status=$((status+ret)) 530 531 n=$((n+1)) 532 echo_i "checking that dom7.example. is not accessible from 10.53.0.2 ($n)" 533 ret=0 534 wait_for_no_soa @10.53.0.2 dom7.example. dig.out.test$n -b 10.53.0.2 || ret=1 535 if [ $ret -ne 0 ]; then echo_i "failed"; fi 536 status=$((status+ret)) 537 538 n=$((n+1)) 539 echo_i "checking that dom7.example. is accessible from 10.53.0.5 ($n)" 540 ret=0 541 wait_for_soa @10.53.0.2 dom7.example. dig.out.test$n -b 10.53.0.5 || ret=1 542 if [ $ret -ne 0 ]; then echo_i "failed"; fi 543 status=$((status+ret)) 544 545 nextpart ns2/named.run >/dev/null 546 n=$((n+1)) 547 echo_i "adding dom8.example. domain and global allow-query and allow-transfer ACLs ($n)" 548 ret=0 549 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 550 server 10.53.0.1 ${PORT} 551 update add cba95222e308baba42417be6021026fdf20827b6.zones.catalog1.example. 3600 IN PTR dom8.example 552 update add allow-query.catalog1.example. 3600 IN APL 1:10.53.0.1/32 553 update add allow-transfer.catalog1.example. 3600 IN APL 1:10.53.0.2/32 554 send 555 END 556 if [ $ret -ne 0 ]; then echo_i "failed"; fi 557 status=$((status+ret)) 558 559 n=$((n+1)) 560 echo_i "waiting for slave to sync up ($n)" 561 ret=0 562 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" && 563 wait_for_message ns2/named.run "transfer of 'dom8.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 564 if [ $ret -ne 0 ]; then echo_i "failed"; fi 565 status=$((status+ret)) 566 567 n=$((n+1)) 568 echo_i "checking that dom8.example. is accessible from 10.53.0.1 ($n)" 569 ret=0 570 wait_for_soa @10.53.0.2 dom8.example. dig.out.test$n -b 10.53.0.1 || ret=1 571 if [ $ret -ne 0 ]; then echo_i "failed"; fi 572 status=$((status+ret)) 573 574 n=$((n+1)) 575 echo_i "checking that dom8.example. is not accessible from 10.53.0.2 ($n)" 576 ret=0 577 wait_for_no_soa @10.53.0.2 dom8.example. dig.out.test$n -b 10.53.0.2 || ret=1 578 if [ $ret -ne 0 ]; then echo_i "failed"; fi 579 status=$((status+ret)) 580 581 n=$((n+1)) 582 echo_i "checking that dom8.example. is not AXFR accessible from 10.53.0.1 ($n)" 583 ret=0 584 dig_with_opts @10.53.0.2 axfr dom8.example. -b 10.53.0.1 > dig.out.test$n 585 grep "Transfer failed." dig.out.test$n > /dev/null || ret=1 586 if [ $ret -ne 0 ]; then echo_i "failed"; fi 587 status=$((status+ret)) 588 589 n=$((n+1)) 590 echo_i "checking that dom8.example. is AXFR accessible from 10.53.0.2 ($n)" 591 ret=0 592 dig_with_opts @10.53.0.2 axfr dom8.example. -b 10.53.0.2 > dig.out.test$n 593 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1 594 if [ $ret -ne 0 ]; then echo_i "failed"; fi 595 status=$((status+ret)) 596 597 nextpart ns2/named.run >/dev/null 598 n=$((n+1)) 599 echo_i "deleting global allow-query and allow-domain ACLs ($n)" 600 ret=0 601 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 602 server 10.53.0.1 ${PORT} 603 update delete allow-query.catalog1.example. 3600 IN APL 1:10.53.0.1/32 604 update delete allow-transfer.catalog1.example. 3600 IN APL 1:10.53.0.2/32 605 send 606 END 607 if [ $ret -ne 0 ]; then echo_i "failed"; fi 608 status=$((status+ret)) 609 ret=0 610 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 611 if [ $ret -ne 0 ]; then echo_i "failed"; fi 612 status=$((status+ret)) 613 614 n=$((n+1)) 615 echo_i "checking that dom8.example. is accessible from 10.53.0.1 ($n)" 616 ret=0 617 wait_for_soa @10.53.0.2 dom8.example. dig.out.test$n -b 10.53.0.1 || ret=1 618 if [ $ret -ne 0 ]; then echo_i "failed"; fi 619 status=$((status+ret)) 620 621 n=$((n+1)) 622 echo_i "checking that dom8.example. is accessible from 10.53.0.2 ($n)" 623 ret=0 624 wait_for_soa @10.53.0.2 dom8.example. dig.out.test$n -b 10.53.0.2 || ret=1 625 if [ $ret -ne 0 ]; then echo_i "failed"; fi 626 status=$((status+ret)) 627 628 n=$((n+1)) 629 echo_i "checking that dom8.example. is AXFR accessible from 10.53.0.1 ($n)" 630 ret=0 631 dig_with_opts @10.53.0.2 axfr dom8.example. -b 10.53.0.1 > dig.out.test$n 632 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1 633 if [ $ret -ne 0 ]; then echo_i "failed"; fi 634 status=$((status+ret)) 635 636 n=$((n+1)) 637 echo_i "checking that dom8.example. is AXFR accessible from 10.53.0.2 ($n)" 638 ret=0 639 dig_with_opts @10.53.0.2 axfr dom8.example. -b 10.53.0.2 > dig.out.test$n 640 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1 641 if [ $ret -ne 0 ]; then echo_i "failed"; fi 642 status=$((status+ret)) 643 644 645 ########################################################################## 646 echo_i "Testing TSIG keys for masters set per-domain" 647 n=$((n+1)) 648 echo_i "adding a domain dom9.example. to master via RNDC, with transfers allowed only with TSIG key ($n)" 649 ret=0 650 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom9.example.db 651 echo "@ IN NS invalid." >> ns1/dom9.example.db 652 rndccmd 10.53.0.1 addzone dom9.example. '{type master; file "dom9.example.db"; allow-transfer { key tsig_key; }; };' || ret=1 653 if [ $ret -ne 0 ]; then echo_i "failed"; fi 654 status=$((status+ret)) 655 656 n=$((n+1)) 657 echo_i "checking that dom9.example. is now served by master ($n)" 658 ret=0 659 wait_for_soa @10.53.0.1 dom9.example. dig.out.test$n || ret=1 660 if [ $ret -ne 0 ]; then echo_i "failed"; fi 661 status=$((status+ret)) 662 663 nextpart ns2/named.run >/dev/null 664 665 n=$((n+1)) 666 echo_i "adding domain dom9.example. to catalog1 zone with a valid masters suboption (IP with TSIG) ($n)" 667 ret=0 668 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 669 server 10.53.0.1 ${PORT} 670 update add f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example. 671 update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1 672 update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key" 673 send 674 END 675 if [ $ret -ne 0 ]; then echo_i "failed"; fi 676 status=$((status+ret)) 677 678 n=$((n+1)) 679 echo_i "waiting for slave to sync up ($n)" 680 ret=0 681 wait_for_message ns2/named.run "catz: adding zone 'dom9.example' from catalog 'catalog1.example'" && 682 wait_for_message ns2/named.run "transfer of 'dom9.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 683 if [ $ret -ne 0 ]; then echo_i "failed"; fi 684 status=$((status+ret)) 685 686 n=$((n+1)) 687 echo_i "checking that dom9.example. is accessible on slave ($n)" 688 ret=0 689 wait_for_soa @10.53.0.2 dom9.example. dig.out.test$n || ret=1 690 if [ $ret -ne 0 ]; then echo_i "failed"; fi 691 status=$((status+ret)) 692 693 n=$((n+1)) 694 echo_i "deleting domain dom9.example. from catalog1 zone ($n)" 695 ret=0 696 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 697 server 10.53.0.1 ${PORT} 698 update delete f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example. 699 update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1 700 update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key" 701 send 702 END 703 if [ $ret -ne 0 ]; then echo_i "failed"; fi 704 status=$((status+ret)) 705 706 n=$((n+1)) 707 echo_i "waiting for slave to sync up ($n)" 708 ret=0 709 wait_for_message ns2/named.run "catz: deleting zone 'dom9.example' from catalog 'catalog1.example' - success" || ret=1 710 if [ $ret -ne 0 ]; then echo_i "failed"; fi 711 status=$((status+ret)) 712 713 n=$((n+1)) 714 echo_i "checking that dom9.example. is no longer accessible on slave ($n)" 715 ret=0 716 wait_for_no_soa @10.53.0.2 dom9.example. dig.out.test$n || ret=1 717 if [ $ret -ne 0 ]; then echo_i "failed"; fi 718 status=$((status+ret)) 719 720 nextpart ns2/named.run >/dev/null 721 722 n=$((n+1)) 723 echo_i "adding domain dom9.example. to catalog1 zone with an invalid masters suboption (TSIG without IP) ($n)" 724 ret=0 725 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 726 server 10.53.0.1 ${PORT} 727 update add f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example. 728 update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key" 729 send 730 END 731 if [ $ret -ne 0 ]; then echo_i "failed"; fi 732 status=$((status+ret)) 733 734 n=$((n+1)) 735 echo_i "waiting for slave to sync up ($n)" 736 ret=0 737 wait_for_message ns2/named.run "catz: adding zone 'dom9.example' from catalog 'catalog1.example'" && 738 wait_for_message ns2/named.run "error \"failure\" while trying to generate config for zone \"dom9.example\"" || ret=1 739 if [ $ret -ne 0 ]; then echo_i "failed"; fi 740 status=$((status+ret)) 741 742 n=$((n+1)) 743 echo_i "deleting domain dom9.example. from catalog1 zone ($n)" 744 ret=0 745 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 746 server 10.53.0.1 ${PORT} 747 update delete f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example. 748 update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key" 749 send 750 END 751 if [ $ret -ne 0 ]; then echo_i "failed"; fi 752 status=$((status+ret)) 753 754 n=$((n+1)) 755 echo_i "waiting for slave to sync up ($n)" 756 ret=0 757 wait_for_message ns2/named.run "catz: deleting zone 'dom9.example' from catalog 'catalog1.example'" || ret=1 758 if [ $ret -ne 0 ]; then echo_i "failed"; fi 759 status=$((status+ret)) 760 761 ########################################################################## 762 echo_i "Testing catalog entries that can't be represented as filenames" 763 # note: we need 4 backslashes in the shell to get 2 backslashes in DNS 764 # presentation format, which is 1 backslash on the wire. 765 for special in \ 766 this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example \ 767 this.zone/domain.has.a.slash.dom10.example \ 768 this.zone\\\\domain.has.backslash.dom10.example \ 769 this.zone:domain.has.a.colon.dom.10.example 770 do 771 # hashes below are generated by: 772 # python ${TOP}/contrib/scripts/catzhash.py "${special}" 773 774 case "$special" in 775 this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example) 776 hash=825f48b1ce1b4cf5a041d20255a0c8e98d114858 777 db=__catz__4d70696f2335687069467f11f5d5378c480383f97782e553fb2d04a7bb2a23ed.db 778 ;; 779 this.zone/domain.has.a.slash.dom10.example) 780 hash=e64cc64c99bf52d0a77fb16dd7ed57cf925a36aa 781 db=__catz__46ba3e1b28d5955e5313d5fee61bedc78c71d08035aa7ea2f7bf0b8228ab3acc.db 782 ;; 783 this.zone\\\\domain.has.backslash.dom10.example) 784 hash=91e27e02153d38cf656a9b376d7747fbcd19f985 785 db=__catz__b667f7ff802c0895e0506699951cff9a1cab68c5ef8546aa0d07425f244ed870.db 786 ;; 787 this.zone:domain.has.a.colon.dom.10.example) 788 hash=8b7238bf4c34045834c573ba4116557ebb24d33c 789 db=__catz__5c721f7872913a4e7fa8ad42589cce5dd6e551a4c9e6ab3f86e77c0bbc7c2ca6.db 790 ;; 791 esac 792 793 n=$((n+1)) 794 echo_i "checking that ${special}. is not served by master ($n)" 795 ret=0 796 wait_for_no_soa @10.53.0.1 "${special}" dig.out.test$n || ret=1 797 if [ $ret -ne 0 ]; then echo_i "failed"; fi 798 status=$((status+ret)) 799 800 n=$((n+1)) 801 echo_i "Adding a domain ${special}. to master via RNDC ($n)" 802 ret=0 803 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom10.example.db 804 echo "@ IN NS invalid." >> ns1/dom10.example.db 805 rndccmd 10.53.0.1 addzone '"'"${special}"'"' '{type master; file "dom10.example.db";};' || ret=1 806 if [ $ret -ne 0 ]; then echo_i "failed"; fi 807 status=$((status+ret)) 808 809 n=$((n+1)) 810 echo_i "checking that ${special}. is now served by master ($n)" 811 ret=0 812 wait_for_soa @10.53.0.1 "${special}." dig.out.test$n || ret=1 813 if [ $ret -ne 0 ]; then echo_i "failed"; fi 814 status=$((status+ret)) 815 816 nextpart ns2/named.run >/dev/null 817 818 n=$((n+1)) 819 echo_i "Adding domain ${special}. to catalog1 zone ($n)" 820 ret=0 821 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 822 server 10.53.0.1 ${PORT} 823 update add ${hash}.zones.catalog1.example 3600 IN PTR ${special}. 824 send 825 END 826 if [ $ret -ne 0 ]; then echo_i "failed"; fi 827 status=$((status+ret)) 828 829 n=$((n+1)) 830 echo_i "waiting for slave to sync up ($n)" 831 ret=0 832 wait_for_message ns2/named.run "catz: adding zone '$special' from catalog 'catalog1.example'" && 833 wait_for_message ns2/named.run "transfer of '$special/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 834 if [ $ret -ne 0 ]; then echo_i "failed"; fi 835 status=$((status+ret)) 836 837 n=$((n+1)) 838 echo_i "checking that ${special}. is served by slave ($n)" 839 ret=0 840 wait_for_soa @10.53.0.2 "${special}." dig.out.test$n || ret=1 841 if [ $ret -ne 0 ]; then echo_i "failed"; fi 842 status=$((status+ret)) 843 844 n=$((n+1)) 845 echo_i "checking that zone-directory is populated with a hashed filename ($n)" 846 ret=0 847 wait_for_zonefile "ns2/zonedir/$db" || ret=1 848 if [ $ret -ne 0 ]; then echo_i "failed"; fi 849 status=$((status+ret)) 850 851 n=$((n+1)) 852 echo_i "removing domain ${special}. from catalog1 zone ($n)" 853 ret=0 854 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 855 server 10.53.0.1 ${PORT} 856 update delete ${hash}.zones.catalog1.example 857 send 858 END 859 if [ $ret -ne 0 ]; then echo_i "failed"; fi 860 status=$((status+ret)) 861 862 n=$((n+1)) 863 echo_i "waiting for slave to sync up ($n)" 864 ret=0 865 wait_for_message ns2/named.run "zone_shutdown: zone ${special}/IN: shutting down" || ret=1 866 if [ $ret -ne 0 ]; then echo_i "failed"; fi 867 status=$((status+ret)) 868 869 n=$((n+1)) 870 echo_i "checking that ${special}. is not served by slave ($n)" 871 ret=0 872 wait_for_no_soa @10.53.0.2 "${special}." dig.out.test$n || ret=1 873 if [ $ret -ne 0 ]; then echo_i "failed"; fi 874 status=$((status+ret)) 875 876 n=$((n+1)) 877 echo_i "checking that zone-directory is emptied ($n)" 878 ret=0 879 wait_for_no_zonefile "ns2/zonedir/$db" || ret=1 880 if [ $ret -ne 0 ]; then echo_i "failed"; fi 881 status=$((status+ret)) 882 done 883 884 ########################################################################## 885 echo_i "Testing adding a domain and a subdomain of it" 886 n=$((n+1)) 887 echo_i "checking that dom11.example. is not served by master ($n)" 888 ret=0 889 wait_for_no_soa @10.53.0.1 dom11.example. dig.out.test$n || ret=1 890 if [ $ret -ne 0 ]; then echo_i "failed"; fi 891 status=$((status+ret)) 892 893 n=$((n+1)) 894 echo_i "Adding a domain dom11.example. to master via RNDC ($n)" 895 ret=0 896 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom11.example.db 897 echo "@ IN NS invalid." >> ns1/dom11.example.db 898 rndccmd 10.53.0.1 addzone dom11.example. '{type master; file "dom11.example.db";};' || ret=1 899 if [ $ret -ne 0 ]; then echo_i "failed"; fi 900 status=$((status+ret)) 901 902 n=$((n+1)) 903 echo_i "checking that dom11.example. is now served by master ($n)" 904 ret=0 905 wait_for_soa @10.53.0.1 dom11.example. dig.out.test$n || ret=1 906 if [ $ret -ne 0 ]; then echo_i "failed"; fi 907 status=$((status+ret)) 908 909 nextpart ns2/named.run >/dev/null 910 911 n=$((n+1)) 912 echo_i "Adding domain dom11.example. to catalog1 zone ($n)" 913 ret=0 914 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 915 server 10.53.0.1 ${PORT} 916 update add 0580d70e769c86c8b951a488d8b776627f427d7a.zones.catalog1.example. 3600 IN PTR dom11.example. 917 send 918 END 919 if [ $ret -ne 0 ]; then echo_i "failed"; fi 920 status=$((status+ret)) 921 922 n=$((n+1)) 923 echo_i "waiting for slave to sync up ($n)" 924 ret=0 925 wait_for_message ns2/named.run "catz: adding zone 'dom11.example' from catalog 'catalog1.example'" && 926 wait_for_message ns2/named.run "transfer of 'dom11.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 927 if [ $ret -ne 0 ]; then echo_i "failed"; fi 928 status=$((status+ret)) 929 930 n=$((n+1)) 931 echo_i "checking that dom11.example. is served by slave ($n)" 932 ret=0 933 wait_for_soa @10.53.0.2 dom11.example. dig.out.test$n || ret=1 934 if [ $ret -ne 0 ]; then echo_i "failed"; fi 935 status=$((status+ret)) 936 937 n=$((n+1)) 938 echo_i "checking that subdomain.of.dom11.example. is not served by master ($n)" 939 ret=0 940 wait_for_rcode NXDOMAIN SOA @10.53.0.1 subdomain.of.dom11.example. dig.out.test$n || ret=1 941 if [ $ret -ne 0 ]; then echo_i "failed"; fi 942 status=$((status+ret)) 943 944 n=$((n+1)) 945 echo_i "Adding a domain subdomain.of.dom11.example. to master via RNDC ($n)" 946 ret=0 947 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/subdomain.of.dom11.example.db 948 echo "@ IN NS invalid." >> ns1/subdomain.of.dom11.example.db 949 rndccmd 10.53.0.1 addzone subdomain.of.dom11.example. '{type master; file "subdomain.of.dom11.example.db";};' || ret=1 950 if [ $ret -ne 0 ]; then echo_i "failed"; fi 951 status=$((status+ret)) 952 953 n=$((n+1)) 954 echo_i "checking that subdomain.of.dom11.example. is now served by master ($n)" 955 ret=0 956 wait_for_soa @10.53.0.1 subdomain.of.dom11.example. dig.out.test$n || ret=1 957 if [ $ret -ne 0 ]; then echo_i "failed"; fi 958 status=$((status+ret)) 959 960 nextpart ns2/named.run >/dev/null 961 962 n=$((n+1)) 963 echo_i "Adding domain subdomain.of.dom11.example. to catalog1 zone ($n)" 964 ret=0 965 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 966 server 10.53.0.1 ${PORT} 967 update add 25557e0bdd10cb3710199bb421b776df160f241e.zones.catalog1.example. 3600 IN PTR subdomain.of.dom11.example. 968 send 969 END 970 if [ $ret -ne 0 ]; then echo_i "failed"; fi 971 status=$((status+ret)) 972 973 n=$((n+1)) 974 echo_i "waiting for slave to sync up ($n)" 975 ret=0 976 wait_for_message ns2/named.run "catz: adding zone 'subdomain.of.dom11.example' from catalog 'catalog1.example'" && 977 wait_for_message ns2/named.run "transfer of 'subdomain.of.dom11.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 978 if [ $ret -ne 0 ]; then echo_i "failed"; fi 979 status=$((status+ret)) 980 981 n=$((n+1)) 982 echo_i "checking that subdomain.of.dom11.example. is served by slave ($n)" 983 ret=0 984 wait_for_soa @10.53.0.2 subdomain.of.dom11.example. dig.out.test$n || ret=1 985 if [ $ret -ne 0 ]; then echo_i "failed"; fi 986 status=$((status+ret)) 987 988 n=$((n+1)) 989 echo_i "removing domain dom11.example. from catalog1 zone ($n)" 990 ret=0 991 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 992 server 10.53.0.1 ${PORT} 993 update delete 0580d70e769c86c8b951a488d8b776627f427d7a.zones.catalog1.example 994 send 995 END 996 if [ $ret -ne 0 ]; then echo_i "failed"; fi 997 status=$((status+ret)) 998 999 n=$((n+1)) 1000 echo_i "waiting for slave to sync up ($n)" 1001 ret=0 1002 wait_for_message ns2/named.run "zone_shutdown: zone dom11.example/IN: shutting down" || ret=1 1003 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1004 status=$((status+ret)) 1005 1006 n=$((n+1)) 1007 echo_i "checking that dom11.example. is not served by slave ($n)" 1008 ret=0 1009 wait_for_no_soa @10.53.0.2 dom11.example. dig.out.test$n || ret=1 1010 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1011 status=$((status+ret)) 1012 1013 n=$((n+1)) 1014 echo_i "checking that subdomain.of.dom11.example. is still served by slave ($n)" 1015 ret=0 1016 wait_for_soa @10.53.0.2 subdomain.of.dom11.example. dig.out.test$n || ret=1 1017 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1018 status=$((status+ret)) 1019 1020 n=$((n+1)) 1021 echo_i "removing domain subdomain.of.dom11.example. from catalog1 zone ($n)" 1022 ret=0 1023 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1024 server 10.53.0.1 ${PORT} 1025 update delete 25557e0bdd10cb3710199bb421b776df160f241e.zones.catalog1.example 1026 send 1027 END 1028 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1029 status=$((status+ret)) 1030 1031 n=$((n+1)) 1032 echo_i "waiting for slave to sync up ($n)" 1033 ret=0 1034 wait_for_message ns2/named.run "zone_shutdown: zone subdomain.of.dom11.example/IN: shutting down" || ret=1 1035 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1036 status=$((status+ret)) 1037 1038 n=$((n+1)) 1039 echo_i "checking that subdomain.of.dom11.example. is not served by slave ($n)" 1040 ret=0 1041 wait_for_no_soa @10.53.0.2 subdomain.of.d11.example. dig.out.test$n || ret=1 1042 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1043 status=$((status+ret)) 1044 1045 ########################################################################## 1046 echo_i "Testing adding a catalog zone at runtime with rndc reconfig" 1047 n=$((n+1)) 1048 echo_i "checking that dom12.example. is not served by master ($n)" 1049 ret=0 1050 wait_for_no_soa @10.53.0.1 dom12.example. dig.out.test$n || ret=1 1051 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1052 status=$((status+ret)) 1053 1054 n=$((n+1)) 1055 echo_i "Adding a domain dom12.example. to master via RNDC ($n)" 1056 ret=0 1057 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom12.example.db 1058 echo "@ IN NS invalid." >> ns1/dom12.example.db 1059 rndccmd 10.53.0.1 addzone dom12.example. '{type master; file "dom12.example.db";};' || ret=1 1060 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1061 status=$((status+ret)) 1062 1063 n=$((n+1)) 1064 echo_i "checking that dom12.example. is now served by master ($n)" 1065 ret=0 1066 wait_for_soa @10.53.0.1 dom12.example. dig.out.test$n || ret=1 1067 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1068 status=$((status+ret)) 1069 1070 nextpart ns2/named.run >/dev/null 1071 1072 n=$((n+1)) 1073 echo_i "Adding domain dom12.example. to catalog4 zone ($n)" 1074 ret=0 1075 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1076 server 10.53.0.1 ${PORT} 1077 update add 871d51e5433543c0f6fb263c40f359fbc152c8ae.zones.catalog4.example. 3600 IN PTR dom12.example. 1078 send 1079 END 1080 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1081 status=$((status+ret)) 1082 1083 n=$((n+1)) 1084 echo_i "checking that dom12.example. is not served by slave ($n)" 1085 ret=0 1086 wait_for_no_soa @10.53.0.2 dom12.example. dig.out.test$n || ret=1 1087 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1088 status=$((status+ret)) 1089 1090 1091 n=$((n+1)) 1092 echo_i "reconfiguring slave - adding catalog4 catalog zone ($n)" 1093 ret=0 1094 sed -e "s/^#T1//g" < ns2/named.conf.in > ns2/named.conf.tmp 1095 copy_setports ns2/named.conf.tmp ns2/named.conf 1096 rndccmd 10.53.0.2 reconfig || ret=1 1097 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1098 status=$((status+ret)) 1099 1100 n=$((n+1)) 1101 echo_i "waiting for slave to sync up ($n)" 1102 ret=0 1103 wait_for_message ns2/named.run "catz: adding zone 'dom12.example' from catalog 'catalog4.example'" && 1104 wait_for_message ns2/named.run "transfer of 'dom12.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 1105 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1106 status=$((status+ret)) 1107 1108 n=$((n+1)) 1109 echo_i "checking that dom7.example. is still served by slave after reconfiguration ($n)" 1110 ret=0 1111 wait_for_soa @10.53.0.2 dom7.example. dig.out.test$n -b 10.53.0.1 || ret=1 1112 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1113 status=$((status+ret)) 1114 n=$((n+1)) 1115 1116 echo_i "checking that dom12.example. is served by slave ($n)" 1117 ret=0 1118 wait_for_soa @10.53.0.2 dom12.example. dig.out.test$n || ret=1 1119 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1120 status=$((status+ret)) 1121 1122 n=$((n+1)) 1123 echo_i "reconfiguring slave - removing catalog4 catalog zone, adding non-existent catalog5 catalog zone ($n)" 1124 ret=0 1125 sed -e "s/^#T2//" < ns2/named.conf.in > ns2/named.conf.tmp 1126 copy_setports ns2/named.conf.tmp ns2/named.conf 1127 $RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reconfig > /dev/null 2>&1 && ret=1 1128 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1129 status=$((status+ret)) 1130 1131 n=$((n+1)) 1132 echo_i "reconfiguring slave - removing non-existent catalog5 catalog zone ($n)" 1133 ret=0 1134 copy_setports ns2/named.conf.in ns2/named.conf 1135 rndccmd 10.53.0.2 reconfig || ret=1 1136 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1137 status=$((status+ret)) 1138 1139 n=$((n+1)) 1140 echo_i "checking that dom12.example. is not served by slave ($n)" 1141 ret=0 1142 wait_for_no_soa @10.53.0.2 dom12.example. dig.out.test$n || ret=1 1143 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1144 status=$((status+ret)) 1145 1146 n=$((n+1)) 1147 echo_i "removing domain dom12.example. from catalog4 zone ($n)" 1148 ret=0 1149 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1150 server 10.53.0.1 ${PORT} 1151 update delete 871d51e5433543c0f6fb263c40f359fbc152c8ae.zones.catalog4.example. 3600 IN PTR dom12.example. 1152 send 1153 END 1154 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1155 status=$((status+ret)) 1156 1157 ########################################################################## 1158 echo_i "Testing having a zone in two different catalogs" 1159 n=$((n+1)) 1160 echo_i "checking that dom13.example. is not served by master ($n)" 1161 ret=0 1162 wait_for_no_soa @10.53.0.1 dom13.example. dig.out.test$n || ret=1 1163 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1164 status=$((status+ret)) 1165 1166 n=$((n+1)) 1167 echo_i "Adding a domain dom13.example. to master ns1 via RNDC ($n)" 1168 ret=0 1169 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom13.example.db 1170 echo "@ IN NS invalid." >> ns1/dom13.example.db 1171 echo "@ IN A 192.0.2.1" >> ns1/dom13.example.db 1172 rndccmd 10.53.0.1 addzone dom13.example. '{type master; file "dom13.example.db";};' || ret=1 1173 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1174 status=$((status+ret)) 1175 1176 n=$((n+1)) 1177 echo_i "checking that dom13.example. is now served by master ns1 ($n)" 1178 ret=0 1179 wait_for_soa @10.53.0.1 dom13.example. dig.out.test$n || ret=1 1180 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1181 status=$((status+ret)) 1182 1183 n=$((n+1)) 1184 echo_i "Adding a domain dom13.example. to master ns3 via RNDC ($n)" 1185 ret=0 1186 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns3/dom13.example.db 1187 echo "@ IN NS invalid." >> ns3/dom13.example.db 1188 echo "@ IN A 192.0.2.2" >> ns3/dom13.example.db 1189 rndccmd 10.53.0.3 addzone dom13.example. '{type master; file "dom13.example.db";};' || ret=1 1190 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1191 status=$((status+ret)) 1192 1193 n=$((n+1)) 1194 echo_i "checking that dom13.example. is now served by master ns3 ($n)" 1195 ret=0 1196 wait_for_soa @10.53.0.3 dom13.example. dig.out.test$n || ret=1 1197 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1198 status=$((status+ret)) 1199 1200 1201 nextpart ns2/named.run >/dev/null 1202 1203 n=$((n+1)) 1204 echo_i "Adding domain dom13.example. to catalog1 zone with ns1 as master ($n)" 1205 ret=0 1206 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1207 server 10.53.0.1 ${PORT} 1208 update add 8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example. 3600 IN PTR dom13.example. 1209 update add masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example. 3600 IN A 10.53.0.1 1210 send 1211 END 1212 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1213 status=$((status+ret)) 1214 1215 n=$((n+1)) 1216 echo_i "waiting for slave to sync up ($n)" 1217 ret=0 1218 wait_for_message ns2/named.run "catz: adding zone 'dom13.example' from catalog 'catalog1.example'" && 1219 wait_for_message ns2/named.run "transfer of 'dom13.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 1220 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1221 status=$((status+ret)) 1222 1223 nextpart ns2/named.run >/dev/null 1224 1225 n=$((n+1)) 1226 echo_i "checking that dom13.example. is served by slave and that it's the one from ns1 ($n)" 1227 ret=0 1228 wait_for_a @10.53.0.2 dom13.example. dig.out.test$n || ret=1 1229 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1230 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1231 status=$((status+ret)) 1232 1233 n=$((n+1)) 1234 echo_i "Adding domain dom13.example. to catalog2 zone with ns3 as master ($n)" 1235 ret=0 1236 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1237 server 10.53.0.3 ${PORT} 1238 update add 8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example. 3600 IN PTR dom13.example. 1239 update add masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example. 3600 IN A 10.53.0.3 1240 send 1241 END 1242 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1243 status=$((status+ret)) 1244 1245 n=$((n+1)) 1246 echo_i "waiting for slave to sync up ($n)" 1247 ret=0 1248 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1249 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1250 status=$((status+ret)) 1251 1252 n=$((n+1)) 1253 echo_i "checking that dom13.example. is served by slave and that it's still the one from ns1 ($n)" 1254 ret=0 1255 wait_for_a @10.53.0.2 dom13.example. dig.out.test$n || ret=1 1256 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1257 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1258 status=$((status+ret)) 1259 1260 nextpart ns2/named.run >/dev/null 1261 1262 n=$((n+1)) 1263 echo_i "Deleting domain dom13.example. from catalog2 ($n)" 1264 ret=0 1265 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1266 server 10.53.0.3 ${PORT} 1267 update delete 8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example. 3600 IN PTR dom13.example. 1268 update delete masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example. 3600 IN A 10.53.0.3 1269 send 1270 END 1271 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1272 status=$((status+ret)) 1273 1274 n=$((n+1)) 1275 echo_i "waiting for slave to sync up ($n)" 1276 ret=0 1277 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1278 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1279 status=$((status+ret)) 1280 1281 n=$((n+1)) 1282 echo_i "checking that dom13.example. is served by slave and that it's still the one from ns1 ($n)" 1283 ret=0 1284 wait_for_a @10.53.0.2 dom13.example. dig.out.test$n || ret=1 1285 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1286 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1287 status=$((status+ret)) 1288 1289 n=$((n+1)) 1290 echo_i "Deleting domain dom13.example. from catalog1 ($n)" 1291 ret=0 1292 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1293 server 10.53.0.1 ${PORT} 1294 update delete 8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example. 3600 IN PTR dom13.example. 1295 update delete masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example. 3600 IN A 10.53.0.2 1296 send 1297 END 1298 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1299 status=$((status+ret)) 1300 1301 n=$((n+1)) 1302 echo_i "waiting for slave to sync up ($n)" 1303 ret=0 1304 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1305 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1306 status=$((status+ret)) 1307 1308 n=$((n+1)) 1309 echo_i "checking that dom13.example. is no longer served by slave ($n)" 1310 ret=0 1311 wait_for_no_soa @10.53.0.2 dom13.example. dig.out.test$n || ret=1 1312 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1313 status=$((status+ret)) 1314 1315 ########################################################################## 1316 echo_i "Testing having a regular zone and a zone in catalog zone of the same name" 1317 n=$((n+1)) 1318 echo_i "checking that dom14.example. is not served by master ($n)" 1319 ret=0 1320 wait_for_no_soa @10.53.0.1 dom14.example. dig.out.test$n || ret=1 1321 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1322 status=$((status+ret)) 1323 1324 n=$((n+1)) 1325 echo_i "Adding a domain dom14.example. to master ns1 via RNDC ($n)" 1326 ret=0 1327 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom14.example.db 1328 echo "@ IN NS invalid." >> ns1/dom14.example.db 1329 echo "@ IN A 192.0.2.1" >> ns1/dom14.example.db 1330 rndccmd 10.53.0.1 addzone dom14.example. '{type master; file "dom14.example.db";};' || ret=1 1331 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1332 status=$((status+ret)) 1333 1334 n=$((n+1)) 1335 echo_i "checking that dom14.example. is now served by master ns1 ($n)" 1336 ret=0 1337 wait_for_soa @10.53.0.1 dom14.example. dig.out.test$n || ret=1 1338 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1339 status=$((status+ret)) 1340 1341 n=$((n+1)) 1342 echo_i "Adding a domain dom14.example. to master ns3 via RNDC ($n)" 1343 ret=0 1344 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns3/dom14.example.db 1345 echo "@ IN NS invalid." >> ns3/dom14.example.db 1346 echo "@ IN A 192.0.2.2" >> ns3/dom14.example.db 1347 rndccmd 10.53.0.3 addzone dom14.example. '{type master; file "dom14.example.db";};' || ret=1 1348 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1349 status=$((status+ret)) 1350 1351 n=$((n+1)) 1352 echo_i "checking that dom14.example. is now served by master ns3 ($n)" 1353 ret=0 1354 wait_for_soa @10.53.0.3 dom14.example. dig.out.test$n || ret=1 1355 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1356 status=$((status+ret)) 1357 1358 nextpart ns2/named.run >/dev/null 1359 1360 n=$((n+1)) 1361 echo_i "Adding domain dom14.example. with rndc with ns1 as master ($n)" 1362 ret=0 1363 rndccmd 10.53.0.2 addzone dom14.example. '{type slave; masters {10.53.0.1;};};' || ret=1 1364 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1365 status=$((status+ret)) 1366 1367 n=$((n+1)) 1368 echo_i "waiting for slave to sync up ($n)" 1369 ret=0 1370 wait_for_message ns2/named.run "transfer of 'dom14.example/IN' from 10.53.0.1#${PORT}: Transfer status: success" || ret=1 1371 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1372 status=$((status+ret)) 1373 1374 nextpart ns2/named.run >/dev/null 1375 1376 n=$((n+1)) 1377 echo_i "checking that dom14.example. is served by slave and that it's the one from ns1 ($n)" 1378 ret=0 1379 wait_for_a @10.53.0.2 dom14.example. dig.out.test$n || ret=1 1380 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1381 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1382 status=$((status+ret)) 1383 1384 n=$((n+1)) 1385 echo_i "Adding domain dom14.example. to catalog2 zone with ns3 as master ($n)" 1386 ret=0 1387 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1388 server 10.53.0.3 ${PORT} 1389 update add 45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example. 3600 IN PTR dom14.example. 1390 update add masters.45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example. 3600 IN A 10.53.0.3 1391 send 1392 END 1393 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1394 status=$((status+ret)) 1395 1396 n=$((n+1)) 1397 echo_i "waiting for slave to sync up ($n)" 1398 ret=0 1399 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1400 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1401 status=$((status+ret)) 1402 1403 n=$((n+1)) 1404 echo_i "checking that dom14.example. is served by slave and that it's still the one from ns1 ($n)" 1405 ret=0 1406 wait_for_a @10.53.0.2 dom14.example. dig.out.test$n || ret=1 1407 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1408 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1409 status=$((status+ret)) 1410 1411 nextpart ns2/named.run >/dev/null 1412 1413 n=$((n+1)) 1414 echo_i "Deleting domain dom14.example. from catalog2 ($n)" 1415 ret=0 1416 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1417 server 10.53.0.3 ${PORT} 1418 update delete 45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example. 3600 IN PTR dom14.example. 1419 update delete masters.45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example. 3600 IN A 10.53.0.3 1420 send 1421 END 1422 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1423 status=$((status+ret)) 1424 1425 n=$((n+1)) 1426 echo_i "waiting for slave to sync up ($n)" 1427 ret=0 1428 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1429 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1430 status=$((status+ret)) 1431 1432 n=$((n+1)) 1433 echo_i "checking that dom14.example. is served by slave and that it's still the one from ns1 ($n)" 1434 ret=0 1435 wait_for_a @10.53.0.2 dom14.example. dig.out.test$n || ret=1 1436 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1 1437 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1438 status=$((status+ret)) 1439 1440 ########################################################################## 1441 echo_i "Testing changing label for a member zone" 1442 n=$((n+1)) 1443 echo_i "checking that dom15.example. is not served by master ($n)" 1444 ret=0 1445 wait_for_no_soa @10.53.0.1 dom15.example. dig.out.test$n || ret=1 1446 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1447 status=$((status+ret)) 1448 1449 n=$((n+1)) 1450 echo_i "Adding a domain dom15.example. to master ns1 via RNDC ($n)" 1451 ret=0 1452 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom15.example.db 1453 echo "@ IN NS invalid." >> ns1/dom15.example.db 1454 rndccmd 10.53.0.1 addzone dom15.example. '{type master; file "dom15.example.db";};' || ret=1 1455 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1456 status=$((status+ret)) 1457 1458 n=$((n+1)) 1459 echo_i "checking that dom15.example. is now served by master ns1 ($n)" 1460 ret=0 1461 wait_for_soa @10.53.0.1 dom15.example. dig.out.test$n || ret=1 1462 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1463 status=$((status+ret)) 1464 1465 nextpart ns2/named.run >/dev/null 1466 1467 echo_i "Adding domain dom15.example. to catalog1 zone with 'dom15label1' label ($n)" 1468 ret=0 1469 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1470 server 10.53.0.1 ${PORT} 1471 update add dom15label1.zones.catalog1.example. 3600 IN PTR dom15.example. 1472 send 1473 END 1474 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1475 status=$((status+ret)) 1476 1477 n=$((n+1)) 1478 echo_i "waiting for slave to sync up ($n)" 1479 ret=0 1480 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1481 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1482 status=$((status+ret)) 1483 1484 sleep 3 1485 1486 n=$((n+1)) 1487 echo_i "checking that dom15.example. is served by slave ($n)" 1488 ret=0 1489 wait_for_soa @10.53.0.2 dom15.example. dig.out.test$n || ret=1 1490 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1491 status=$((status+ret)) 1492 1493 nextpart ns2/named.run >/dev/null 1494 1495 n=$((n+1)) 1496 echo_i "Changing label of domain dom15.example. from 'dom15label1' to 'dom15label2' ($n)" 1497 ret=0 1498 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1 1499 server 10.53.0.1 ${PORT} 1500 update delete dom15label1.zones.catalog1.example. 3600 IN PTR dom15.example. 1501 update add dom15label2.zones.catalog1.example. 3600 IN PTR dom15.example. 1502 send 1503 END 1504 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1505 status=$((status+ret)) 1506 1507 n=$((n+1)) 1508 echo_i "waiting for slave to sync up ($n)" 1509 ret=0 1510 wait_for_message ns2/named.run "catz: update_from_db: new zone merged" || ret=1 1511 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1512 status=$((status+ret)) 1513 1514 n=$((n+1)) 1515 echo_i "checking that dom15.example. is served by slave ($n)" 1516 ret=0 1517 wait_for_soa @10.53.0.2 dom15.example. dig.out.test$n || ret=1 1518 if [ $ret -ne 0 ]; then echo_i "failed"; fi 1519 status=$((status+ret)) 1520 1521 echo_i "exit status: $status" 1522 [ $status -eq 0 ] || exit 1 1523