1# $NetBSD: t_pppoe.sh,v 1.33 2021/06/01 05:18:33 yamaguchi Exp $ 2# 3# Copyright (c) 2016 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 28SERVER=unix://pppoe_server 29CLIENT=unix://pppoe_client 30 31SERVER_IP=10.3.3.1 32CLIENT_IP=10.3.3.3 33SERVER_IP6=fc00::1 34CLIENT_IP6=fc00::3 35AUTHNAME=foobar@baz.com 36SECRET=oink 37BUS=bus0 38TIMEOUT=3 39WAITTIME=10 40DEBUG=${DEBUG:-false} 41 42atf_ifconfig() 43{ 44 45 atf_check -s exit:0 rump.ifconfig $* 46} 47 48atf_pppoectl() 49{ 50 51 atf_check -s exit:0 -x "$HIJACKING pppoectl $*" 52} 53 54atf_test_case pppoe_create_destroy cleanup 55pppoe_create_destroy_head() 56{ 57 58 atf_set "descr" "Test creating/destroying pppoe interfaces" 59 atf_set "require.progs" "rump_server" 60} 61 62pppoe_create_destroy_body() 63{ 64 65 rump_server_start $CLIENT netinet6 pppoe 66 67 test_create_destroy_common $CLIENT pppoe0 true 68} 69 70pppoe_create_destroy_cleanup() 71{ 72 73 $DEBUG && dump 74 cleanup 75} 76 77setup_ifaces() 78{ 79 80 rump_server_add_iface $SERVER shmif0 $BUS 81 rump_server_add_iface $CLIENT shmif0 $BUS 82 rump_server_add_iface $SERVER pppoe0 83 rump_server_add_iface $CLIENT pppoe0 84 85 export RUMP_SERVER=$SERVER 86 atf_ifconfig shmif0 up 87 $inet && atf_ifconfig pppoe0 \ 88 inet $SERVER_IP $CLIENT_IP down 89 atf_ifconfig pppoe0 link0 90 91 $DEBUG && rump.ifconfig pppoe0 debug 92 $DEBUG && rump.ifconfig 93 $DEBUG && $HIJACKING pppoectl -d pppoe0 94 unset RUMP_SERVER 95 96 export RUMP_SERVER=$CLIENT 97 atf_ifconfig shmif0 up 98 99 $inet && atf_ifconfig pppoe0 \ 100 inet 0.0.0.0 0.0.0.1 down 101 102 $DEBUG && rump.ifconfig pppoe0 debug 103 $DEBUG && rump.ifconfig 104 $DEBUG && $HIJACKING pppoectl -d pppoe0 105 unset RUMP_SERVER 106} 107 108setup() 109{ 110 inet=true 111 112 if [ $# -ne 0 ]; then 113 eval $@ 114 fi 115 116 rump_server_start $SERVER netinet6 pppoe 117 rump_server_start $CLIENT netinet6 pppoe 118 119 setup_ifaces 120 121 export RUMP_SERVER=$SERVER 122 atf_pppoectl -e shmif0 pppoe0 123 unset RUMP_SERVER 124 125 export RUMP_SERVER=$CLIENT 126 atf_pppoectl -e shmif0 pppoe0 127 unset RUMP_SERVER 128} 129 130wait_for_opened() 131{ 132 local cp=$1 133 local dontfail=$2 134 local n=$WAITTIME 135 136 for i in $(seq $n); do 137 $HIJACKING pppoectl -dd pppoe0 | grep -q "$cp state: opened" 138 if [ $? = 0 ]; then 139 rump.ifconfig -w 10 140 return 141 fi 142 sleep 1 143 done 144 145 if [ "$dontfail" != "dontfail" ]; then 146 atf_fail "Couldn't connect to the server for $n seconds." 147 fi 148} 149 150wait_for_disconnected() 151{ 152 local dontfail=$1 153 local n=$WAITTIME 154 155 for i in $(seq $n); do 156 # If PPPoE client is disconnected by PPPoE server, then 157 # the LCP state will of the client is in a starting to send PADI. 158 $HIJACKING pppoectl -dd pppoe0 | grep -q \ 159 -e "LCP state: initial" -e "LCP state: starting" 160 [ $? = 0 ] && return 161 162 sleep 1 163 done 164 165 if [ "$dontfail" != "dontfail" ]; then 166 atf_fail "Couldn't disconnect for $n seconds." 167 fi 168} 169 170run_test() 171{ 172 local auth=$1 173 local cp="IPCP" 174 setup 175 176 # As pppoe client doesn't support rechallenge yet. 177 local server_optparam="" 178 if [ $auth = "chap" ]; then 179 server_optparam="norechallenge" 180 fi 181 182 export RUMP_SERVER=$SERVER 183 atf_pppoectl pppoe0 "hisauthproto=$auth" \ 184 "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 185 "myauthproto=none" $server_optparam 186 atf_ifconfig pppoe0 up 187 unset RUMP_SERVER 188 189 export RUMP_SERVER=$CLIENT 190 atf_pppoectl pppoe0 \ 191 "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 192 "myauthproto=$auth" "hisauthproto=none" 193 atf_ifconfig pppoe0 up 194 $DEBUG && rump.ifconfig 195 wait_for_opened $cp 196 atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT $SERVER_IP 197 unset RUMP_SERVER 198 199 # test for disconnection from server 200 export RUMP_SERVER=$SERVER 201 atf_ifconfig pppoe0 down 202 wait_for_disconnected 203 export RUMP_SERVER=$CLIENT 204 wait_for_disconnected 205 atf_check -s not-exit:0 -o ignore -e ignore \ 206 rump.ping -c 1 -w $TIMEOUT $SERVER_IP 207 atf_check -s exit:0 -o match:'(PADI sent)|(initial)' \ 208 -x "$HIJACKING pppoectl -d pppoe0" 209 unset RUMP_SERVER 210 211 # test for reconnecting 212 atf_check -s exit:0 -x "env RUMP_SERVER=$SERVER rump.ifconfig pppoe0 up" 213 export RUMP_SERVER=$CLIENT 214 wait_for_opened $cp 215 atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT $SERVER_IP 216 unset RUMP_SERVER 217 218 # test for disconnection from client 219 export RUMP_SERVER=$CLIENT 220 atf_ifconfig pppoe0 down 221 wait_for_disconnected 222 export RUMP_SERVER=$SERVER 223 wait_for_disconnected 224 $DEBUG && $HIJACKING pppoectl -d pppoe0 225 atf_check -s not-exit:0 -o ignore -e ignore \ 226 rump.ping -c 1 -w $TIMEOUT $CLIENT_IP 227 atf_check -s exit:0 -o match:'initial' -x "$HIJACKING pppoectl -d pppoe0" 228 unset RUMP_SERVER 229 230 # test for reconnecting 231 export RUMP_SERVER=$CLIENT 232 atf_ifconfig pppoe0 up 233 wait_for_opened $cp 234 $DEBUG && rump.ifconfig pppoe0 235 $DEBUG && $HIJACKING pppoectl -d pppoe0 236 unset RUMP_SERVER 237 238 export RUMP_SERVER=$SERVER 239 atf_ifconfig -w 10 240 atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT $CLIENT_IP 241 atf_check -s exit:0 -o match:'session' -x "$HIJACKING pppoectl -d pppoe0" 242 $DEBUG && $HIJACKING pppoectl -d pppoe0 243 unset RUMP_SERVER 244 245 # test for invalid password 246 export RUMP_SERVER=$CLIENT 247 atf_ifconfig pppoe0 down 248 wait_for_disconnected 249 atf_pppoectl pppoe0 "myauthproto=$auth" \ 250 "myauthname=$AUTHNAME" \ 251 "myauthsecret=invalidsecret" \ 252 "hisauthproto=none" \ 253 "max-auth-failure=1" 254 atf_ifconfig pppoe0 up 255 wait_for_opened $cp dontfail 256 atf_check -s not-exit:0 -o ignore -e ignore \ 257 rump.ping -c 1 -w $TIMEOUT $SERVER_IP 258 atf_check -s exit:0 -o match:'DETACHED' rump.ifconfig pppoe0 259 unset RUMP_SERVER 260} 261 262atf_test_case pppoe_pap cleanup 263 264pppoe_pap_head() 265{ 266 atf_set "descr" "Does simple pap tests" 267 atf_set "require.progs" "rump_server pppoectl" 268} 269 270pppoe_pap_body() 271{ 272 run_test pap 273} 274 275pppoe_pap_cleanup() 276{ 277 278 $DEBUG && dump 279 cleanup 280} 281 282atf_test_case pppoe_chap cleanup 283 284pppoe_chap_head() 285{ 286 atf_set "descr" "Does simple chap tests" 287 atf_set "require.progs" "rump_server pppoectl" 288} 289 290pppoe_chap_body() 291{ 292 run_test chap 293} 294 295pppoe_chap_cleanup() 296{ 297 298 $DEBUG && dump 299 cleanup 300} 301 302run_test6() 303{ 304 local auth=$1 305 local cp="IPv6CP" 306 setup "inet=false" 307 308 # As pppoe client doesn't support rechallenge yet. 309 local server_optparam="" 310 if [ $auth = "chap" ]; then 311 server_optparam="norechallenge" 312 fi 313 314 export RUMP_SERVER=$SERVER 315 atf_pppoectl pppoe0 \ 316 "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 317 "hisauthproto=$auth" "myauthproto=none" \ 318 $server_optparam 319 atf_ifconfig pppoe0 inet6 $SERVER_IP6/64 down 320 atf_ifconfig pppoe0 up 321 unset RUMP_SERVER 322 323 export RUMP_SERVER=$CLIENT 324 atf_pppoectl pppoe0 \ 325 "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 326 "myauthproto=$auth" "hisauthproto=none" 327 atf_ifconfig pppoe0 inet6 $CLIENT_IP6/64 down 328 atf_ifconfig pppoe0 up 329 $DEBUG && rump.ifconfig 330 wait_for_opened $cp 331 atf_ifconfig -w 10 332 export RUMP_SERVER=$SERVER 333 rump.ifconfig -w 10 334 export RUMP_SERVER=$CLIENT 335 atf_check -s exit:0 -o ignore rump.ping6 -c 1 -X $TIMEOUT $SERVER_IP6 336 unset RUMP_SERVER 337 338 # test for disconnection from server 339 export RUMP_SERVER=$SERVER 340 session_id=`$HIJACKING pppoectl -d pppoe0 | grep state` 341 atf_ifconfig pppoe0 down 342 wait_for_disconnected 343 export RUMP_SERVER=$CLIENT 344 wait_for_disconnected 345 atf_check -s not-exit:0 -o ignore -e ignore \ 346 rump.ping6 -c 1 -X $TIMEOUT $SERVER_IP6 347 atf_check -s exit:0 -o not-match:"$session_id" -x "$HIJACKING pppoectl -d pppoe0" 348 unset RUMP_SERVER 349 350 # test for reconnecting 351 export RUMP_SERVER=$SERVER 352 atf_ifconfig pppoe0 up 353 wait_for_opened $cp 354 atf_ifconfig -w 10 355 $DEBUG && $HIJACKING pppoectl -d pppoe0 356 $DEBUG && rump.ifconfig pppoe0 357 export RUMP_SERVER=$CLIENT 358 atf_ifconfig -w 10 359 atf_check -s exit:0 -o ignore rump.ping6 -c 1 -X $TIMEOUT $SERVER_IP6 360 unset RUMP_SERVER 361 362 # test for disconnection from client 363 export RUMP_SERVER=$CLIENT 364 atf_ifconfig pppoe0 down 365 wait_for_disconnected 366 367 export RUMP_SERVER=$SERVER 368 wait_for_disconnected 369 $DEBUG && $HIJACKING pppoectl -d pppoe0 370 atf_check -s not-exit:0 -o ignore -e ignore \ 371 rump.ping6 -c 1 -X $TIMEOUT $CLIENT_IP6 372 atf_check -s exit:0 -o match:'initial' -x "$HIJACKING pppoectl -d pppoe0" 373 unset RUMP_SERVER 374 375 # test for reconnecting 376 export RUMP_SERVER=$CLIENT 377 atf_ifconfig pppoe0 up 378 wait_for_opened $cp 379 atf_ifconfig -w 10 380 381 $DEBUG && rump.ifconfig pppoe0 382 $DEBUG && $HIJACKING pppoectl -d pppoe0 383 unset RUMP_SERVER 384 385 export RUMP_SERVER=$SERVER 386 atf_ifconfig -w 10 387 atf_check -s exit:0 -o ignore rump.ping6 -c 1 -X $TIMEOUT $CLIENT_IP6 388 atf_check -s exit:0 -o match:'session' -x "$HIJACKING pppoectl -d pppoe0" 389 $DEBUG && HIJACKING pppoectl -d pppoe0 390 unset RUMP_SERVER 391 392 # test for invalid password 393 export RUMP_SERVER=$CLIENT 394 atf_ifconfig pppoe0 down 395 wait_for_disconnected 396 atf_pppoectl pppoe0 \ 397 "myauthname=$AUTHNAME" "myauthsecret=invalidsecret" \ 398 "myauthproto=$auth" "hisauthproto=none" \ 399 "max-auth-failure=1" 400 atf_ifconfig pppoe0 up 401 wait_for_opened $cp dontfail 402 atf_check -s not-exit:0 -o ignore -e ignore \ 403 rump.ping6 -c 1 -X $TIMEOUT $SERVER_IP6 404 atf_check -s exit:0 -o match:'DETACHED' rump.ifconfig pppoe0 405 unset RUMP_SERVER 406} 407 408atf_test_case pppoe6_pap cleanup 409 410pppoe6_pap_head() 411{ 412 atf_set "descr" "Does simple pap using IPv6 tests" 413 atf_set "require.progs" "rump_server pppoectl" 414} 415 416pppoe6_pap_body() 417{ 418 run_test6 pap 419} 420 421pppoe6_pap_cleanup() 422{ 423 424 $DEBUG && dump 425 cleanup 426} 427 428atf_test_case pppoe6_chap cleanup 429 430pppoe6_chap_head() 431{ 432 atf_set "descr" "Does simple chap using IPv6 tests" 433 atf_set "require.progs" "rump_server pppoectl" 434} 435 436pppoe6_chap_body() 437{ 438 run_test6 chap 439} 440 441pppoe6_chap_cleanup() 442{ 443 444 $DEBUG && dump 445 cleanup 446} 447 448atf_test_case pppoe_params cleanup 449 450dump_bus() 451{ 452 453 shmif_dumpbus -p - ${BUS} | tcpdump -n -e -r - 454} 455 456setup_auth_conf() 457{ 458 local auth=chap 459 local server_optparam="norechallenge" 460 461 export RUMP_SERVER=$SERVER 462 atf_ifconfig pppoe0 link0 463 atf_pppoectl pppoe0 \ 464 "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 465 "hisauthproto=$auth" "myauthproto=none" \ 466 $server_optparam 467 unset RUMP_SERVER 468 469 export RUMP_SERVER=$CLIENT 470 $inet && atf_ifconfig pppoe0 \ 471 inet 0.0.0.0 0.0.0.1 down 472 atf_pppoectl pppoe0 \ 473 "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 474 "myauthproto=$auth" "hisauthproto=none" 475 476 $DEBUG && rump.ifconfig 477 unset RUMP_SERVER 478} 479 480pppoe_params_head() 481{ 482 atf_set "descr" "Set and clear access concentrator name and service name" 483 atf_set "require.progs" "rump_server pppoectl" 484} 485 486pppoe_params_body() 487{ 488 local dumpcmd 489 local cp="LCP" 490 491 dumpcmd="shmif_dumpbus -p - ${BUS}" 492 dumpcmd="${dumpcmd} | tcpdump -n -e -r -" 493 494 rump_server_start $SERVER netinet6 pppoe 495 rump_server_start $CLIENT netinet6 pppoe 496 497 setup_ifaces 498 setup_auth_conf 499 500 export RUMP_SERVER=$SERVER 501 atf_pppoectl -e shmif0 pppoe0 502 atf_ifconfig pppoe0 up 503 unset RUMP_SERVER 504 505 export RUMP_SERVER=$CLIENT 506 atf_pppoectl -e shmif0 pppoe0 507 atf_ifconfig pppoe0 up 508 $DEBUG && rump.ifconfig 509 wait_for_opened $cp 510 unset RUMP_SERVER 511 512 $DEBUG && dump_bus 513 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 514 -x "${dumpcmd} | grep PADI" 515 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 516 -x "${dumpcmd} | grep PADR" 517 atf_check -s exit:0 -o not-match:'AC-Name' -e ignore \ 518 -x "${dumpcmd} | grep PADI" 519 520 # set Remote access concentrator name (AC-NAME, -a option) 521 export RUMP_SERVER=$CLIENT 522 atf_ifconfig pppoe0 down 523 wait_for_disconnected 524 atf_pppoectl -e shmif0 -a ACNAME-TEST0 pppoe0 525 atf_ifconfig pppoe0 up 526 $DEBUG && rump.ifconfig 527 wait_for_opened $cp 528 unset RUMP_SERVER 529 530 $DEBUG && dump_bus 531 atf_check -s exit:0 -o match:'\[AC-Name "ACNAME-TEST0"\]' -e ignore \ 532 -x "${dumpcmd} | grep PADI" 533 534 # change AC-NAME 535 export RUMP_SERVER=$CLIENT 536 atf_ifconfig pppoe0 down 537 wait_for_disconnected 538 atf_pppoectl -e shmif0 -a ACNAME-TEST1 pppoe0 539 atf_ifconfig pppoe0 up 540 $DEBUG && rump.ifconfig 541 wait_for_opened $cp 542 unset RUMP_SERVER 543 544 $DEBUG && dump_bus 545 atf_check -s exit:0 -o match:'\[AC-Name "ACNAME-TEST1"\]' -e ignore \ 546 -x "${dumpcmd} | grep PADI" 547 548 # clear AC-NAME 549 rump_server_destroy_ifaces 550 rm ${BUS} 2> /dev/null 551 setup_ifaces 552 setup_auth_conf 553 554 export RUMP_SERVER=$SERVER 555 atf_pppoectl -e shmif0 pppoe0 556 atf_ifconfig pppoe0 up 557 unset RUMP_SERVER 558 559 export RUMP_SERVER=$CLIENT 560 atf_ifconfig pppoe0 down 561 wait_for_disconnected 562 atf_pppoectl -a ACNAME-TEST2 -e shmif0 pppoe0 563 atf_pppoectl -e shmif0 pppoe0 564 atf_ifconfig pppoe0 up 565 $DEBUG && rump.ifconfig 566 wait_for_opened $cp 567 unset RUMP_SERVER 568 569 $DEBUG && dump_bus 570 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 571 -x "${dumpcmd} | grep PADI" 572 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 573 -x "${dumpcmd} | grep PADR" 574 atf_check -s exit:0 -o not-match:'AC-Name' -e ignore \ 575 -x "${dumpcmd} | grep PADI" 576 577 # store 0 length string in AC-NAME 578 export RUMP_SERVER=$CLIENT 579 atf_ifconfig pppoe0 down 580 wait_for_disconnected 581 atf_pppoectl -a \"\" -e shmif0 pppoe0 582 atf_ifconfig pppoe0 up 583 $DEBUG && rump.ifconfig 584 wait_for_opened $cp 585 unset RUMP_SERVER 586 587 atf_check -s exit:0 -o match:'\[AC-Name\]' -e ignore \ 588 -x "${dumpcmd} | grep PADI" 589 590 # set Service Name (Service-Name, -s option) 591 rump_server_destroy_ifaces 592 rm ${BUS} 2> /dev/null 593 setup_ifaces 594 setup_auth_conf 595 596 export RUMP_SERVER=$SERVER 597 atf_pppoectl -e shmif0 pppoe0 598 atf_ifconfig pppoe0 up 599 unset RUMP_SERVER 600 601 export RUMP_SERVER=$CLIENT 602 atf_ifconfig pppoe0 down 603 wait_for_disconnected 604 atf_pppoectl -e shmif0 -s SNAME-TEST0 pppoe0 605 atf_ifconfig pppoe0 up 606 $DEBUG && rump.ifconfig 607 wait_for_opened $cp 608 unset RUMP_SERVER 609 610 $DEBUG && dump_bus 611 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST0"\]' -e ignore \ 612 -x "${dumpcmd} | grep PADI" 613 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST0"\]' -e ignore \ 614 -x "${dumpcmd} | grep PADR" 615 atf_check -s exit:0 -o not-match:'AC-Name' -e ignore \ 616 -x "${dumpcmd} | grep PADI" 617 618 # change Service-Name 619 export RUMP_SERVER=$CLIENT 620 atf_ifconfig pppoe0 down 621 wait_for_disconnected 622 atf_pppoectl -e shmif0 -s SNAME-TEST1 pppoe0 623 atf_ifconfig pppoe0 up 624 $DEBUG && rump.ifconfig 625 wait_for_opened $cp 626 unset RUMP_SERVER 627 628 $DEBUG && dump_bus 629 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST1"\]' -e ignore \ 630 -x "${dumpcmd} | grep PADI" 631 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST1"\]' -e ignore \ 632 -x "${dumpcmd} | grep PADR" 633 634 # clear Service-Name 635 rump_server_destroy_ifaces 636 rm ${BUS} 2> /dev/null 637 setup_ifaces 638 setup_auth_conf 639 640 export RUMP_SERVER=$SERVER 641 atf_pppoectl -e shmif0 pppoe0 642 atf_ifconfig pppoe0 up 643 unset RUMP_SERVER 644 645 export RUMP_SERVER=$CLIENT 646 atf_ifconfig pppoe0 down 647 wait_for_disconnected 648 atf_pppoectl -s SNAME-TEST2 -e shmif0 pppoe0 649 atf_pppoectl -e shmif0 pppoe0 650 atf_ifconfig pppoe0 up 651 $DEBUG && rump.ifconfig 652 wait_for_opened $cp 653 unset RUMP_SERVER 654 655 $DEBUG && dump_bus 656 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 657 -x "${dumpcmd} | grep PADI" 658 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 659 -x "${dumpcmd} | grep PADR" 660 atf_check -s exit:0 -o not-match:'AC-Name' -e ignore \ 661 -x "${dumpcmd} | grep PADI" 662 663 # set AC-NAME and Service-Name 664 rump_server_destroy_ifaces 665 rm ${BUS} 2> /dev/null 666 setup_ifaces 667 setup_auth_conf 668 669 export RUMP_SERVER=$SERVER 670 atf_pppoectl -e shmif0 pppoe0 671 atf_ifconfig pppoe0 up 672 unset RUMP_SERVER 673 674 export RUMP_SERVER=$CLIENT 675 atf_ifconfig pppoe0 down 676 wait_for_disconnected 677 atf_pppoectl -e shmif0 -a ACNAME-TEST3 -s SNAME-TEST3 pppoe0 678 atf_ifconfig pppoe0 up 679 $DEBUG && rump.ifconfig 680 wait_for_opened $cp 681 unset RUMP_SERVER 682 683 $DEBUG && dump_bus 684 atf_check -s exit:0 \ 685 -o match:'\[Service-Name "SNAME-TEST3"\] \[AC-Name "ACNAME-TEST3"\]' \ 686 -e ignore \ 687 -x "${dumpcmd} | grep PADI" 688 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST3"\]' -e ignore \ 689 -x "${dumpcmd} | grep PADR" 690 691 # change AC-NAME 692 export RUMP_SERVER=$CLIENT 693 atf_ifconfig pppoe0 down 694 wait_for_disconnected 695 atf_pppoectl -e shmif0 -a ACNAME-TEST4 pppoe0 696 atf_ifconfig pppoe0 up 697 $DEBUG && rump.ifconfig 698 wait_for_opened $cp 699 unset RUMP_SERVER 700 701 $DEBUG && dump_bus 702 atf_check -s exit:0 \ 703 -o match:'\[Service-Name\] \[AC-Name "ACNAME-TEST4"\]' \ 704 -e ignore \ 705 -x "${dumpcmd} | grep PADI" 706 atf_check -s exit:0 -o match:'\[Service-Name\]' -e ignore \ 707 -x "${dumpcmd} | grep PADR" 708 709 # change Service-Name 710 export RUMP_SERVER=$CLIENT 711 atf_ifconfig pppoe0 down 712 wait_for_disconnected 713 atf_pppoectl -e shmif0 -a ACNAME-TEST5 -s SNAME-TEST5 pppoe0 714 atf_pppoectl -e shmif0 -s SNAME-TEST6 pppoe0 715 atf_ifconfig pppoe0 up 716 $DEBUG && rump.ifconfig 717 wait_for_opened $cp 718 unset RUMP_SERVER 719 720 $DEBUG && dump_bus 721 atf_check -s exit:0 \ 722 -o match:'\[Service-Name "SNAME-TEST6"\]' \ 723 -e ignore \ 724 -x "${dumpcmd} | grep PADI" 725 atf_check -s exit:0 -o match:'\[Service-Name "SNAME-TEST6"\]' -e ignore \ 726 -x "${dumpcmd} | grep PADR" 727 atf_check -s exit:0 -o not-match:'\[AC-Name "ACNAME-TEST5\]"' -e ignore \ 728 -x "${dumpcmd} | grep PADI" 729 730 export RUMP_SERVER=$CLIENT 731 atf_ifconfig pppoe0 down 732 export RUMP_SERVER=$SERVER 733 wait_for_disconnected 734 735 # ipcp & ipv6cp are enabled by default 736 export RUMP_SERVER=$CLIENT 737 atf_check -s exit:0 -o match:'ipcp: enable' \ 738 -x "$HIJACKING pppoectl pppoe0" 739 atf_check -s exit:0 -o match:'ipv6cp: enable' \ 740 -x "$HIJACKING pppoectl pppoe0" 741 742 # ipcp enable & ipv6cp disable 743 atf_pppoectl pppoe0 noipv6cp 744 atf_ifconfig pppoe0 up 745 wait_for_opened "IPCP" 746 atf_check -s exit:0 -o match:'IPv6CP state: closed' \ 747 -x "$HIJACKING pppoectl -dd pppoe0" 748 749 atf_ifconfig pppoe0 down 750 export RUMP_SERVER=$SERVER 751 wait_for_disconnected 752 753 # ipcp disable & ipv6cp enable 754 export RUMP_SERVER=$CLIENT 755 atf_pppoectl pppoe0 noipcp ipv6cp 756 atf_ifconfig pppoe0 up 757 wait_for_opened "IPv6CP" 758 atf_check -s exit:0 -o match:'IPCP state: closed' \ 759 -x "$HIJACKING pppoectl -dd pppoe0" 760} 761 762pppoe_params_cleanup() 763{ 764 765 $DEBUG && dump 766 cleanup 767} 768 769pppoe_passiveauthproto() 770{ 771 local auth=$1 772 local cp="IPCP" 773 setup 774 775 local server_optparam="" 776 if [ $auth = "chap" ]; then 777 server_optparam="norechallenge" 778 fi 779 780 export RUMP_SERVER=$SERVER 781 atf_pppoectl pppoe0 \ 782 "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 783 "hisauthproto=$auth" "myauthproto=none" \ 784 $server_optparam 785 atf_ifconfig pppoe0 up 786 787 export RUMP_SERVER=$CLIENT 788 atf_pppoectl pppoe0 \ 789 "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 790 "myauthproto=none" "hisauthproto=none" \ 791 "passiveauthproto" 792 atf_ifconfig pppoe0 up 793 $DEBUG && rump.ifconfig 794 wait_for_opened $cp 795 atf_ifconfig -w 10 796 atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT $SERVER_IP 797} 798 799atf_test_case pppoe_passiveauthproto_pap cleanup 800pppoe_passiveauthproto_pap_head() 801{ 802 803 atf_set "descr" "Test for passiveauthproto option on PAP" 804 atf_set "require.progs" "rump_server" 805} 806 807pppoe_passiveauthproto_pap_body() 808{ 809 810 pppoe_passiveauthproto "pap" 811} 812 813pppoe_passiveauthproto_pap_cleanup() 814{ 815 816 $DEBUG && dump 817 cleanup 818} 819 820atf_test_case pppoe_passiveauthproto_chap cleanup 821pppoe_passiveauthproto_chap_head() 822{ 823 824 atf_set "descr" "Test for passiveauthproto option on chap" 825 atf_set "require.progs" "rump_server" 826} 827 828pppoe_passiveauthproto_chap_body() 829{ 830 831 pppoe_passiveauthproto "chap" 832} 833 834pppoe_passiveauthproto_chap_cleanup() 835{ 836 837 $DEBUG && dump 838 cleanup 839} 840 841atf_test_case pppoe_mtu cleanup 842pppoe_mtu_head() 843{ 844 845 atf_set "descr" "Test for mtu" 846 atf_set "require.progs" "rump_server" 847} 848 849pppoe_mtu_body() 850{ 851 local auth=chap 852 local cp="IPCP" 853 setup 854 855 export RUMP_SERVER=$SERVER 856 atf_pppoectl pppoe0 \ 857 "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 858 "hisauthproto=$auth" "myauthproto=none" \ 859 norechallenge 860 atf_ifconfig pppoe0 mtu 1400 861 atf_ifconfig pppoe0 up 862 863 export RUMP_SERVER=$CLIENT 864 atf_pppoectl pppoe0 \ 865 "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 866 "myauthproto=$auth" "hisauthproto=none" 867 atf_ifconfig pppoe0 mtu 1450 868 atf_ifconfig pppoe0 up 869 870 wait_for_opened $cp 871 atf_ifconfig -w 10 872 873 export RUMP_SERVER=$SERVER 874 atf_check -s exit:0 -o match:'mtu 1400' rump.ifconfig pppoe0 875 876 export RUMP_SERVER=$CLIENT 877 atf_check -s exit:0 -o match:'mtu 1400' rump.ifconfig pppoe0 878 879 # mtu can set to 1460 but it is not applied. 880 atf_ifconfig pppoe0 mtu 1460 881 atf_check -s exit:0 -o match:'mtu 1400' rump.ifconfig pppoe0 882 883 export RUMP_SERVER=$SERVER 884 atf_ifconfig pppoe0 mtu 1470 885 atf_ifconfig pppoe0 down 886 atf_ifconfig pppoe0 up 887 wait_for_opened $cp 888 atf_ifconfig -w 10 889 890 # mtu 1460 is applied after LCP negotiation 891 atf_check -s exit:0 -o match:'mtu 1460' rump.ifconfig pppoe0 892 893 export RUMP_SERVER=$CLIENT 894 atf_check -s exit:0 -o match:'mtu 1460' rump.ifconfig pppoe0 895 896 rump.ifconfig pppoe0 mtu 1500 897 atf_check -s exit:0 -o ignore \ 898 -e match:'SIOCSIFMTU: Invalid argument' \ 899 rump.ifconfig pppoe0 mtu 1501 900} 901 902pppoe_mtu_cleanup() 903{ 904 905 $DEBUG && dump 906 cleanup 907} 908 909atf_init_test_cases() 910{ 911 912 atf_add_test_case pppoe_create_destroy 913 atf_add_test_case pppoe_params 914 atf_add_test_case pppoe_pap 915 atf_add_test_case pppoe_chap 916 atf_add_test_case pppoe6_pap 917 atf_add_test_case pppoe6_chap 918 atf_add_test_case pppoe_passiveauthproto_pap 919 atf_add_test_case pppoe_passiveauthproto_chap 920 atf_add_test_case pppoe_mtu 921} 922