1# $NetBSD: t_gif.sh,v 1.9 2016/12/21 09:46:39 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 28SOCK1=unix://commsock1 # for ROUTER1 29SOCK2=unix://commsock2 # for ROUTER2 30ROUTER1_LANIP=192.168.1.1 31ROUTER1_LANNET=192.168.1.0/24 32ROUTER1_WANIP=10.0.0.1 33ROUTER1_GIFIP=172.16.1.1 34ROUTER1_WANIP_DUMMY=10.0.0.11 35ROUTER1_GIFIP_DUMMY=172.16.11.1 36ROUTER1_GIFIP_RECURSIVE1=172.16.101.1 37ROUTER1_GIFIP_RECURSIVE2=172.16.201.1 38ROUTER2_LANIP=192.168.2.1 39ROUTER2_LANNET=192.168.2.0/24 40ROUTER2_WANIP=10.0.0.2 41ROUTER2_GIFIP=172.16.2.1 42ROUTER2_WANIP_DUMMY=10.0.0.12 43ROUTER2_GIFIP_DUMMY=172.16.12.1 44ROUTER2_GIFIP_RECURSIVE1=172.16.102.1 45ROUTER2_GIFIP_RECURSIVE2=172.16.202.1 46 47ROUTER1_LANIP6=fc00:1::1 48ROUTER1_LANNET6=fc00:1::/64 49ROUTER1_WANIP6=fc00::1 50ROUTER1_GIFIP6=fc00:3::1 51ROUTER1_WANIP6_DUMMY=fc00::11 52ROUTER1_GIFIP6_DUMMY=fc00:13::1 53ROUTER1_GIFIP6_RECURSIVE1=fc00:103::1 54ROUTER1_GIFIP6_RECURSIVE2=fc00:203::1 55ROUTER2_LANIP6=fc00:2::1 56ROUTER2_LANNET6=fc00:2::/64 57ROUTER2_WANIP6=fc00::2 58ROUTER2_GIFIP6=fc00:4::1 59ROUTER2_WANIP6_DUMMY=fc00::12 60ROUTER2_GIFIP6_DUMMY=fc00:14::1 61ROUTER2_GIFIP6_RECURSIVE1=fc00:104::1 62ROUTER2_GIFIP6_RECURSIVE2=fc00:204::1 63 64DEBUG=${DEBUG:-true} 65TIMEOUT=5 66 67setup_router() 68{ 69 sock=${1} 70 lan=${2} 71 lan_mode=${3} 72 wan=${4} 73 wan_mode=${5} 74 75 rump_server_add_iface $sock shmif0 bus0 76 rump_server_add_iface $sock shmif1 bus1 77 78 export RUMP_SERVER=${sock} 79 if [ ${lan_mode} = "ipv6" ]; then 80 atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${lan} 81 else 82 atf_check -s exit:0 rump.ifconfig shmif0 inet ${lan} netmask 0xffffff00 83 fi 84 atf_check -s exit:0 rump.ifconfig shmif0 up 85 rump.ifconfig shmif0 86 87 if [ ${wan_mode} = "ipv6" ]; then 88 atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${wan} 89 else 90 atf_check -s exit:0 rump.ifconfig shmif1 inet ${wan} netmask 0xff000000 91 fi 92 atf_check -s exit:0 rump.ifconfig shmif1 up 93 rump.ifconfig shmif1 94} 95 96test_router() 97{ 98 sock=${1} 99 lan=${2} 100 lan_mode=${3} 101 wan=${4} 102 wan_mode=${5} 103 104 export RUMP_SERVER=${sock} 105 atf_check -s exit:0 -o match:shmif0 rump.ifconfig 106 if [ ${lan_mode} = "ipv6" ]; then 107 atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${lan} 108 else 109 atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${lan} 110 fi 111 112 atf_check -s exit:0 -o match:shmif1 rump.ifconfig 113 if [ ${wan_mode} = "ipv6" ]; then 114 atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${wan} 115 else 116 atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${wan} 117 fi 118} 119 120setup() 121{ 122 inner=${1} 123 outer=${2} 124 125 rump_server_start $SOCK1 netinet6 gif 126 rump_server_start $SOCK2 netinet6 gif 127 128 router1_lan="" 129 router1_lan_mode="" 130 router2_lan="" 131 router2_lan_mode="" 132 if [ ${inner} = "ipv6" ]; then 133 router1_lan=$ROUTER1_LANIP6 134 router1_lan_mode="ipv6" 135 router2_lan=$ROUTER2_LANIP6 136 router2_lan_mode="ipv6" 137 else 138 router1_lan=$ROUTER1_LANIP 139 router1_lan_mode="ipv4" 140 router2_lan=$ROUTER2_LANIP 141 router2_lan_mode="ipv4" 142 fi 143 144 if [ ${outer} = "ipv6" ]; then 145 setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ 146 $ROUTER1_WANIP6 ipv6 147 setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ 148 $ROUTER2_WANIP6 ipv6 149 else 150 setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ 151 $ROUTER1_WANIP ipv4 152 setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ 153 $ROUTER2_WANIP ipv4 154 fi 155} 156 157test_setup() 158{ 159 inner=${1} 160 outer=${2} 161 162 router1_lan="" 163 router1_lan_mode="" 164 router2_lan="" 165 router2_lan_mode="" 166 if [ ${inner} = "ipv6" ]; then 167 router1_lan=$ROUTER1_LANIP6 168 router1_lan_mode="ipv6" 169 router2_lan=$ROUTER2_LANIP6 170 router2_lan_mode="ipv6" 171 else 172 router1_lan=$ROUTER1_LANIP 173 router1_lan_mode="ipv4" 174 router2_lan=$ROUTER2_LANIP 175 router2_lan_mode="ipv4" 176 fi 177 if [ ${outer} = "ipv6" ]; then 178 test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ 179 $ROUTER1_WANIP6 ipv6 180 test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ 181 $ROUTER2_WANIP6 ipv6 182 else 183 test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ 184 $ROUTER1_WANIP ipv4 185 test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ 186 $ROUTER2_WANIP ipv4 187 fi 188} 189 190setup_if_gif() 191{ 192 sock=${1} 193 addr=${2} 194 remote=${3} 195 inner=${4} 196 src=${5} 197 dst=${6} 198 peernet=${7} 199 200 export RUMP_SERVER=${sock} 201 atf_check -s exit:0 rump.ifconfig gif0 create 202 atf_check -s exit:0 rump.ifconfig gif0 tunnel ${src} ${dst} 203 if [ ${inner} = "ipv6" ]; then 204 atf_check -s exit:0 rump.ifconfig gif0 inet6 ${addr}/128 ${remote} 205 atf_check -s exit:0 -o ignore rump.route add -inet6 ${peernet} ${addr} 206 else 207 atf_check -s exit:0 rump.ifconfig gif0 inet ${addr}/32 ${remote} 208 atf_check -s exit:0 -o ignore rump.route add -inet ${peernet} ${addr} 209 fi 210 211 rump.ifconfig gif0 212 rump.route -nL show 213} 214 215setup_tunnel() 216{ 217 inner=${1} 218 outer=${2} 219 220 addr="" 221 remote="" 222 src="" 223 dst="" 224 peernet="" 225 226 if [ ${inner} = "ipv6" ]; then 227 addr=$ROUTER1_GIFIP6 228 remote=$ROUTER2_GIFIP6 229 peernet=$ROUTER2_LANNET6 230 else 231 addr=$ROUTER1_GIFIP 232 remote=$ROUTER2_GIFIP 233 peernet=$ROUTER2_LANNET 234 fi 235 if [ ${outer} = "ipv6" ]; then 236 src=$ROUTER1_WANIP6 237 dst=$ROUTER2_WANIP6 238 else 239 src=$ROUTER1_WANIP 240 dst=$ROUTER2_WANIP 241 fi 242 setup_if_gif $SOCK1 ${addr} ${remote} ${inner} \ 243 ${src} ${dst} ${peernet} 244 245 if [ $inner = "ipv6" ]; then 246 addr=$ROUTER2_GIFIP6 247 remote=$ROUTER1_GIFIP6 248 peernet=$ROUTER1_LANNET6 249 else 250 addr=$ROUTER2_GIFIP 251 remote=$ROUTER1_GIFIP 252 peernet=$ROUTER1_LANNET 253 fi 254 if [ $outer = "ipv6" ]; then 255 src=$ROUTER2_WANIP6 256 dst=$ROUTER1_WANIP6 257 else 258 src=$ROUTER2_WANIP 259 dst=$ROUTER1_WANIP 260 fi 261 setup_if_gif $SOCK2 ${addr} ${remote} ${inner} \ 262 ${src} ${dst} ${peernet} 263} 264 265test_setup_tunnel() 266{ 267 mode=${1} 268 269 peernet="" 270 opt="" 271 if [ ${mode} = "ipv6" ]; then 272 peernet=$ROUTER2_LANNET6 273 opt="-inet6" 274 else 275 peernet=$ROUTER2_LANNET 276 opt="-inet" 277 fi 278 export RUMP_SERVER=$SOCK1 279 atf_check -s exit:0 -o match:gif0 rump.ifconfig 280 atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet} 281 282 if [ ${mode} = "ipv6" ]; then 283 peernet=$ROUTER1_LANNET6 284 opt="-inet6" 285 else 286 peernet=$ROUTER1_LANNET 287 opt="-inet" 288 fi 289 export RUMP_SERVER=$SOCK2 290 atf_check -s exit:0 -o match:gif0 rump.ifconfig 291 atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet} 292} 293 294teardown_tunnel() 295{ 296 export RUMP_SERVER=$SOCK1 297 atf_check -s exit:0 rump.ifconfig gif0 deletetunnel 298 atf_check -s exit:0 rump.ifconfig gif0 destroy 299 300 export RUMP_SERVER=$SOCK2 301 atf_check -s exit:0 rump.ifconfig gif0 deletetunnel 302 atf_check -s exit:0 rump.ifconfig gif0 destroy 303} 304 305setup_dummy_if_gif() 306{ 307 sock=${1} 308 addr=${2} 309 remote=${3} 310 inner=${4} 311 src=${5} 312 dst=${6} 313 314 export RUMP_SERVER=${sock} 315 atf_check -s exit:0 rump.ifconfig gif1 create 316 atf_check -s exit:0 rump.ifconfig gif1 tunnel ${src} ${dst} 317 if [ ${inner} = "ipv6" ]; then 318 atf_check -s exit:0 rump.ifconfig gif1 inet6 ${addr}/128 ${remote} 319 else 320 atf_check -s exit:0 rump.ifconfig gif1 inet ${addr}/32 ${remote} 321 fi 322 323 rump.ifconfig gif1 324} 325 326setup_dummy_tunnel() 327{ 328 inner=${1} 329 outer=${2} 330 331 addr="" 332 remote="" 333 src="" 334 dst="" 335 336 if [ ${inner} = "ipv6" ]; then 337 addr=$ROUTER1_GIFIP6_DUMMY 338 remote=$ROUTER2_GIFIP6_DUMMY 339 else 340 addr=$ROUTER1_GIFIP_DUMMY 341 remote=$ROUTER2_GIFIP_DUMMY 342 fi 343 if [ ${outer} = "ipv6" ]; then 344 src=$ROUTER1_WANIP6_DUMMY 345 dst=$ROUTER2_WANIP6_DUMMY 346 else 347 src=$ROUTER1_WANIP_DUMMY 348 dst=$ROUTER2_WANIP_DUMMY 349 fi 350 setup_dummy_if_gif $SOCK1 ${addr} ${remote} ${inner} \ 351 ${src} ${dst} 352 353 if [ $inner = "ipv6" ]; then 354 addr=$ROUTER2_GIFIP6_DUMMY 355 remote=$ROUTER1_GIFIP6_DUMMY 356 else 357 addr=$ROUTER2_GIFIP_DUMMY 358 remote=$ROUTER1_GIFIP_DUMMY 359 fi 360 if [ $outer = "ipv6" ]; then 361 src=$ROUTER2_WANIP6_DUMMY 362 dst=$ROUTER1_WANIP6_DUMMY 363 else 364 src=$ROUTER2_WANIP_DUMMY 365 dst=$ROUTER1_WANIP_DUMMY 366 fi 367 setup_dummy_if_gif $SOCK2 ${addr} ${remote} ${inner} \ 368 ${src} ${dst} 369} 370 371test_setup_dummy_tunnel() 372{ 373 export RUMP_SERVER=$SOCK1 374 atf_check -s exit:0 -o match:gif1 rump.ifconfig 375 376 export RUMP_SERVER=$SOCK2 377 atf_check -s exit:0 -o match:gif1 rump.ifconfig 378} 379 380teardown_dummy_tunnel() 381{ 382 export RUMP_SERVER=$SOCK1 383 atf_check -s exit:0 rump.ifconfig gif1 deletetunnel 384 atf_check -s exit:0 rump.ifconfig gif1 destroy 385 386 export RUMP_SERVER=$SOCK2 387 atf_check -s exit:0 rump.ifconfig gif1 deletetunnel 388 atf_check -s exit:0 rump.ifconfig gif1 destroy 389} 390 391setup_recursive_if_gif() 392{ 393 sock=${1} 394 gif=${2} 395 addr=${3} 396 remote=${4} 397 inner=${5} 398 src=${6} 399 dst=${7} 400 401 export RUMP_SERVER=${sock} 402 atf_check -s exit:0 rump.ifconfig ${gif} create 403 atf_check -s exit:0 rump.ifconfig ${gif} tunnel ${src} ${dst} 404 if [ ${inner} = "ipv6" ]; then 405 atf_check -s exit:0 rump.ifconfig ${gif} inet6 ${addr}/128 ${remote} 406 else 407 atf_check -s exit:0 rump.ifconfig ${gif} inet ${addr}/32 ${remote} 408 fi 409 410 rump.ifconfig ${gif} 411} 412 413# test in ROUTER1 only 414setup_recursive_tunnels() 415{ 416 mode=${1} 417 418 addr="" 419 remote="" 420 src="" 421 dst="" 422 423 if [ ${mode} = "ipv6" ]; then 424 addr=$ROUTER1_GIFIP6_RECURSIVE1 425 remote=$ROUTER2_GIFIP6_RECURSIVE1 426 src=$ROUTER1_GIFIP6 427 dst=$ROUTER2_GIFIP6 428 else 429 addr=$ROUTER1_GIFIP_RECURSIVE1 430 remote=$ROUTER2_GIFIP_RECURSIVE1 431 src=$ROUTER1_GIFIP 432 dst=$ROUTER2_GIFIP 433 fi 434 setup_recursive_if_gif $SOCK1 gif1 ${addr} ${remote} ${mode} \ 435 ${src} ${dst} 436 437 if [ ${mode} = "ipv6" ]; then 438 addr=$ROUTER1_GIFIP6_RECURSIVE2 439 remote=$ROUTER2_GIFIP6_RECURSIVE2 440 src=$ROUTER1_GIFIP6_RECURSIVE1 441 dst=$ROUTER2_GIFIP6_RECURSIVE1 442 else 443 addr=$ROUTER1_GIFIP_RECURSIVE2 444 remote=$ROUTER2_GIFIP_RECURSIVE2 445 src=$ROUTER1_GIFIP_RECURSIVE1 446 dst=$ROUTER2_GIFIP_RECURSIVE1 447 fi 448 setup_recursive_if_gif $SOCK1 gif2 ${addr} ${remote} ${mode} \ 449 ${src} ${dst} 450} 451 452# test in router1 only 453test_recursive_check() 454{ 455 mode=$1 456 457 export RUMP_SERVER=$SOCK1 458 if [ ${mode} = "ipv6" ]; then 459 atf_check -s not-exit:0 -o ignore -e ignore \ 460 rump.ping6 -n -X $TIMEOUT -c 1 $ROUTER2_GIFIP6_RECURSIVE2 461 else 462 atf_check -s not-exit:0 -o ignore -e ignore \ 463 rump.ping -n -w $TIMEOUT -c 1 $ROUTER2_GIFIP_RECURSIVE2 464 fi 465 466 atf_check -o match:'gif0: recursively called too many times' \ 467 -x "$HIJACKING dmesg" 468 469 $HIJACKING dmesg 470} 471 472teardown_recursive_tunnels() 473{ 474 export RUMP_SERVER=$SOCK1 475 atf_check -s exit:0 rump.ifconfig gif1 deletetunnel 476 atf_check -s exit:0 rump.ifconfig gif1 destroy 477 atf_check -s exit:0 rump.ifconfig gif2 deletetunnel 478 atf_check -s exit:0 rump.ifconfig gif2 destroy 479} 480 481test_ping_failure() 482{ 483 mode=$1 484 485 export RUMP_SERVER=$SOCK1 486 if [ ${mode} = "ipv6" ]; then 487 atf_check -s not-exit:0 -o ignore -e ignore \ 488 rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \ 489 $ROUTER2_LANIP6 490 else 491 atf_check -s not-exit:0 -o ignore -e ignore \ 492 rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ 493 $ROUTER2_LANIP 494 fi 495 496 export RUMP_SERVER=$SOCK2 497 if [ ${mode} = "ipv6" ]; then 498 atf_check -s not-exit:0 -o ignore -e ignore \ 499 rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \ 500 $ROUTER1_LANIP6 501 else 502 atf_check -s not-exit:0 -o ignore -e ignore \ 503 rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ 504 $ROUTER2_LANIP 505 fi 506} 507 508test_ping_success() 509{ 510 mode=$1 511 512 export RUMP_SERVER=$SOCK1 513 rump.ifconfig -v gif0 514 if [ ${mode} = "ipv6" ]; then 515 # XXX 516 # rump.ping6 rarely fails with the message that 517 # "failed to get receiving hop limit". 518 # This is a known issue being analyzed. 519 atf_check -s exit:0 -o ignore \ 520 rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \ 521 $ROUTER2_LANIP6 522 else 523 atf_check -s exit:0 -o ignore \ 524 rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ 525 $ROUTER2_LANIP 526 fi 527 rump.ifconfig -v gif0 528 529 export RUMP_SERVER=$SOCK2 530 rump.ifconfig -v gif0 531 if [ ${mode} = "ipv6" ]; then 532 atf_check -s exit:0 -o ignore \ 533 rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \ 534 $ROUTER1_LANIP6 535 else 536 atf_check -s exit:0 -o ignore \ 537 rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER2_LANIP \ 538 $ROUTER1_LANIP 539 fi 540 rump.ifconfig -v gif0 541} 542 543test_change_tunnel_duplicate() 544{ 545 mode=$1 546 547 newsrc="" 548 newdst="" 549 if [ ${mode} = "ipv6" ]; then 550 newsrc=$ROUTER1_WANIP6_DUMMY 551 newdst=$ROUTER2_WANIP6_DUMMY 552 else 553 newsrc=$ROUTER1_WANIP_DUMMY 554 newdst=$ROUTER2_WANIP_DUMMY 555 fi 556 export RUMP_SERVER=$SOCK1 557 rump.ifconfig -v gif0 558 rump.ifconfig -v gif1 559 atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \ 560 rump.ifconfig gif0 tunnel ${newsrc} ${newdst} 561 rump.ifconfig -v gif0 562 rump.ifconfig -v gif1 563 564 if [ ${mode} = "ipv6" ]; then 565 newsrc=$ROUTER2_WANIP6_DUMMY 566 newdst=$ROUTER1_WANIP6_DUMMY 567 else 568 newsrc=$ROUTER2_WANIP_DUMMY 569 newdst=$ROUTER1_WANIP_DUMMY 570 fi 571 export RUMP_SERVER=$SOCK2 572 rump.ifconfig -v gif0 573 rump.ifconfig -v gif1 574 atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \ 575 rump.ifconfig gif0 tunnel ${newsrc} ${newdst} 576 rump.ifconfig -v gif0 577 rump.ifconfig -v gif1 578} 579 580test_change_tunnel_success() 581{ 582 mode=$1 583 584 newsrc="" 585 newdst="" 586 if [ ${mode} = "ipv6" ]; then 587 newsrc=$ROUTER1_WANIP6_DUMMY 588 newdst=$ROUTER2_WANIP6_DUMMY 589 else 590 newsrc=$ROUTER1_WANIP_DUMMY 591 newdst=$ROUTER2_WANIP_DUMMY 592 fi 593 export RUMP_SERVER=$SOCK1 594 rump.ifconfig -v gif0 595 atf_check -s exit:0 \ 596 rump.ifconfig gif0 tunnel ${newsrc} ${newdst} 597 rump.ifconfig -v gif0 598 599 if [ ${mode} = "ipv6" ]; then 600 newsrc=$ROUTER2_WANIP6_DUMMY 601 newdst=$ROUTER1_WANIP6_DUMMY 602 else 603 newsrc=$ROUTER2_WANIP_DUMMY 604 newdst=$ROUTER1_WANIP_DUMMY 605 fi 606 export RUMP_SERVER=$SOCK2 607 rump.ifconfig -v gif0 608 atf_check -s exit:0 \ 609 rump.ifconfig gif0 tunnel ${newsrc} ${newdst} 610 rump.ifconfig -v gif0 611} 612 613basic_setup() 614{ 615 inner=$1 616 outer=$2 617 618 setup ${inner} ${outer} 619 test_setup ${inner} ${outer} 620 621 # Enable once PR kern/49219 is fixed 622 #test_ping_failure 623 624 setup_tunnel ${inner} ${outer} 625 sleep 1 626 test_setup_tunnel ${inner} 627} 628 629basic_test() 630{ 631 inner=$1 632 outer=$2 # not use 633 634 test_ping_success ${inner} 635} 636 637basic_teardown() 638{ 639 inner=$1 640 outer=$2 # not use 641 642 teardown_tunnel 643 test_ping_failure ${inner} 644} 645 646ioctl_setup() 647{ 648 inner=$1 649 outer=$2 650 651 setup ${inner} ${outer} 652 test_setup ${inner} ${outer} 653 654 # Enable once PR kern/49219 is fixed 655 #test_ping_failure 656 657 setup_tunnel ${inner} ${outer} 658 setup_dummy_tunnel ${inner} ${outer} 659 sleep 1 660 test_setup_tunnel ${inner} 661} 662 663ioctl_test() 664{ 665 inner=$1 666 outer=$2 667 668 test_ping_success ${inner} 669 670 test_change_tunnel_duplicate ${outer} 671 672 teardown_dummy_tunnel 673 test_change_tunnel_success ${outer} 674} 675 676ioctl_teardown() 677{ 678 inner=$1 679 outer=$2 # not use 680 681 teardown_tunnel 682 test_ping_failure ${inner} 683} 684 685recursive_setup() 686{ 687 inner=$1 688 outer=$2 689 690 setup ${inner} ${outer} 691 test_setup ${inner} ${outer} 692 693 # Enable once PR kern/49219 is fixed 694 #test_ping_failure 695 696 setup_tunnel ${inner} ${outer} 697 setup_recursive_tunnels ${inner} 698 sleep 1 699 test_setup_tunnel ${inner} 700} 701 702recursive_test() 703{ 704 inner=$1 705 outer=$2 # not use 706 707 test_recursive_check ${inner} 708} 709 710recursive_teardown() 711{ 712 inner=$1 # not use 713 outer=$2 # not use 714 715 teardown_recursive_tunnels 716 teardown_tunnel 717} 718 719add_test() 720{ 721 category=$1 722 desc=$2 723 inner=$3 724 outer=$4 725 726 name="gif_${category}_${inner}over${outer}" 727 fulldesc="Does ${inner} over ${outer} if_gif ${desc}" 728 729 atf_test_case ${name} cleanup 730 eval "${name}_head() { \ 731 atf_set \"descr\" \"${fulldesc}\"; \ 732 atf_set \"require.progs\" \"rump_server\"; \ 733 }; \ 734 ${name}_body() { \ 735 ${category}_setup ${inner} ${outer}; \ 736 ${category}_test ${inner} ${outer}; \ 737 ${category}_teardown ${inner} ${outer}; \ 738 rump_server_destroy_ifaces; \ 739 }; \ 740 ${name}_cleanup() { \ 741 $DEBUG && dump; \ 742 cleanup; \ 743 }" 744 atf_add_test_case ${name} 745} 746 747add_test_allproto() 748{ 749 category=$1 750 desc=$2 751 752 add_test ${category} "${desc}" ipv4 ipv4 753 add_test ${category} "${desc}" ipv4 ipv6 754 add_test ${category} "${desc}" ipv6 ipv4 755 add_test ${category} "${desc}" ipv6 ipv6 756} 757 758atf_init_test_cases() 759{ 760 add_test_allproto basic "basic tests" 761 add_test_allproto ioctl "ioctl tests" 762 add_test_allproto recursive "recursive check tests" 763} 764