1# $NetBSD: t_ra.sh,v 1.20 2017/01/11 03:15:44 ozaki-r Exp $ 2# 3# Copyright (c) 2015 Internet Initiative Japan Inc. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25# POSSIBILITY OF SUCH DAMAGE. 26# 27 28RUMPSRV=unix://r1 29RUMPSRV1_2=unix://r12 30RUMPCLI=unix://r2 31RUMPSRV3=unix://r3 32RUMPSRV4=unix://r4 33IP6SRV=fc00:1::1 34IP6SRV1_2=fc00:1::2 35IP6SRV_PREFIX=fc00:1: 36IP6CLI=fc00:2::2 37IP6SRV3=fc00:3::1 38IP6SRV3_PREFIX=fc00:3: 39IP6SRV4=fc00:4::1 40IP6SRV4_PREFIX=fc00:4: 41PIDFILE=./rump.rtadvd.pid 42PIDFILE1_2=./rump.rtadvd.pid12 43PIDFILE3=./rump.rtadvd.pid3 44PIDFILE4=./rump.rtadvd.pid4 45CONFIG=./rtadvd.conf 46WAITTIME=2 47DEBUG=${DEBUG:-true} 48 49init_server() 50{ 51 52 export RUMP_SERVER=$1 53 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.forwarding=1 54 export LD_PRELOAD=/usr/lib/librumphijack.so 55 atf_check -s exit:0 mkdir -p /rump/var/chroot/rtadvd 56 unset LD_PRELOAD 57 unset RUMP_SERVER 58} 59 60setup_shmif0() 61{ 62 local sock=$1 63 local IP6ADDR=$2 64 65 rump_server_add_iface $sock shmif0 bus1 66 67 export RUMP_SERVER=$sock 68 atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6ADDR} 69 atf_check -s exit:0 rump.ifconfig shmif0 up 70 atf_check -s exit:0 rump.ifconfig -w 10 71 72 $DEBUG && rump.ifconfig 73} 74 75wait_term() 76{ 77 local PIDFILE=${1} 78 shift 79 80 while [ -f ${PIDFILE} ] 81 do 82 sleep 0.2 83 done 84 85 return 0 86} 87 88create_rtadvdconfig() 89{ 90 91 cat << _EOF > ${CONFIG} 92shmif0:\ 93 :mtu#1300:maxinterval#4:mininterval#3: 94_EOF 95} 96 97start_rtadvd() 98{ 99 local sock=$1 100 local pidfile=$2 101 102 export RUMP_SERVER=$sock 103 atf_check -s exit:0 rump.rtadvd -c ${CONFIG} -p $pidfile shmif0 104 while [ ! -f $pidfile ]; do 105 sleep 0.2 106 done 107 unset RUMP_SERVER 108} 109 110check_entries() 111{ 112 local cli=$1 113 local srv=$2 114 local addr_prefix=$3 115 local mac_srv= ll_srv= 116 117 ll_srv=$(get_linklocal_addr $srv shmif0) 118 mac_srv=$(get_macaddr $srv shmif0) 119 120 export RUMP_SERVER=$cli 121 $DEBUG && dump_entries 122 atf_check -s exit:0 -o match:'if=shmif0' rump.ndp -r 123 atf_check -s exit:0 -o match:'advertised' rump.ndp -p 124 atf_check -s exit:0 -o match:"${ll_srv}%shmif0 \(reachable\)" rump.ndp -p 125 atf_check -s exit:0 -o match:'linkmtu=1300' rump.ndp -n -i shmif0 126 atf_check -s exit:0 \ 127 -o match:"$ll_srv%shmif0 +$mac_srv +shmif0 +(23h59m|1d0h0m)..s S R" \ 128 rump.ndp -n -a 129 atf_check -s exit:0 -o match:$addr_prefix rump.ndp -n -a 130 atf_check -s exit:0 -o match:"$addr_prefix.+<AUTOCONF>" \ 131 rump.ifconfig shmif0 inet6 132 unset RUMP_SERVER 133} 134 135dump_entries() 136{ 137 138 echo ndp -n -a 139 rump.ndp -n -a 140 echo ndp -p 141 rump.ndp -p 142 echo ndp -r 143 rump.ndp -r 144} 145 146atf_test_case ra_basic cleanup 147ra_basic_head() 148{ 149 150 atf_set "descr" "Tests for basic functions of router advaertisement(RA)" 151 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 152} 153 154ra_basic_body() 155{ 156 157 rump_server_fs_start $RUMPSRV netinet6 158 rump_server_start $RUMPCLI netinet6 159 160 setup_shmif0 ${RUMPSRV} ${IP6SRV} 161 init_server $RUMPSRV 162 163 setup_shmif0 ${RUMPCLI} ${IP6CLI} 164 export RUMP_SERVER=${RUMPCLI} 165 $DEBUG && rump.ndp -n -a 166 atf_check -s exit:0 -o match:'= 0' rump.sysctl net.inet6.ip6.accept_rtadv 167 unset RUMP_SERVER 168 169 create_rtadvdconfig 170 start_rtadvd $RUMPSRV $PIDFILE 171 sleep $WAITTIME 172 173 export RUMP_SERVER=${RUMPCLI} 174 atf_check -s exit:0 -o empty rump.ndp -r 175 atf_check -s exit:0 -o not-match:'advertised' rump.ndp -p 176 atf_check -s exit:0 -o match:'linkmtu=0' rump.ndp -n -i shmif0 177 atf_check -s exit:0 -o not-match:'S R' rump.ndp -n -a 178 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ndp -n -a 179 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ifconfig shmif0 inet6 180 unset RUMP_SERVER 181 182 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 183 wait_term ${PIDFILE} 184 185 export RUMP_SERVER=${RUMPCLI} 186 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 187 unset RUMP_SERVER 188 189 start_rtadvd $RUMPSRV $PIDFILE 190 sleep $WAITTIME 191 192 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 193 194 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 195 wait_term ${PIDFILE} 196 197 rump_server_destroy_ifaces 198} 199 200ra_basic_cleanup() 201{ 202 203 if [ -f ${PIDFILE} ]; then 204 kill -TERM `cat ${PIDFILE}` 205 wait_term ${PIDFILE} 206 fi 207 208 $DEBUG && dump 209 cleanup 210} 211 212atf_test_case ra_flush_prefix_entries cleanup 213ra_flush_prefix_entries_head() 214{ 215 216 atf_set "descr" "Tests for flushing prefixes (ndp -P)" 217 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 218} 219 220ra_flush_prefix_entries_body() 221{ 222 223 rump_server_fs_start $RUMPSRV netinet6 224 rump_server_start $RUMPCLI netinet6 225 226 setup_shmif0 ${RUMPSRV} ${IP6SRV} 227 setup_shmif0 ${RUMPCLI} ${IP6CLI} 228 229 init_server $RUMPSRV 230 231 create_rtadvdconfig 232 233 export RUMP_SERVER=${RUMPCLI} 234 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 235 unset RUMP_SERVER 236 237 start_rtadvd $RUMPSRV $PIDFILE 238 sleep $WAITTIME 239 240 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 241 242 export RUMP_SERVER=${RUMPCLI} 243 244 # Terminate rtadvd to prevent new RA messages from coming 245 # Note that ifconfig down; kill -TERM doesn't work 246 kill -KILL `cat ${PIDFILE}` 247 248 # Flush all the entries in the prefix list 249 atf_check -s exit:0 rump.ndp -P 250 251 $DEBUG && dump_entries 252 atf_check -s exit:0 -o match:'if=shmif0' rump.ndp -r 253 atf_check -s exit:0 -o empty rump.ndp -p 254 atf_check -s exit:0 -o match:'linkmtu=1300' rump.ndp -n -i shmif0 255 atf_check -s exit:0 -o match:'(23h59m|1d0h0m)..s S R' rump.ndp -n -a 256 atf_check -s exit:0 -o match:'fc00:1:' rump.ndp -n -a 257 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ifconfig shmif0 inet6 258 unset RUMP_SERVER 259 260 rump_server_destroy_ifaces 261} 262 263ra_flush_prefix_entries_cleanup() 264{ 265 266 $DEBUG && dump 267 cleanup 268} 269 270atf_test_case ra_flush_defrouter_entries cleanup 271ra_flush_defrouter_entries_head() 272{ 273 274 atf_set "descr" "Tests for flushing default routers (ndp -R)" 275 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 276} 277 278ra_flush_defrouter_entries_body() 279{ 280 281 rump_server_fs_start $RUMPSRV netinet6 282 rump_server_start $RUMPCLI netinet6 283 284 setup_shmif0 ${RUMPSRV} ${IP6SRV} 285 setup_shmif0 ${RUMPCLI} ${IP6CLI} 286 287 init_server $RUMPSRV 288 289 create_rtadvdconfig 290 291 export RUMP_SERVER=${RUMPCLI} 292 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 293 unset RUMP_SERVER 294 295 start_rtadvd $RUMPSRV $PIDFILE 296 sleep $WAITTIME 297 298 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 299 300 export RUMP_SERVER=${RUMPCLI} 301 302 # Terminate rtadvd to prevent new RA messages from coming 303 # Note that ifconfig down; kill -TERM doesn't work 304 kill -KILL `cat ${PIDFILE}` 305 306 # Flush all the entries in the default router list 307 atf_check -s exit:0 rump.ndp -R 308 309 $DEBUG && dump_entries 310 atf_check -s exit:0 -o empty rump.ndp -r 311 atf_check -s exit:0 -o match:'No advertising router' rump.ndp -p 312 atf_check -s exit:0 -o match:'linkmtu=1300' rump.ndp -n -i shmif0 313 atf_check -s exit:0 -o match:'(23h59m|1d0h0m)..s S R' rump.ndp -n -a 314 atf_check -s exit:0 -o match:'fc00:1:' rump.ndp -n -a 315 atf_check -s exit:0 -o match:'fc00:1:' rump.ifconfig shmif0 inet6 316 unset RUMP_SERVER 317 318 rump_server_destroy_ifaces 319} 320 321ra_flush_defrouter_entries_cleanup() 322{ 323 324 $DEBUG && dump 325 cleanup 326} 327 328atf_test_case ra_delete_address cleanup 329ra_delete_address_head() 330{ 331 332 atf_set "descr" "Tests for deleting auto-configured address" 333 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 334} 335 336ra_delete_address_body() 337{ 338 339 rump_server_fs_start $RUMPSRV netinet6 340 rump_server_start $RUMPCLI netinet6 341 342 setup_shmif0 ${RUMPSRV} ${IP6SRV} 343 setup_shmif0 ${RUMPCLI} ${IP6CLI} 344 345 init_server $RUMPSRV 346 347 create_rtadvdconfig 348 349 export RUMP_SERVER=${RUMPCLI} 350 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 351 unset RUMP_SERVER 352 353 start_rtadvd $RUMPSRV $PIDFILE 354 sleep $WAITTIME 355 356 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 357 358 export RUMP_SERVER=${RUMPCLI} 359 $DEBUG && rump.ifconfig shmif0 360 atf_check -s exit:0 rump.ifconfig shmif0 inet6 \ 361 $(rump.ifconfig shmif0 |awk '/AUTOCONF/ {print $2}') delete 362 unset RUMP_SERVER 363 364 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 365 wait_term ${PIDFILE} 366 367 rump_server_destroy_ifaces 368} 369 370ra_delete_address_cleanup() 371{ 372 373 if [ -f ${PIDFILE} ]; then 374 kill -TERM `cat ${PIDFILE}` 375 wait_term ${PIDFILE} 376 fi 377 378 $DEBUG && dump 379 cleanup 380} 381 382atf_test_case ra_multiple_routers cleanup 383ra_multiple_routers_head() 384{ 385 386 atf_set "descr" "Tests for multiple routers" 387 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 388} 389 390ra_multiple_routers_body() 391{ 392 local n= 393 394 rump_server_fs_start $RUMPSRV netinet6 395 rump_server_fs_start $RUMPSRV3 netinet6 396 rump_server_start $RUMPCLI netinet6 397 398 setup_shmif0 ${RUMPSRV} ${IP6SRV} 399 setup_shmif0 ${RUMPSRV3} ${IP6SRV3} 400 setup_shmif0 ${RUMPCLI} ${IP6CLI} 401 402 init_server $RUMPSRV 403 init_server $RUMPSRV3 404 405 create_rtadvdconfig 406 407 export RUMP_SERVER=${RUMPCLI} 408 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 409 unset RUMP_SERVER 410 411 start_rtadvd $RUMPSRV $PIDFILE 412 start_rtadvd $RUMPSRV3 $PIDFILE3 413 sleep $WAITTIME 414 415 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 416 check_entries $RUMPCLI $RUMPSRV3 $IP6SRV3_PREFIX 417 418 export RUMP_SERVER=$RUMPCLI 419 # Two prefixes are advertised by differnt two routers 420 n=$(rump.ndp -p |grep 'advertised by' |wc -l) 421 atf_check_equal $n 2 422 unset RUMP_SERVER 423 424 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 425 wait_term ${PIDFILE} 426 atf_check -s exit:0 kill -TERM `cat ${PIDFILE3}` 427 wait_term ${PIDFILE3} 428 429 rump_server_destroy_ifaces 430} 431 432ra_multiple_routers_cleanup() 433{ 434 435 if [ -f ${PIDFILE} ]; then 436 kill -TERM `cat ${PIDFILE}` 437 wait_term ${PIDFILE} 438 fi 439 if [ -f ${PIDFILE3} ]; then 440 kill -TERM `cat ${PIDFILE3}` 441 wait_term ${PIDFILE3} 442 fi 443 444 $DEBUG && dump 445 cleanup 446} 447 448atf_test_case ra_multiple_routers_single_prefix cleanup 449ra_multiple_routers_single_prefix_head() 450{ 451 452 atf_set "descr" "Tests for multiple routers with a single prefix" 453 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 454} 455 456ra_multiple_routers_single_prefix_body() 457{ 458 local n= 459 460 rump_server_fs_start $RUMPSRV netinet6 461 rump_server_fs_start $RUMPSRV1_2 netinet6 462 rump_server_start $RUMPCLI netinet6 463 464 setup_shmif0 ${RUMPSRV} ${IP6SRV} 465 setup_shmif0 ${RUMPSRV1_2} ${IP6SRV1_2} 466 setup_shmif0 ${RUMPCLI} ${IP6CLI} 467 468 init_server $RUMPSRV 469 init_server $RUMPSRV1_2 470 471 create_rtadvdconfig 472 473 export RUMP_SERVER=${RUMPCLI} 474 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 475 unset RUMP_SERVER 476 477 start_rtadvd $RUMPSRV $PIDFILE 478 start_rtadvd $RUMPSRV1_2 $PIDFILE1_2 479 sleep $WAITTIME 480 481 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 482 check_entries $RUMPCLI $RUMPSRV1_2 $IP6SRV_PREFIX 483 484 export RUMP_SERVER=$RUMPCLI 485 # One prefix is advertised by differnt two routers 486 n=$(rump.ndp -p |grep 'advertised by' |wc -l) 487 atf_check_equal $n 1 488 unset RUMP_SERVER 489 490 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 491 wait_term ${PIDFILE} 492 atf_check -s exit:0 kill -TERM `cat ${PIDFILE1_2}` 493 wait_term ${PIDFILE1_2} 494 495 rump_server_destroy_ifaces 496} 497 498ra_multiple_routers_single_prefix_cleanup() 499{ 500 501 if [ -f ${PIDFILE} ]; then 502 kill -TERM `cat ${PIDFILE}` 503 wait_term ${PIDFILE} 504 fi 505 if [ -f ${PIDFILE1_2} ]; then 506 kill -TERM `cat ${PIDFILE1_2}` 507 wait_term ${PIDFILE1_2} 508 fi 509 510 $DEBUG && dump 511 cleanup 512} 513 514atf_test_case ra_multiple_routers_maxifprefixes cleanup 515ra_multiple_routers_maxifprefixes_head() 516{ 517 518 atf_set "descr" "Tests for exceeding the number of maximum prefixes" 519 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 520} 521 522ra_multiple_routers_maxifprefixes_body() 523{ 524 local n= 525 526 rump_server_fs_start $RUMPSRV netinet6 527 rump_server_fs_start $RUMPSRV3 netinet6 528 rump_server_fs_start $RUMPSRV4 netinet6 529 rump_server_start $RUMPCLI netinet6 530 531 setup_shmif0 ${RUMPSRV} ${IP6SRV} 532 setup_shmif0 ${RUMPSRV3} ${IP6SRV3} 533 setup_shmif0 ${RUMPSRV4} ${IP6SRV4} 534 setup_shmif0 ${RUMPCLI} ${IP6CLI} 535 536 init_server $RUMPSRV 537 init_server $RUMPSRV3 538 init_server $RUMPSRV4 539 540 create_rtadvdconfig 541 542 export RUMP_SERVER=${RUMPCLI} 543 atf_check -s exit:0 -o match:'0.->.1' \ 544 rump.sysctl -w net.inet6.ip6.accept_rtadv=1 545 # Limit the maximum number of prefix entries to 2 546 atf_check -s exit:0 -o match:'16.->.2' \ 547 rump.sysctl -w net.inet6.ip6.maxifprefixes=2 548 unset RUMP_SERVER 549 550 start_rtadvd $RUMPSRV $PIDFILE 551 start_rtadvd $RUMPSRV3 $PIDFILE3 552 sleep $WAITTIME 553 554 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 555 check_entries $RUMPCLI $RUMPSRV3 $IP6SRV3_PREFIX 556 557 start_rtadvd $RUMPSRV4 $PIDFILE4 558 sleep $WAITTIME 559 560 export RUMP_SERVER=${RUMPCLI} 561 $DEBUG && dump_entries 562 # There should remain two prefixes 563 n=$(rump.ndp -p |grep 'advertised by' |wc -l) 564 atf_check_equal $n 2 565 # TODO check other conditions 566 unset RUMP_SERVER 567 568 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 569 wait_term ${PIDFILE} 570 atf_check -s exit:0 kill -TERM `cat ${PIDFILE3}` 571 wait_term ${PIDFILE3} 572 atf_check -s exit:0 kill -TERM `cat ${PIDFILE4}` 573 wait_term ${PIDFILE4} 574 575 rump_server_destroy_ifaces 576} 577 578ra_multiple_routers_maxifprefixes_cleanup() 579{ 580 581 if [ -f ${PIDFILE} ]; then 582 kill -TERM `cat ${PIDFILE}` 583 wait_term ${PIDFILE} 584 fi 585 if [ -f ${PIDFILE3} ]; then 586 kill -TERM `cat ${PIDFILE3}` 587 wait_term ${PIDFILE3} 588 fi 589 if [ -f ${PIDFILE4} ]; then 590 kill -TERM `cat ${PIDFILE4}` 591 wait_term ${PIDFILE4} 592 fi 593 594 $DEBUG && dump 595 cleanup 596} 597 598atf_test_case ra_temporary_address cleanup 599ra_temporary_address_head() 600{ 601 602 atf_set "descr" "Tests for IPv6 temporary address" 603 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 604} 605 606ra_temporary_address_body() 607{ 608 609 rump_server_fs_start $RUMPSRV netinet6 610 rump_server_start $RUMPCLI netinet6 611 612 setup_shmif0 ${RUMPSRV} ${IP6SRV} 613 init_server $RUMPSRV 614 615 setup_shmif0 ${RUMPCLI} ${IP6CLI} 616 export RUMP_SERVER=${RUMPCLI} 617 $DEBUG && rump.ndp -n -a 618 atf_check -s exit:0 -o match:'= 0' \ 619 rump.sysctl net.inet6.ip6.accept_rtadv 620 atf_check -s exit:0 -o match:'= 0' \ 621 rump.sysctl net.inet6.ip6.use_tempaddr 622 unset RUMP_SERVER 623 624 create_rtadvdconfig 625 start_rtadvd $RUMPSRV $PIDFILE 626 sleep $WAITTIME 627 628 export RUMP_SERVER=${RUMPCLI} 629 atf_check -s exit:0 -o empty rump.ndp -r 630 atf_check -s exit:0 -o not-match:'advertised' rump.ndp -p 631 atf_check -s exit:0 -o match:'linkmtu=0' rump.ndp -n -i shmif0 632 atf_check -s exit:0 -o not-match:'S R' rump.ndp -n -a 633 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ndp -n -a 634 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ifconfig shmif0 inet6 635 unset RUMP_SERVER 636 637 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 638 wait_term ${PIDFILE} 639 640 export RUMP_SERVER=${RUMPCLI} 641 atf_check -s exit:0 -o match:'0.->.1' \ 642 rump.sysctl -w net.inet6.ip6.accept_rtadv=1 643 atf_check -s exit:0 -o match:'0.->.1' \ 644 rump.sysctl -w net.inet6.ip6.use_tempaddr=1 645 unset RUMP_SERVER 646 647 start_rtadvd $RUMPSRV $PIDFILE 648 sleep $WAITTIME 649 650 check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX 651 652 # Check temporary address 653 export RUMP_SERVER=${RUMPCLI} 654 atf_check -s exit:0 -o match:"$IP6SRV_PREFIX.+<AUTOCONF,TEMPORARY>" \ 655 rump.ifconfig shmif0 inet6 656 unset RUMP_SERVER 657 658 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 659 wait_term ${PIDFILE} 660 661 rump_server_destroy_ifaces 662} 663 664ra_temporary_address_cleanup() 665{ 666 667 if [ -f ${PIDFILE} ]; then 668 kill -TERM `cat ${PIDFILE}` 669 wait_term ${PIDFILE} 670 fi 671 672 $DEBUG && dump 673 cleanup 674} 675 676atf_init_test_cases() 677{ 678 679 atf_add_test_case ra_basic 680 atf_add_test_case ra_flush_prefix_entries 681 atf_add_test_case ra_flush_defrouter_entries 682 atf_add_test_case ra_delete_address 683 atf_add_test_case ra_multiple_routers 684 atf_add_test_case ra_multiple_routers_single_prefix 685 atf_add_test_case ra_multiple_routers_maxifprefixes 686 atf_add_test_case ra_temporary_address 687} 688