t_lagg.sh revision 1.10 1 # $NetBSD: t_lagg.sh,v 1.10 2023/10/18 06:41:00 yamaguchi Exp $
2 #
3 # Copyright (c) 2021 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 SOCK_HOST0=unix://commsock0
29 SOCK_HOST1=unix://commsock1
30 SOCK_HOST2=unix://commsock2
31 BUS0=bus0
32 BUS1=bus1
33 BUS2=bus2
34 IP4ADDR0=192.168.0.1
35 IP4ADDR1=192.168.0.2
36 IP4ADDR2=192.168.1.1
37 IP4ADDR3=192.168.1.2
38 IP6ADDR0=fc00::1
39 IP6ADDR1=fc00::2
40 IP6ADDR2=fc00:1::1
41 IP6ADDR3=fc00:1::2
42 WAITTIME=20
43
44 DEBUG=${DEBUG:-false}
45
46 wait_state()
47 {
48 local state=$1
49 local if_lagg=$2
50 local if_port=$3
51
52 local n=$WAITTIME
53 local cmd_grep="grep -q ${state}"
54
55 if [ x"$if_port" != x"" ]; then
56 cmd_grep="grep $if_port | $cmd_grep"
57 fi
58
59 for i in $(seq $n); do
60 rump.ifconfig $if_lagg | eval $cmd_grep
61 if [ $? = 0 ] ; then
62 $DEBUG && echo "wait for $i seconds."
63 return 0
64 fi
65
66 sleep 1
67 done
68
69 $DEBUG && rump.ifconfig -v $if_lagg
70 atf_fail "Couldn't be ${state} for $n seconds."
71 }
72 wait_for_distributing()
73 {
74
75 wait_state "DISTRIBUTING" $*
76 }
77
78 expected_inactive()
79 {
80 local if_lagg=$1
81 local if_port=$2
82
83 sleep 3 # wait a little
84 atf_check -s exit:0 -o not-match:"${if_port}.*ACTIVE" \
85 rump.ifconfig ${if_lagg}
86 }
87
88 setup_l2tp_ipv4tunnel()
89 {
90 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
91
92 local a_addr0=10.0.0.1
93 local a_addr1=10.0.0.2
94 local b_addr0=10.0.1.1
95 local b_addr1=10.0.1.2
96 local c_addr0=10.0.2.1
97 local c_addr1=10.0.2.2
98
99 local a_session0=1001
100 local a_session1=1002
101 local b_session0=1011
102 local b_session1=1012
103 local c_session0=1021
104 local c_session1=1022
105
106 rump_server_add_iface $SOCK_HOST0 l2tp0
107 rump_server_add_iface $SOCK_HOST0 l2tp1
108 rump_server_add_iface $SOCK_HOST0 l2tp2
109 rump_server_add_iface $SOCK_HOST1 l2tp0
110 rump_server_add_iface $SOCK_HOST1 l2tp1
111 rump_server_add_iface $SOCK_HOST1 l2tp2
112
113
114 export RUMP_SERVER=$SOCK_HOST0
115 $atf_ifconfig shmif0 $a_addr0/24
116 $atf_ifconfig l2tp0 tunnel $a_addr0 $a_addr1
117 $atf_ifconfig l2tp0 session $a_session0 $a_session1
118
119 $atf_ifconfig shmif1 $b_addr0/24
120 $atf_ifconfig l2tp1 tunnel $b_addr0 $b_addr1
121 $atf_ifconfig l2tp1 session $b_session0 $b_session1
122
123 $atf_ifconfig shmif2 $c_addr0/24
124 $atf_ifconfig l2tp2 tunnel $c_addr0 $c_addr1
125 $atf_ifconfig l2tp2 session $c_session0 $c_session1
126
127 export RUMP_SERVER=$SOCK_HOST1
128 $atf_ifconfig shmif0 $a_addr1/24
129 $atf_ifconfig l2tp0 tunnel $a_addr1 $a_addr0
130 $atf_ifconfig l2tp0 session $a_session1 $a_session0
131
132 $atf_ifconfig shmif1 $b_addr1/24
133 $atf_ifconfig l2tp1 tunnel $b_addr1 $b_addr0
134 $atf_ifconfig l2tp1 session $b_session1 $b_session0
135
136 $atf_ifconfig shmif2 $c_addr1/24
137 $atf_ifconfig l2tp2 tunnel $c_addr1 $c_addr0
138 $atf_ifconfig l2tp2 session $c_session1 $c_session0
139 }
140
141 atf_test_case lagg_ifconfig cleanup
142 lagg_ifconfig_head()
143 {
144
145 atf_set "descr" "tests for create, destroy, and ioctl of lagg(4)"
146 atf_set "require.progs" "rump_server"
147 }
148
149 lagg_ifconfig_body()
150 {
151 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
152
153 rump_server_start $SOCK_HOST0 lagg
154
155 export RUMP_SERVER=$SOCK_HOST0
156 $atf_ifconfig lagg0 create
157 $atf_ifconfig lagg0 destroy
158
159 $atf_ifconfig lagg0 create
160 $atf_ifconfig shmif0 create
161
162 $atf_ifconfig lagg0 laggproto none
163 atf_check -s exit:0 -o match:'laggproto none' \
164 rump.ifconfig lagg0
165
166 # cannot add a port while protocol is none
167 atf_check -s not-exit:0 -e ignore \
168 rump.ifconfig lagg0 laggport shmif0
169
170 $atf_ifconfig lagg0 laggproto lacp
171 atf_check -s exit:0 -o match:'laggproto lacp' \
172 rump.ifconfig lagg0
173
174 # add a port and an added port
175 $atf_ifconfig lagg0 laggport shmif0
176 atf_check -s not-exit:0 -e ignore \
177 rump.ifconfig lagg0 laggport shmif0
178
179 # remove an added port and a removed port
180 $atf_ifconfig lagg0 -laggport shmif0
181 atf_check -s not-exit:0 -e ignore \
182 rump.ifconfig lagg0 -laggport shmif0
183
184 # re-add a removed port
185 $atf_ifconfig lagg0 laggport shmif0
186
187 # detach protocol even if the I/F has ports
188 $atf_ifconfig lagg0 laggproto none
189
190 # destroy the interface while grouping ports
191 $atf_ifconfig lagg0 destroy
192
193 $atf_ifconfig lagg0 create
194 $atf_ifconfig shmif1 create
195
196 $atf_ifconfig lagg0 laggproto lacp
197 $atf_ifconfig lagg0 laggport shmif0
198 $atf_ifconfig lagg0 laggport shmif1
199
200 $atf_ifconfig lagg0 -laggport shmif0
201 $atf_ifconfig lagg0 laggport shmif0
202 $atf_ifconfig lagg0 -laggport shmif1
203 $atf_ifconfig lagg0 laggport shmif1
204
205 # destroy a LAGed port
206 atf_check -s exit:0 -o match:shmif0 rump.ifconfig lagg0
207 atf_check -s exit:0 -o match:shmif1 rump.ifconfig lagg0
208 $atf_ifconfig shmif0 destroy
209 $atf_ifconfig shmif1 destroy
210
211 $atf_ifconfig lagg0 laggproto none
212 atf_check -s exit:0 -o ignore rump.ifconfig lagg0
213 }
214
215 lagg_ifconfig_cleanup()
216 {
217 $DEBG && dump
218 cleanup
219 }
220
221 atf_test_case lagg_macaddr cleanup
222 lagg_macaddr_head()
223 {
224 atf_set "descr" "tests for a MAC address to assign to lagg(4)"
225 atf_set "require.progs" "rump_server"
226 }
227
228 lagg_macaddr_body()
229 {
230 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
231 local lnkaddr0="02:00:00:00:00:01" # 02: I/G = 0, G/L = 1
232
233 rump_server_start $SOCK_HOST0 lagg
234
235 export RUMP_SERVER=$SOCK_HOST0
236 $atf_ifconfig lagg0 create
237 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
238 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
239
240 maddr=$(get_macaddr $SOCK_HOST0 lagg0)
241 maddr0=$(get_macaddr $SOCK_HOST0 shmif0)
242 maddr1=$(get_macaddr $SOCK_HOST0 shmif1)
243
244 $atf_ifconfig lagg0 laggproto lacp
245
246 #
247 # Copy MAC address from shmif0 that is
248 # the first port to lagg.
249 # (laggport: (none) => shmif0)
250 #
251 $atf_ifconfig lagg0 laggport shmif0
252 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
253 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
254
255 #
256 # Copy MAC address assigned to lagg0 to shmif1
257 # (laggport: shmif0 => shmif0, shmif1)
258 #
259 $atf_ifconfig lagg0 laggport shmif1
260 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
261 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif1
262
263 #
264 # Change MAC address on the detaching
265 # the first port (shmif0) from lagg0
266 # (laggport: shmif0, shmif1 => shmif1)
267 #
268 $atf_ifconfig lagg0 -laggport shmif0
269 atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
270 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
271 atf_check -s exit:0 -o match:$maddr1 rump.ifconfig shmif1
272
273 #
274 # Copy lagg0's MAC address to shmif0 even if
275 # lagg0 had used shmif0's MAC address
276 # (laggport: shmif1 => shmif1, shmif0)
277 #
278 $atf_ifconfig lagg0 laggport shmif0
279 atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
280 atf_check -s exit:0 -o match:$maddr1 rump.ifconfig shmif0
281
282 #
283 # should not change MAC address of lagg0 on detaching
284 # shmif0 that copied mac address from lagg0
285 # (laggport: shmif1, shmif0 => shmif1)
286 #
287 $atf_ifconfig lagg0 -laggport shmif0
288 atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
289 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
290
291 #
292 # Use the generated MAC address
293 # when all port detached from lagg0
294 # (laggport: shmif1 => (none))
295 $atf_ifconfig lagg0 -laggport shmif1
296 atf_check -s exit:0 -o match:$maddr rump.ifconfig lagg0
297
298 #
299 # Copy the active MAC address from shmif0 to lagg0
300 # when shmif0 has two MAC addresses
301 #
302 $atf_ifconfig shmif0 link $lnkaddr0
303 $atf_ifconfig lagg0 laggport shmif0
304 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
305 atf_check -s exit:0 -o not-match:$lnkaddr0 rump.ifconfig lagg0
306 atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
307 atf_check -s exit:0 -o match:$lnkaddr0 rump.ifconfig shmif0
308 }
309
310 lagg_macaddr_cleanup()
311 {
312 $DEBUG && dump
313 cleanup
314 }
315
316 atf_test_case lagg_ipv6lla cleanup
317 lagg_ipv6lla_head()
318 {
319 atf_set "descr" "tests for a IPV6 LLA to assign to lagg(4)"
320 atf_set "require.progs" "rump_server"
321 }
322
323 lagg_ipv6lla_body()
324 {
325 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
326
327 rump_server_start $SOCK_HOST0 netinet6 lagg
328
329 export RUMP_SERVER=$SOCK_HOST0
330 $atf_ifconfig lagg0 create
331 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
332 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
333
334 $atf_ifconfig lagg0 laggproto lacp
335
336 $atf_ifconfig shmif0 up
337 atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
338
339 $atf_ifconfig lagg0 laggproto lacp laggport shmif0
340 atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif0
341
342 $atf_ifconfig lagg0 laggport shmif1
343 $atf_ifconfig shmif1 up
344 atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif1
345
346 $atf_ifconfig lagg0 -laggport shmif0
347 atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
348
349 $atf_ifconfig shmif1 down
350 $atf_ifconfig lagg0 -laggport shmif1
351 atf_check -s exit:0 -o not-match:'inet fe80:' rump.ifconfig shmif1
352 }
353
354 lagg_ipv6lla_cleanup()
355 {
356 $DEBUG && dump
357 cleanup
358 }
359
360 atf_test_case lagg_mtu cleanup
361 lagg_mtu_head()
362 {
363 atf_set "descr" "tests for MTU"
364 atf_set "require.progs" "rump_server"
365 }
366
367 lagg_mtu_body()
368 {
369 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
370 local mtu_lagg=1500
371 local mtu_1st=1450
372 local mtu_big=1460
373 local mtu_small=1440
374
375 rump_server_start $SOCK_HOST0 lagg
376
377 export RUMP_SERVER=$SOCK_HOST0
378 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
379 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
380 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
381 $atf_ifconfig lagg0 create
382 $atf_ifconfig lagg0 laggproto lacp
383 $atf_ifconfig lagg0 up
384
385 $atf_ifconfig shmif0 mtu $mtu_1st
386 $atf_ifconfig shmif1 mtu $mtu_big
387 $atf_ifconfig shmif2 mtu $mtu_small
388
389 # check initial MTU settings
390 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
391 atf_check -s exit:0 -o match:"mtu *$mtu_1st" rump.ifconfig shmif0
392 atf_check -s exit:0 -o match:"mtu *$mtu_big" rump.ifconfig shmif1
393 atf_check -s exit:0 -o match:"mtu *$mtu_small" rump.ifconfig shmif2
394
395 # copy MTU from 1st port
396 $atf_ifconfig lagg0 laggport shmif0
397 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
398 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
399
400 # copy MTU to added port
401 $atf_ifconfig lagg0 laggport shmif1
402 $atf_ifconfig lagg0 laggport shmif2
403 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
404 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
405 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif1
406 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif2
407
408 # reset MTU after detaching from lagg0
409 $atf_ifconfig lagg0 -laggport shmif2
410 atf_check -s exit:0 -o match:"mtu *$mtu_small" rump.ifconfig shmif2
411
412 # change MTU of lagg0
413 mtu_lagg=1400
414 $atf_ifconfig lagg0 mtu $mtu_lagg
415 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
416 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
417 atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif1
418
419 # reset MTU after detching from lagg0
420 $atf_ifconfig lagg0 -laggport shmif0
421 $atf_ifconfig lagg0 -laggport shmif1
422 atf_check -s exit:0 -o match:"mtu *$mtu_1st" rump.ifconfig shmif0
423 atf_check -s exit:0 -o match:"mtu *$mtu_big" rump.ifconfig shmif1
424 }
425
426 lagg_mtu_cleanup()
427 {
428
429 $DEBUG && dump
430 cleanup
431 }
432
433 atf_test_case lagg_lacp_basic cleanup
434 lagg_lacp_basic_head()
435 {
436
437 atf_set "descr" "tests for LACP basic functions"
438 atf_set "require.progs" "rump_server"
439 }
440
441 lagg_lacp_basic_body()
442 {
443 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
444
445 rump_server_start $SOCK_HOST0 lagg
446 rump_server_start $SOCK_HOST1 lagg
447 rump_server_start $SOCK_HOST2 lagg
448
449 export RUMP_SERVER=$SOCK_HOST0
450
451 # added running interface
452 $atf_ifconfig shmif0 create
453 $atf_ifconfig shmif0 linkstr $BUS0
454
455 $atf_ifconfig shmif1 create
456 $atf_ifconfig shmif1 linkstr $BUS1
457
458 $atf_ifconfig lagg0 create
459 $atf_ifconfig lagg0 laggproto lacp
460
461 $atf_ifconfig shmif0 up
462 $atf_ifconfig shmif1 up
463 $atf_ifconfig lagg0 up
464
465 $atf_ifconfig lagg0 laggport shmif0
466 $atf_ifconfig lagg0 laggport shmif1
467 $atf_ifconfig -w 10
468
469 $atf_ifconfig lagg0 -laggport shmif0
470 $atf_ifconfig lagg0 -laggport shmif1
471 $atf_ifconfig lagg0 down
472
473 # add the same interfaces again
474 $atf_ifconfig lagg0 up
475 $atf_ifconfig lagg0 laggport shmif0
476 $atf_ifconfig lagg0 laggport shmif1
477
478 # detach and re-attach protocol
479 $atf_ifconfig lagg0 laggproto none
480 $atf_ifconfig lagg0 laggproto lacp \
481 laggport shmif0 laggport shmif1
482
483 $atf_ifconfig lagg0 -laggport shmif0 -laggport shmif1
484 $atf_ifconfig lagg0 destroy
485 $atf_ifconfig shmif0 destroy
486 $atf_ifconfig shmif1 destroy
487
488 # tests for a loopback condition
489 $atf_ifconfig shmif0 create
490 $atf_ifconfig shmif0 linkstr $BUS0
491 $atf_ifconfig shmif1 create
492 $atf_ifconfig shmif1 linkstr $BUS0
493 $atf_ifconfig lagg0 create
494 $atf_ifconfig lagg0 laggproto lacp \
495 laggport shmif0 laggport shmif1
496 $atf_ifconfig shmif0 up
497 $atf_ifconfig shmif1 up
498 $atf_ifconfig lagg0 up
499
500 expected_inactive lagg0
501
502 $atf_ifconfig shmif0 down
503 $atf_ifconfig shmif0 destroy
504 $atf_ifconfig shmif1 down
505 $atf_ifconfig shmif1 destroy
506 $atf_ifconfig lagg0 down
507 $atf_ifconfig lagg0 destroy
508
509 export RUMP_SERVER=$SOCK_HOST0
510 $atf_ifconfig shmif0 create
511 $atf_ifconfig shmif0 linkstr $BUS0
512 $atf_ifconfig shmif0 up
513
514 $atf_ifconfig shmif1 create
515 $atf_ifconfig shmif1 linkstr $BUS1
516 $atf_ifconfig shmif1 up
517
518 $atf_ifconfig shmif2 create
519 $atf_ifconfig shmif2 linkstr $BUS2
520 $atf_ifconfig shmif2 up
521
522 $atf_ifconfig lagg0 create
523 $atf_ifconfig lagg0 laggproto lacp laggport shmif0 \
524 laggport shmif1 laggport shmif2
525 $atf_ifconfig lagg0 up
526
527 export RUMP_SERVER=$SOCK_HOST1
528 $atf_ifconfig shmif0 create
529 $atf_ifconfig shmif0 linkstr $BUS0
530 $atf_ifconfig shmif0 up
531
532 $atf_ifconfig shmif1 create
533 $atf_ifconfig shmif1 linkstr $BUS1
534 $atf_ifconfig shmif1 up
535
536 $atf_ifconfig lagg0 create
537 $atf_ifconfig lagg0 laggproto lacp
538 $atf_ifconfig lagg1 create
539 $atf_ifconfig lagg1 laggproto lacp
540
541 $atf_ifconfig lagg0 laggport shmif0
542 $atf_ifconfig lagg0 up
543 wait_for_distributing lagg0 shmif0
544
545 $atf_ifconfig lagg1 laggport shmif1
546 $atf_ifconfig lagg1 up
547
548 export RUMP_SERVER=$SOCK_HOST2
549 $atf_ifconfig shmif0 create
550 $atf_ifconfig shmif0 linkstr $BUS2
551 $atf_ifconfig shmif0 up
552
553 $atf_ifconfig lagg0 create
554 $atf_ifconfig lagg0 laggproto lacp laggport shmif0
555 $atf_ifconfig lagg0 up
556
557 export RUMP_SERVER=$SOCK_HOST0
558 wait_for_distributing lagg0 shmif0
559 expected_inactive lagg0 shmif1
560 expected_inactive lagg0 shmif2
561 }
562
563 lagg_lacp_basic_cleanup()
564 {
565
566 $DEBUG && dump
567 cleanup
568 }
569
570 lagg_lacp_ping()
571 {
572 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
573
574 local af=$1
575 local l2proto=$2
576 local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
577 local ping=rump.ping
578 local rumplib=""
579 local pfx=24
580 local addr_host0=$IP4ADDR0
581 local addr_host1=$IP4ADDR1
582
583 case $af in
584 "inet")
585 # do nothing
586 ;;
587 "inet6")
588 atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
589 rumplib="netinet6"
590 pfx=64
591 addr_host0=$IP6ADDR0
592 addr_host1=$IP6ADDR1
593 ;;
594 esac
595
596 case $l2proto in
597 "ether")
598 iface0=shmif0
599 iface1=shmif1
600 iface2=shmif2
601 ;;
602 "l2tp")
603 rumplib="$rumplib l2tp"
604 iface0=l2tp0
605 iface1=l2tp1
606 iface2=l2tp2
607 ;;
608 esac
609
610 rump_server_start $SOCK_HOST0 lagg $rumplib
611 rump_server_start $SOCK_HOST1 lagg $rumplib
612
613 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
614 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
615 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
616
617 rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
618 rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
619 rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
620
621 if [ x"$l2proto" = x"l2tp" ];then
622 setup_l2tp_ipv4tunnel
623 fi
624
625 export RUMP_SERVER=$SOCK_HOST0
626 $atf_ifconfig lagg0 create
627 $atf_ifconfig lagg0 laggproto lacp laggport $iface0
628 $atf_ifconfig lagg0 $af $addr_host0/$pfx
629 $atf_ifconfig $iface0 up
630 $atf_ifconfig lagg0 up
631
632 export RUMP_SERVER=$SOCK_HOST1
633 $atf_ifconfig lagg0 create
634 $atf_ifconfig lagg0 laggproto lacp laggport $iface0
635 $atf_ifconfig lagg0 $af $addr_host1/$pfx
636 $atf_ifconfig $iface0 up
637 $atf_ifconfig lagg0 up
638
639 export RUMP_SERVER=$SOCK_HOST0
640 wait_for_distributing lagg0
641 $atf_ifconfig -w 10
642
643 export RUMP_SERVER=$SOCK_HOST1
644 wait_for_distributing lagg0
645 $atf_ifconfig -w 10
646
647 $atf_ping $addr_host0
648
649 export RUMP_SERVER=$SOCK_HOST0
650 $atf_ifconfig $iface1 up
651 $atf_ifconfig lagg0 laggport $iface1 laggport $iface2
652 $atf_ifconfig $iface2 up
653
654 export RUMP_SERVER=$SOCK_HOST1
655 $atf_ifconfig $iface1 up
656 $atf_ifconfig lagg0 laggport $iface1 laggport $iface2
657 $atf_ifconfig $iface2 up
658
659 export RUMP_SERVER=$SOCK_HOST0
660 wait_for_distributing lagg0 $iface1
661 wait_for_distributing lagg0 $iface2
662
663 export RUMP_SERVER=$SOCK_HOST1
664 wait_for_distributing lagg0 $iface1
665 wait_for_distributing lagg0 $iface2
666
667 $atf_ping $addr_host0
668 }
669
670 atf_test_case lagg_lacp_ipv4 cleanup
671 lagg_lacp_ipv4_head()
672 {
673
674 atf_set "descr" "tests for IPv4 with LACP"
675 atf_set "require.progs" "rump_server"
676 }
677
678 lagg_lacp_ipv4_body()
679 {
680
681 lagg_lacp_ping "inet" "ether"
682 }
683
684 lagg_lacp_ipv4_cleanup()
685 {
686
687 $DEBUG && dump
688 cleanup
689 }
690
691 atf_test_case lagg_lacp_ipv6 cleanup
692 lagg_lacp_ipv6_head()
693 {
694
695 atf_set "descr" "tests for IPv6 with LACP"
696 atf_set "require.progs" "rump_server"
697 }
698
699 lagg_lacp_ipv6_body()
700 {
701
702 lagg_lacp_ping "inet6" "ether"
703 }
704
705 lagg_lacp_ipv6_cleanup()
706 {
707
708 $DEBUG && dump
709 cleanup
710 }
711
712 atf_test_case lagg_lacp_l2tp_ipv4 cleanup
713 lagg_lacp_l2tp_ipv4_head()
714 {
715
716 atf_set "descr" "tests for LACP over l2tp by using IPv4"
717 atf_set "require.progs" "rump_server"
718 }
719
720 lagg_lacp_l2tp_ipv4_body()
721 {
722
723 lagg_lacp_ping "inet" "l2tp"
724 }
725
726 lagg_lacp_l2tp_ipv4_cleanup()
727 {
728
729 $DEBUG && dump
730 cleanup
731 }
732
733 atf_test_case lagg_lacp_l2tp_ipv6 cleanup
734 lagg_lacp_l2tp_ipv6_head()
735 {
736
737 atf_set "descr" "tests for LACP over l2tp using IPv6"
738 atf_set "require.progs" "rump_server"
739 }
740
741 lagg_lacp_l2tp_ipv6_body()
742 {
743
744 lagg_lacp_ping "inet6" "l2tp"
745 }
746
747 lagg_lacp_l2tp_ipv6_cleanup()
748 {
749
750 $DEBUG && dump
751 cleanup
752 }
753
754 lagg_lacp_vlan()
755 {
756 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
757
758 local af=$1
759 local l2proto=$2
760 local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
761 local rumplib="vlan"
762 local pfx=24
763 local vlan0_addr_host0=$IP4ADDR0
764 local host0addr0=$IP4ADDR0
765 local host1addr0=$IP4ADDR1
766 local host0addr1=$IP4ADDR2
767 local host1addr1=$IP4ADDR3
768
769 case $af in
770 "inet")
771 # do nothing
772 ;;
773 "inet6")
774 atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
775 rumplib="$rumplib netinet6"
776 pfx=64
777 host0addr0=$IP6ADDR0
778 host1addr0=$IP6ADDR1
779 host0addr1=$IP6ADDR2
780 host1addr1=$IP6ADDR3
781 ;;
782 esac
783
784 case $l2proto in
785 "ether")
786 iface0=shmif0
787 iface1=shmif1
788 iface2=shmif2
789 ;;
790 "l2tp")
791 rumplib="$rumplib l2tp"
792 iface0=l2tp0
793 iface1=l2tp1
794 iface2=l2tp2
795 esac
796
797 rump_server_start $SOCK_HOST0 lagg $rumplib
798 rump_server_start $SOCK_HOST1 lagg $rumplib
799
800 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
801 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
802 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
803
804 rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
805 rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
806 rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
807
808 if [ x"$l2proto" = x"l2tp" ]; then
809 setup_l2tp_ipv4tunnel
810 fi
811
812 for sock in $SOCK_HOST0 $SOCK_HOST1; do
813 export RUMP_SERVER=$sock
814 $atf_ifconfig lagg0 create
815 $atf_ifconfig lagg0 laggproto lacp laggport $iface0
816
817 $atf_ifconfig vlan0 create
818 $atf_ifconfig vlan0 vlan 10 vlanif lagg0
819 $atf_ifconfig vlan1 create
820 $atf_ifconfig vlan1 vlan 11 vlanif lagg0
821
822 $atf_ifconfig $iface0 up
823 $atf_ifconfig lagg0 up
824 done
825
826 export RUMP_SERVER=$SOCK_HOST0
827 wait_for_distributing lagg0
828 $atf_ifconfig vlan0 $af $host0addr0/$pfx
829 $atf_ifconfig vlan0 up
830 $atf_ifconfig vlan1 $af $host0addr1/$pfx
831 $atf_ifconfig vlan1 up
832
833 export RUMP_SERVER=$SOCK_HOST1
834 wait_for_distributing lagg0
835 $atf_ifconfig vlan0 $af $host1addr0/$pfx
836 $atf_ifconfig vlan0 up
837 $atf_ifconfig vlan1 $af $host1addr1/$pfx
838 $atf_ifconfig vlan1 up
839
840 export RUMP_SERVER=$SOCK_HOST0
841 $atf_ifconfig -w 10
842 export RUMP_SERVER=$SOCK_HOST1
843 $atf_ifconfig -w 10
844
845 export RUMP_SERVER=$SOCK_HOST0
846 $atf_ping $host1addr0
847 $atf_ping $host1addr1
848
849 $atf_ifconfig lagg0 laggport $iface1
850 $atf_ifconfig $iface1 up
851
852 export RUMP_SERVER=$SOCK_HOST1
853 $atf_ifconfig lagg0 laggport $iface1
854 $atf_ifconfig $iface1 up
855
856 export RUMP_SERVER=$SOCK_HOST0
857 wait_for_distributing lagg0 $iface1
858
859 export RUMP_SERVER=$SOCK_HOST1
860 wait_for_distributing lagg0 $iface1
861
862 $atf_ping $host0addr0
863 $atf_ping $host0addr1
864 }
865
866 atf_test_case lagg_lacp_vlan_ipv4 cleanup
867 lagg_lacp_vlan_ipv4_head()
868 {
869
870 atf_set "descr" "tests for IPv4 VLAN frames over LACP LAG"
871 atf_set "require.progs" "rump_server"
872 }
873
874 lagg_lacp_vlan_ipv4_body()
875 {
876
877 lagg_lacp_vlan "inet" "ether"
878 }
879
880 lagg_lacp_vlan_ipv4_cleanup()
881 {
882 $DEBUG && dump
883 cleanup
884 }
885
886 atf_test_case lagg_lacp_vlan_ipv6 cleanup
887 lagg_lacp_vlan_ipv6_head()
888 {
889
890 atf_set "descr" "tests for IPv6 VLAN frames over LACP LAG"
891 atf_set "require.progs" "rump_server"
892 }
893
894 lagg_lacp_vlan_ipv6_body()
895 {
896
897 lagg_lacp_vlan "inet6" "ether"
898 }
899
900 lagg_lacp_vlan_ipv6_cleanup()
901 {
902 $DEBUG && dump
903 cleanup
904 }
905
906 atf_test_case lagg_lacp_vlanl2tp_ipv4 cleanup
907 lagg_lacp_vlanl2tp_ipv4_head()
908 {
909
910 atf_set "descr" "tests for IPv4 VLAN frames over LACP L2TP LAG"
911 atf_set "require.progs" "rump_server"
912 }
913
914 lagg_lacp_vlanl2tp_ipv4_body()
915 {
916
917 lagg_lacp_vlan "inet" "l2tp"
918 }
919
920 lagg_lacp_vlanl2tp_ipv4_cleanup()
921 {
922
923 $DEBUG && dump
924 cleanup
925 }
926
927 atf_test_case lagg_lacp_vlanl2tp_ipv6 cleanup
928 lagg_lacp_vlanl2tp_ipv6_head()
929 {
930
931 atf_set "descr" "tests for IPv6 VLAN frames over LACP L2TP LAG"
932 atf_set "require.progs" "rump_server"
933 }
934
935 lagg_lacp_vlanl2tp_ipv6_body()
936 {
937
938 lagg_lacp_vlan "inet6" "l2tp"
939 }
940
941 lagg_lacp_vlanl2tp_ipv6_cleanup()
942 {
943
944 $DEBUG && dump
945 cleanup
946 }
947
948 atf_test_case lagg_lacp_portpri cleanup
949 lagg_lacp_portpri_head()
950 {
951
952 atf_set "descr" "tests for LACP port priority"
953 atf_set "require.progs" "rump_server"
954 }
955
956 lagg_lacp_portpri_body()
957 {
958 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
959
960 rump_server_start $SOCK_HOST0 lagg
961 rump_server_start $SOCK_HOST1 lagg
962
963 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
964 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
965 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
966
967 rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
968 rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
969 rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
970
971 export RUMP_SERVER=$SOCK_HOST0
972 $atf_ifconfig lagg0 create
973 $atf_ifconfig lagg0 laggproto lacp
974 $atf_ifconfig lagg0 lagglacp maxports 2
975
976 $atf_ifconfig shmif0 up
977 $atf_ifconfig shmif1 up
978 $atf_ifconfig shmif2 up
979
980 $atf_ifconfig lagg0 laggport shmif0 pri 1000
981 $atf_ifconfig lagg0 laggport shmif1 pri 2000
982 $atf_ifconfig lagg0 laggport shmif2 pri 3000
983 $atf_ifconfig lagg0 up
984
985 atf_check -s exit:0 -o match:'shmif0 pri=1000' rump.ifconfig lagg0
986 atf_check -s exit:0 -o match:'shmif1 pri=2000' rump.ifconfig lagg0
987 atf_check -s exit:0 -o match:'shmif2 pri=3000' rump.ifconfig lagg0
988
989 export RUMP_SERVER=$SOCK_HOST1
990 $atf_ifconfig lagg0 create
991 $atf_ifconfig lagg0 laggproto lacp
992
993 $atf_ifconfig shmif0 up
994 $atf_ifconfig shmif1 up
995 $atf_ifconfig shmif2 up
996
997 $atf_ifconfig lagg0 laggport shmif0 pri 300
998 $atf_ifconfig lagg0 laggport shmif1 pri 200
999 $atf_ifconfig lagg0 laggport shmif2 pri 100
1000 $atf_ifconfig lagg0 up
1001
1002 atf_check -s exit:0 -o match:'shmif0 pri=300' rump.ifconfig lagg0
1003 atf_check -s exit:0 -o match:'shmif1 pri=200' rump.ifconfig lagg0
1004 atf_check -s exit:0 -o match:'shmif2 pri=100' rump.ifconfig lagg0
1005
1006 export RUMP_SERVER=$SOCK_HOST0
1007 wait_for_distributing lagg0 shmif0
1008 wait_for_distributing lagg0 shmif1
1009 wait_state "STANDBY" lagg0 shmif2
1010
1011 $atf_ifconfig shmif0 down
1012 wait_for_distributing lagg0 shmif2
1013
1014 $atf_ifconfig shmif0 up
1015 wait_for_distributing lagg0 shmif0
1016
1017 $atf_ifconfig lagg0 laggportpri shmif0 5000
1018 $atf_ifconfig lagg0 laggportpri shmif1 5000
1019 $atf_ifconfig lagg0 laggportpri shmif2 5000
1020
1021 atf_check -s exit:0 -o match:'shmif0 pri=5000' rump.ifconfig lagg0
1022 atf_check -s exit:0 -o match:'shmif1 pri=5000' rump.ifconfig lagg0
1023 atf_check -s exit:0 -o match:'shmif2 pri=5000' rump.ifconfig lagg0
1024
1025 wait_state "STANDBY" lagg0 shmif0
1026 wait_for_distributing lagg0 shmif1
1027 wait_for_distributing lagg0 shmif2
1028 }
1029
1030 lagg_lacp_portpri_cleanup()
1031 {
1032
1033 $DEBUG && dump
1034 cleanup
1035 }
1036
1037 lagg_failover()
1038 {
1039 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
1040
1041 local af=$1
1042 local l2proto=$2
1043 local ping="rump.ping -c 1"
1044 local rumplib=""
1045 local pfx=24
1046 local addr_host0=$IP4ADDR0
1047 local addr_host1=$IP4ADDR1
1048
1049 case $af in
1050 "inet")
1051 # do nothing
1052 ;;
1053 "inet6")
1054 ping="rump.ping6 -c 1"
1055 rumplib="netinet6"
1056 pfx=64
1057 addr_host0=$IP6ADDR0
1058 addr_host1=$IP6ADDR1
1059 ;;
1060 esac
1061
1062 case $l2proto in
1063 "ether")
1064 iface0="shmif0"
1065 iface1="shmif1"
1066 iface2="shmif2"
1067 ;;
1068 "l2tp")
1069 rumplib="$rumplib l2tp"
1070 iface0="l2tp0"
1071 iface1="l2tp1"
1072 iface2="l2tp2"
1073 ;;
1074 esac
1075
1076 local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
1077
1078 rump_server_start $SOCK_HOST0 lagg $rumplib
1079 rump_server_start $SOCK_HOST1 lagg $rumplib
1080
1081 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
1082 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
1083 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
1084
1085 rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
1086 rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
1087 rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
1088
1089 if [ x"$l2proto" = x"l2tp" ]; then
1090 setup_l2tp_ipv4tunnel
1091 fi
1092
1093 export RUMP_SERVER=$SOCK_HOST0
1094 $atf_ifconfig lagg0 create
1095 $atf_ifconfig lagg0 laggproto failover
1096
1097 $atf_ifconfig lagg0 laggport $iface0 pri 1000
1098 $atf_ifconfig lagg0 laggport $iface1 pri 2000
1099 $atf_ifconfig lagg0 laggport $iface2 pri 3000
1100 $atf_ifconfig lagg0 $af $addr_host0/$pfx
1101
1102 export RUMP_SERVER=$SOCK_HOST1
1103 $atf_ifconfig lagg0 create
1104 $atf_ifconfig lagg0 laggproto failover
1105
1106 $atf_ifconfig lagg0 laggport $iface0 pri 1000
1107 $atf_ifconfig lagg0 laggport $iface1 pri 3000
1108 $atf_ifconfig lagg0 laggport $iface2 pri 2000
1109 $atf_ifconfig lagg0 $af $addr_host1/$pfx
1110
1111 export RUMP_SERVER=$SOCK_HOST0
1112 $atf_ifconfig $iface0 up
1113 $atf_ifconfig $iface1 up
1114 $atf_ifconfig $iface2 up
1115 $atf_ifconfig lagg0 up
1116
1117 export RUMP_SERVER=$SOCK_HOST1
1118 $atf_ifconfig $iface0 up
1119 $atf_ifconfig $iface1 up
1120 $atf_ifconfig $iface2 up
1121 $atf_ifconfig lagg0 up
1122
1123 export RUMP_SERVER=$SOCK_HOST0
1124 $atf_ifconfig -w 10
1125 wait_for_distributing lagg0 $iface0
1126 wait_state "COLLECTING" lagg0 $iface0
1127 wait_state "COLLECTING" lagg0 $iface1
1128 wait_state "COLLECTING" lagg0 $iface2
1129
1130 export RUMP_SERVER=$SOCK_HOST1
1131 $atf_ifconfig -w 10
1132 wait_for_distributing lagg0 $iface0
1133 wait_state "COLLECTING" lagg0 $iface0
1134 wait_state "COLLECTING" lagg0 $iface1
1135 wait_state "COLLECTING" lagg0 $iface2
1136
1137 export RUMP_SERVER=$SOCK_HOST0
1138 $atf_ping $addr_host1
1139
1140 $atf_ifconfig $iface0 down
1141 wait_for_distributing lagg0 $iface1
1142 wait_state "COLLECTING" lagg0 $iface1
1143 wait_state "COLLECTING" lagg0 $iface2
1144
1145 export RUMP_SERVER=$SOCK_HOST1
1146 $atf_ifconfig $iface0 down
1147 wait_for_distributing lagg0 $iface2
1148 wait_state "COLLECTING" lagg0 $iface2
1149 wait_state "COLLECTING" lagg0 $iface1
1150
1151 export RUMP_SERVER=$SOCK_HOST0
1152 $atf_ping $addr_host1
1153
1154 $atf_ifconfig lagg0 laggfailover -rx-all
1155 atf_check -s exit:0 -o not-match:'$iface2.+COLLECTING' rump.ifconfig lagg0
1156
1157 export RUMP_SERVER=$SOCK_HOST1
1158 $atf_ifconfig lagg0 laggfailover -rx-all
1159 atf_check -s exit:0 -o not-match:'$iface1.+COLLECTING' rump.ifconfig lagg0
1160
1161 export RUMP_SERVER=$SOCK_HOST0
1162 atf_check -s not-exit:0 -o ignore -e ignore $ping -c 1 $addr_host1
1163 }
1164
1165 atf_test_case lagg_failover_ipv4 cleanup
1166 lagg_failover_ipv4_head()
1167 {
1168
1169 atf_set "descr" "tests for failover using IPv4"
1170 atf_set "require.progs" "rump_server"
1171 }
1172
1173 lagg_failover_ipv4_body()
1174 {
1175
1176 lagg_failover "inet" "ether"
1177 }
1178
1179 lagg_failover_ipv4_cleanup()
1180 {
1181
1182 $DEBUG && dump
1183 cleanup
1184 }
1185
1186 atf_test_case lagg_failover_ipv6 cleanup
1187 lagg_failover_ipv6_head()
1188 {
1189
1190 atf_set "descr" "tests for failover using IPv6"
1191 atf_set "require.progs" "rump_server"
1192 }
1193
1194 lagg_failover_ipv6_body()
1195 {
1196
1197 lagg_failover "inet6" "ether"
1198 }
1199
1200 lagg_failover_ipv6_cleanup()
1201 {
1202
1203 $DEBUG && dump
1204 cleanup
1205 }
1206
1207 atf_test_case lagg_failover_l2tp_ipv4 cleanup
1208 lagg_failover_l2tp_ipv4_head()
1209 {
1210
1211 atf_set "descr" "tests for failover over l2tp using IPv4"
1212 atf_set "require.progs" "rump_server"
1213 }
1214
1215 lagg_failover_l2tp_ipv4_body()
1216 {
1217
1218 lagg_failover "inet" "l2tp"
1219 }
1220
1221 lagg_failover_l2tp_ipv4_cleanup()
1222 {
1223 $DEBUG && dump
1224 cleanup
1225 }
1226
1227 atf_test_case lagg_failover_l2tp_ipv6 cleanup
1228 lagg_failover_l2tp_ipv6_head()
1229 {
1230
1231 atf_set "descr" "tests for failover over l2tp using IPv6"
1232 atf_set "require.progs" "rump_server"
1233 }
1234
1235 lagg_failover_l2tp_ipv6_body()
1236 {
1237
1238 lagg_failover "inet6" "l2tp"
1239 }
1240
1241 lagg_failover_l2tp_ipv6_cleanup()
1242 {
1243 $DEBUG && dump
1244 cleanup
1245 }
1246
1247 lagg_loadbalance()
1248 {
1249 local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
1250
1251 local af=$1
1252 local l2proto=$2
1253 local ping="rump.ping -c 1"
1254 local rumplib=""
1255 local pfx=24
1256 local addr_host0=$IP4ADDR0
1257 local addr_host1=$IP4ADDR1
1258
1259 case $af in
1260 "inet")
1261 # do nothing
1262 ;;
1263 "inet6")
1264 ping="rump.ping6 -c 1"
1265 rumplib="netinet6"
1266 pfx=64
1267 addr_host0=$IP6ADDR0
1268 addr_host1=$IP6ADDR1
1269 ;;
1270 esac
1271
1272 case $l2proto in
1273 "ether")
1274 iface0=shmif0
1275 iface1=shmif1
1276 iface2=shmif2
1277 ;;
1278 "l2tp")
1279 rumplib="$rumplib l2tp"
1280 iface0=l2tp0
1281 iface1=l2tp1
1282 iface2=l2tp2
1283 ;;
1284 esac
1285
1286 local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
1287
1288 rump_server_start $SOCK_HOST0 lagg $rumplib
1289 rump_server_start $SOCK_HOST1 lagg $rumplib
1290
1291 rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
1292 rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
1293 rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
1294
1295 rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
1296 rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
1297 rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
1298
1299 if [ x"$l2proto" = x"l2tp" ]; then
1300 setup_l2tp_ipv4tunnel
1301 fi
1302
1303 export RUMP_SERVER=$SOCK_HOST0
1304 $atf_ifconfig lagg0 create
1305 $atf_ifconfig lagg0 laggproto loadbalance
1306
1307 $atf_ifconfig lagg0 laggport $iface0 pri 1000
1308 $atf_ifconfig lagg0 laggport $iface1 pri 2000
1309 $atf_ifconfig lagg0 laggport $iface2 pri 3000
1310 $atf_ifconfig lagg0 $af $addr_host0/$pfx
1311
1312 export RUMP_SERVER=$SOCK_HOST1
1313 $atf_ifconfig lagg0 create
1314 $atf_ifconfig lagg0 laggproto loadbalance
1315
1316 $atf_ifconfig lagg0 laggport $iface0 pri 1000
1317 $atf_ifconfig lagg0 laggport $iface1 pri 3000
1318 $atf_ifconfig lagg0 laggport $iface2 pri 2000
1319 $atf_ifconfig lagg0 $af $addr_host1/$pfx
1320
1321 export RUMP_SERVER=$SOCK_HOST0
1322 $atf_ifconfig $iface0 up
1323 $atf_ifconfig $iface1 up
1324 $atf_ifconfig $iface2 up
1325 $atf_ifconfig lagg0 up
1326
1327 export RUMP_SERVER=$SOCK_HOST1
1328 $atf_ifconfig $iface0 up
1329 $atf_ifconfig $iface1 up
1330 $atf_ifconfig $iface2 up
1331 $atf_ifconfig lagg0 up
1332
1333 export RUMP_SERVER=$SOCK_HOST0
1334 $atf_ifconfig -w 10
1335 wait_for_distributing lagg0 $iface0
1336 wait_state "COLLECTING" lagg0 $iface0
1337 wait_state "COLLECTING" lagg0 $iface1
1338 wait_state "COLLECTING" lagg0 $iface2
1339
1340 export RUMP_SERVER=$SOCK_HOST1
1341 $atf_ifconfig -w 10
1342 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface0
1343 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
1344 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
1345
1346 export RUMP_SERVER=$SOCK_HOST0
1347 $atf_ping $addr_host1
1348
1349 $atf_ifconfig $iface0 down
1350 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
1351 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
1352
1353 export RUMP_SERVER=$SOCK_HOST1
1354 $atf_ifconfig $iface0 down
1355 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
1356 wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
1357
1358 export RUMP_SERVER=$SOCK_HOST0
1359 $atf_ping $addr_host1
1360 }
1361
1362 atf_test_case lagg_loadbalance_ipv4 cleanup
1363 lagg_loadbalance_ipv4_head()
1364 {
1365
1366 atf_set "descr" "tests for loadbalance using IPv4"
1367 atf_set "require.progs" "rump_server"
1368 }
1369
1370 lagg_loadbalance_ipv4_body()
1371 {
1372
1373 lagg_loadbalance "inet" "ether"
1374 }
1375
1376 lagg_loadbalance_ipv4_cleanup()
1377 {
1378
1379 $DEBUG && dump
1380 cleanup
1381 }
1382
1383 atf_test_case lagg_loadbalance_ipv6 cleanup
1384 lagg_loadbalance_ipv6_head()
1385 {
1386
1387 atf_set "descr" "tests for loadbalance using IPv6"
1388 atf_set "require.progs" "rump_server"
1389 }
1390
1391 lagg_loadbalance_ipv6_body()
1392 {
1393
1394 lagg_loadbalance "inet6" "ether"
1395 }
1396
1397 lagg_loadbalance_ipv6_cleanup()
1398 {
1399
1400 $DEBUG && dump
1401 cleanup
1402 }
1403
1404 atf_test_case lagg_loadbalance_l2tp_ipv4 cleanup
1405 lagg_loadbalance_l2tp_ipv4_head()
1406 {
1407
1408 atf_set "descr" "tests for loadbalance over l2tp using IPv4"
1409 atf_set "require.progs" "rump_server"
1410 }
1411
1412 lagg_loadbalance_l2tp_ipv4_body()
1413 {
1414
1415 lagg_loadbalance "inet" "l2tp"
1416 }
1417
1418 lagg_loadbalance_l2tp_ipv4_cleanup()
1419 {
1420
1421 $DEBUG && dump
1422 cleanup
1423 }
1424
1425 atf_test_case lagg_loadbalance_l2tp_ipv6 cleanup
1426 lagg_loadbalance_l2tp_ipv4_head()
1427 {
1428
1429 atf_set "descr" "tests for loadbalance over l2tp using IPv6"
1430 atf_set "require.progs" "rump_server"
1431 }
1432
1433 lagg_loadbalance_l2tp_ipv6_body()
1434 {
1435
1436 lagg_loadbalance "inet6" "l2tp"
1437 }
1438
1439 lagg_loadbalance_l2tp_ipv6_cleanup()
1440 {
1441
1442 $DEBUG && dump
1443 cleanup
1444 }
1445
1446 atf_init_test_cases()
1447 {
1448
1449 atf_add_test_case lagg_ifconfig
1450 atf_add_test_case lagg_macaddr
1451 atf_add_test_case lagg_ipv6lla
1452 atf_add_test_case lagg_mtu
1453 atf_add_test_case lagg_lacp_basic
1454 atf_add_test_case lagg_lacp_ipv4
1455 atf_add_test_case lagg_lacp_ipv6
1456 atf_add_test_case lagg_lacp_l2tp_ipv4
1457 atf_add_test_case lagg_lacp_l2tp_ipv6
1458 atf_add_test_case lagg_lacp_vlan_ipv4
1459 atf_add_test_case lagg_lacp_vlan_ipv6
1460 atf_add_test_case lagg_lacp_vlanl2tp_ipv4
1461 atf_add_test_case lagg_lacp_vlanl2tp_ipv6
1462 atf_add_test_case lagg_lacp_portpri
1463 atf_add_test_case lagg_failover_ipv4
1464 atf_add_test_case lagg_failover_ipv6
1465 atf_add_test_case lagg_failover_l2tp_ipv4
1466 atf_add_test_case lagg_failover_l2tp_ipv6
1467 atf_add_test_case lagg_loadbalance_ipv4
1468 atf_add_test_case lagg_loadbalance_ipv6
1469 atf_add_test_case lagg_loadbalance_l2tp_ipv4
1470 atf_add_test_case lagg_loadbalance_l2tp_ipv6
1471 }
1472