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