t_lagg.sh revision 1.2 1 1.2 yamaguch # $NetBSD: t_lagg.sh,v 1.2 2021/05/25 00:38:30 yamaguchi Exp $
2 1.1 yamaguch #
3 1.1 yamaguch # Copyright (c) 2021 Internet Initiative Japan Inc.
4 1.1 yamaguch # All rights reserved.
5 1.1 yamaguch #
6 1.1 yamaguch # Redistribution and use in source and binary forms, with or without
7 1.1 yamaguch # modification, are permitted provided that the following conditions
8 1.1 yamaguch # are met:
9 1.1 yamaguch # 1. Redistributions of source code must retain the above copyright
10 1.1 yamaguch # notice, this list of conditions and the following disclaimer.
11 1.1 yamaguch # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 yamaguch # notice, this list of conditions and the following disclaimer in the
13 1.1 yamaguch # documentation and/or other materials provided with the distribution.
14 1.1 yamaguch #
15 1.1 yamaguch # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 yamaguch # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 yamaguch # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 yamaguch # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 yamaguch # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 yamaguch # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 yamaguch # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 yamaguch # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 yamaguch # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 yamaguch # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 yamaguch # POSSIBILITY OF SUCH DAMAGE.
26 1.1 yamaguch #
27 1.1 yamaguch
28 1.1 yamaguch SOCK_HOST0=unix://commsock0
29 1.1 yamaguch SOCK_HOST1=unix://commsock1
30 1.1 yamaguch SOCK_HOST2=unix://commsock2
31 1.1 yamaguch BUS0=bus0
32 1.1 yamaguch BUS1=bus1
33 1.1 yamaguch BUS2=bus2
34 1.1 yamaguch IP4ADDR0=192.168.0.1
35 1.1 yamaguch IP4ADDR1=192.168.0.2
36 1.1 yamaguch IP4ADDR2=192.168.1.1
37 1.1 yamaguch IP4ADDR3=192.168.1.2
38 1.1 yamaguch IP6ADDR0=fc00::1
39 1.1 yamaguch IP6ADDR1=fc00::2
40 1.1 yamaguch IP6ADDR2=fc00:1::1
41 1.1 yamaguch IP6ADDR3=fc00:1::2
42 1.1 yamaguch WAITTIME=20
43 1.1 yamaguch
44 1.1 yamaguch DEBUG=${DEBUG:-false}
45 1.1 yamaguch
46 1.1 yamaguch wait_state()
47 1.1 yamaguch {
48 1.1 yamaguch local state=$1
49 1.1 yamaguch local if_lagg=$2
50 1.1 yamaguch local if_port=$3
51 1.1 yamaguch
52 1.1 yamaguch local n=$WAITTIME
53 1.1 yamaguch local cmd_grep="grep -q ${state}"
54 1.1 yamaguch
55 1.1 yamaguch if [ x"$if_port" != x"" ]; then
56 1.1 yamaguch cmd_grep="grep $if_port | $cmd_grep"
57 1.1 yamaguch fi
58 1.1 yamaguch
59 1.1 yamaguch for i in $(seq $n); do
60 1.1 yamaguch rump.ifconfig $if_lagg | eval $cmd_grep
61 1.1 yamaguch if [ $? = 0 ] ; then
62 1.1 yamaguch $DEBUG && echo "wait for $i seconds."
63 1.1 yamaguch return 0
64 1.1 yamaguch fi
65 1.1 yamaguch
66 1.1 yamaguch sleep 1
67 1.1 yamaguch done
68 1.1 yamaguch
69 1.1 yamaguch $DEBUG && rump.ifconfig -v $if_lagg
70 1.1 yamaguch atf_fail "Couldn't be ${state} for $n seconds."
71 1.1 yamaguch }
72 1.1 yamaguch wait_for_distributing()
73 1.1 yamaguch {
74 1.1 yamaguch
75 1.1 yamaguch wait_state "DISTRIBUTING" $*
76 1.1 yamaguch }
77 1.1 yamaguch
78 1.1 yamaguch expected_inactive()
79 1.1 yamaguch {
80 1.1 yamaguch local if_lagg=$1
81 1.1 yamaguch local if_port=$2
82 1.1 yamaguch
83 1.1 yamaguch sleep 3 # wait a little
84 1.1 yamaguch atf_check -s exit:0 -o not-match:"${if_port}.*ACTIVE" \
85 1.1 yamaguch rump.ifconfig ${if_lagg}
86 1.1 yamaguch }
87 1.1 yamaguch
88 1.1 yamaguch atf_test_case lagg_ifconfig cleanup
89 1.1 yamaguch lagg_ifconfig_head()
90 1.1 yamaguch {
91 1.1 yamaguch
92 1.1 yamaguch atf_set "descr" "tests for create, destroy, and ioctl of lagg(4)"
93 1.1 yamaguch atf_set "require.progs" "rump_server"
94 1.1 yamaguch }
95 1.1 yamaguch
96 1.1 yamaguch lagg_ifconfig_body()
97 1.1 yamaguch {
98 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
99 1.1 yamaguch
100 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg
101 1.1 yamaguch
102 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
103 1.1 yamaguch $atf_ifconfig lagg0 create
104 1.1 yamaguch $atf_ifconfig lagg0 destroy
105 1.1 yamaguch
106 1.1 yamaguch $atf_ifconfig lagg0 create
107 1.1 yamaguch $atf_ifconfig shmif0 create
108 1.1 yamaguch
109 1.1 yamaguch $atf_ifconfig lagg0 laggproto none
110 1.1 yamaguch atf_check -s exit:0 -o match:'laggproto none' \
111 1.1 yamaguch rump.ifconfig lagg0
112 1.1 yamaguch
113 1.1 yamaguch # cannot add a port while protocol is none
114 1.1 yamaguch atf_check -s not-exit:0 -e ignore \
115 1.1 yamaguch rump.ifconfig lagg0 laggport shmif0
116 1.1 yamaguch
117 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
118 1.1 yamaguch atf_check -s exit:0 -o match:'laggproto lacp' \
119 1.1 yamaguch rump.ifconfig lagg0
120 1.1 yamaguch
121 1.1 yamaguch # add a port and an added port
122 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
123 1.1 yamaguch atf_check -s not-exit:0 -e ignore \
124 1.1 yamaguch rump.ifconfig lagg0 laggport shmif0
125 1.1 yamaguch
126 1.1 yamaguch # remove an added port and a removed port
127 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
128 1.1 yamaguch atf_check -s not-exit:0 -e ignore \
129 1.1 yamaguch rump.ifconfig lagg0 -laggport shmif0
130 1.1 yamaguch
131 1.1 yamaguch # re-add a removed port
132 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
133 1.1 yamaguch
134 1.1 yamaguch # detach protocol even if the I/F has ports
135 1.1 yamaguch $atf_ifconfig lagg0 laggproto none
136 1.1 yamaguch
137 1.1 yamaguch # destroy the interface while grouping ports
138 1.1 yamaguch $atf_ifconfig lagg0 destroy
139 1.1 yamaguch
140 1.1 yamaguch $atf_ifconfig lagg0 create
141 1.1 yamaguch $atf_ifconfig shmif1 create
142 1.1 yamaguch
143 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
144 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
145 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
146 1.1 yamaguch
147 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
148 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
149 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif1
150 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
151 1.1 yamaguch
152 1.1 yamaguch # destroy a LAGed port
153 1.1 yamaguch atf_check -s exit:0 -o match:shmif0 rump.ifconfig lagg0
154 1.1 yamaguch atf_check -s exit:0 -o match:shmif1 rump.ifconfig lagg0
155 1.1 yamaguch $atf_ifconfig shmif0 destroy
156 1.1 yamaguch $atf_ifconfig shmif1 destroy
157 1.1 yamaguch
158 1.1 yamaguch $atf_ifconfig lagg0 laggproto none
159 1.1 yamaguch atf_check -s exit:0 -o ignore rump.ifconfig lagg0
160 1.1 yamaguch }
161 1.1 yamaguch
162 1.1 yamaguch lagg_ifconfig_cleanup()
163 1.1 yamaguch {
164 1.1 yamaguch $DEBG && dump
165 1.1 yamaguch cleanup
166 1.1 yamaguch }
167 1.1 yamaguch
168 1.1 yamaguch atf_test_case lagg_macaddr cleanup
169 1.1 yamaguch lagg_macaddr_head()
170 1.1 yamaguch {
171 1.1 yamaguch atf_set "descr" "tests for a MAC address to assign to lagg(4)"
172 1.1 yamaguch atf_set "require.progs" "rump_server"
173 1.1 yamaguch }
174 1.1 yamaguch
175 1.1 yamaguch lagg_macaddr_body()
176 1.1 yamaguch {
177 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
178 1.1 yamaguch
179 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg
180 1.1 yamaguch
181 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
182 1.1 yamaguch $atf_ifconfig lagg0 create
183 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
184 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
185 1.1 yamaguch
186 1.1 yamaguch maddr=$(get_macaddr $SOCK_HOST0 lagg0)
187 1.1 yamaguch maddr0=$(get_macaddr $SOCK_HOST0 shmif0)
188 1.1 yamaguch maddr1=$(get_macaddr $SOCK_HOST0 shmif1)
189 1.1 yamaguch
190 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
191 1.1 yamaguch
192 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
193 1.1 yamaguch atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
194 1.1 yamaguch
195 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
196 1.1 yamaguch atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
197 1.1 yamaguch atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif1
198 1.1 yamaguch
199 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
200 1.1 yamaguch atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
201 1.1 yamaguch atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
202 1.1 yamaguch
203 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
204 1.1 yamaguch atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
205 1.1 yamaguch atf_check -s exit:0 -o match:$maddr1 rump.ifconfig shmif0
206 1.1 yamaguch
207 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
208 1.1 yamaguch atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
209 1.1 yamaguch
210 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif1
211 1.1 yamaguch atf_check -s exit:0 -o match:$maddr rump.ifconfig lagg0
212 1.1 yamaguch }
213 1.1 yamaguch
214 1.1 yamaguch lagg_macaddr_cleanup()
215 1.1 yamaguch {
216 1.1 yamaguch $DEBUG && dump
217 1.1 yamaguch cleanup
218 1.1 yamaguch }
219 1.1 yamaguch
220 1.1 yamaguch atf_test_case lagg_ipv6lla cleanup
221 1.1 yamaguch lagg_ipv6lla_head()
222 1.1 yamaguch {
223 1.1 yamaguch atf_set "descr" "tests for a IPV6 LLA to assign to lagg(4)"
224 1.1 yamaguch atf_set "require.progs" "rump_server"
225 1.1 yamaguch }
226 1.1 yamaguch
227 1.1 yamaguch lagg_ipv6lla_body()
228 1.1 yamaguch {
229 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
230 1.1 yamaguch
231 1.1 yamaguch rump_server_start $SOCK_HOST0 netinet6 lagg
232 1.1 yamaguch
233 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
234 1.1 yamaguch $atf_ifconfig lagg0 create
235 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
236 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
237 1.1 yamaguch
238 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
239 1.1 yamaguch
240 1.1 yamaguch $atf_ifconfig shmif0 up
241 1.1 yamaguch atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
242 1.1 yamaguch
243 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
244 1.1 yamaguch atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif0
245 1.1 yamaguch
246 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
247 1.1 yamaguch $atf_ifconfig shmif1 up
248 1.1 yamaguch atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif1
249 1.1 yamaguch
250 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
251 1.1 yamaguch atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
252 1.1 yamaguch
253 1.1 yamaguch $atf_ifconfig shmif1 down
254 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif1
255 1.1 yamaguch atf_check -s exit:0 -o not-match:'inet fe80:' rump.ifconfig shmif1
256 1.1 yamaguch }
257 1.1 yamaguch
258 1.1 yamaguch lagg_ipv6lla_cleanup()
259 1.1 yamaguch {
260 1.1 yamaguch $DEBUG && dump
261 1.1 yamaguch cleanup
262 1.1 yamaguch }
263 1.1 yamaguch
264 1.1 yamaguch atf_test_case lagg_lacp_basic cleanup
265 1.1 yamaguch lagg_lacp_basic_head()
266 1.1 yamaguch {
267 1.1 yamaguch
268 1.1 yamaguch atf_set "descr" "tests for LACP basic functions"
269 1.1 yamaguch atf_set "require.progs" "rump_server"
270 1.1 yamaguch }
271 1.1 yamaguch
272 1.1 yamaguch lagg_lacp_basic_body()
273 1.1 yamaguch {
274 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
275 1.1 yamaguch
276 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg
277 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg
278 1.1 yamaguch rump_server_start $SOCK_HOST2 lagg
279 1.1 yamaguch
280 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
281 1.1 yamaguch
282 1.1 yamaguch # added running interface
283 1.1 yamaguch $atf_ifconfig shmif0 create
284 1.1 yamaguch $atf_ifconfig shmif0 linkstr $BUS0
285 1.1 yamaguch
286 1.1 yamaguch $atf_ifconfig shmif1 create
287 1.1 yamaguch $atf_ifconfig shmif1 linkstr $BUS1
288 1.1 yamaguch
289 1.1 yamaguch $atf_ifconfig lagg0 create
290 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
291 1.1 yamaguch
292 1.1 yamaguch $atf_ifconfig shmif0 up
293 1.1 yamaguch $atf_ifconfig shmif1 up
294 1.1 yamaguch $atf_ifconfig lagg0 up
295 1.1 yamaguch
296 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
297 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
298 1.1 yamaguch $atf_ifconfig -w 10
299 1.1 yamaguch
300 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0
301 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif1
302 1.1 yamaguch $atf_ifconfig lagg0 down
303 1.1 yamaguch
304 1.1 yamaguch # add the same interfaces again
305 1.1 yamaguch $atf_ifconfig lagg0 up
306 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
307 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
308 1.1 yamaguch
309 1.1 yamaguch # detach and re-attach protocol
310 1.1 yamaguch $atf_ifconfig lagg0 laggproto none
311 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp \
312 1.1 yamaguch laggport shmif0 laggport shmif1
313 1.1 yamaguch
314 1.1 yamaguch $atf_ifconfig lagg0 -laggport shmif0 -laggport shmif1
315 1.1 yamaguch $atf_ifconfig lagg0 destroy
316 1.1 yamaguch $atf_ifconfig shmif0 destroy
317 1.1 yamaguch $atf_ifconfig shmif1 destroy
318 1.1 yamaguch
319 1.1 yamaguch # tests for a loopback condition
320 1.1 yamaguch $atf_ifconfig shmif0 create
321 1.1 yamaguch $atf_ifconfig shmif0 linkstr $BUS0
322 1.1 yamaguch $atf_ifconfig shmif1 create
323 1.1 yamaguch $atf_ifconfig shmif1 linkstr $BUS0
324 1.1 yamaguch $atf_ifconfig lagg0 create
325 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp \
326 1.1 yamaguch laggport shmif0 laggport shmif1
327 1.1 yamaguch $atf_ifconfig shmif0 up
328 1.1 yamaguch $atf_ifconfig shmif1 up
329 1.1 yamaguch $atf_ifconfig lagg0 up
330 1.1 yamaguch
331 1.1 yamaguch expected_inactive lagg0
332 1.1 yamaguch
333 1.1 yamaguch $atf_ifconfig shmif0 down
334 1.1 yamaguch $atf_ifconfig shmif0 destroy
335 1.1 yamaguch $atf_ifconfig shmif1 down
336 1.1 yamaguch $atf_ifconfig shmif1 destroy
337 1.1 yamaguch $atf_ifconfig lagg0 down
338 1.1 yamaguch $atf_ifconfig lagg0 destroy
339 1.1 yamaguch
340 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
341 1.1 yamaguch $atf_ifconfig shmif0 create
342 1.1 yamaguch $atf_ifconfig shmif0 linkstr $BUS0
343 1.1 yamaguch $atf_ifconfig shmif0 up
344 1.1 yamaguch
345 1.1 yamaguch $atf_ifconfig shmif1 create
346 1.1 yamaguch $atf_ifconfig shmif1 linkstr $BUS1
347 1.1 yamaguch $atf_ifconfig shmif1 up
348 1.1 yamaguch
349 1.1 yamaguch $atf_ifconfig shmif2 create
350 1.1 yamaguch $atf_ifconfig shmif2 linkstr $BUS2
351 1.1 yamaguch $atf_ifconfig shmif2 up
352 1.1 yamaguch
353 1.1 yamaguch $atf_ifconfig lagg0 create
354 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0 \
355 1.1 yamaguch laggport shmif1 laggport shmif2
356 1.1 yamaguch $atf_ifconfig lagg0 up
357 1.1 yamaguch
358 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
359 1.1 yamaguch $atf_ifconfig shmif0 create
360 1.1 yamaguch $atf_ifconfig shmif0 linkstr $BUS0
361 1.1 yamaguch $atf_ifconfig shmif0 up
362 1.1 yamaguch
363 1.1 yamaguch $atf_ifconfig shmif1 create
364 1.1 yamaguch $atf_ifconfig shmif1 linkstr $BUS1
365 1.1 yamaguch $atf_ifconfig shmif1 up
366 1.1 yamaguch
367 1.1 yamaguch $atf_ifconfig lagg0 create
368 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
369 1.1 yamaguch $atf_ifconfig lagg1 create
370 1.1 yamaguch $atf_ifconfig lagg1 laggproto lacp
371 1.1 yamaguch
372 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0
373 1.1 yamaguch $atf_ifconfig lagg0 up
374 1.1 yamaguch wait_for_distributing lagg0 shmif0
375 1.1 yamaguch
376 1.1 yamaguch $atf_ifconfig lagg1 laggport shmif1
377 1.1 yamaguch $atf_ifconfig lagg1 up
378 1.1 yamaguch
379 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST2
380 1.1 yamaguch $atf_ifconfig shmif0 create
381 1.1 yamaguch $atf_ifconfig shmif0 linkstr $BUS2
382 1.1 yamaguch $atf_ifconfig shmif0 up
383 1.1 yamaguch
384 1.1 yamaguch $atf_ifconfig lagg0 create
385 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
386 1.1 yamaguch $atf_ifconfig lagg0 up
387 1.1 yamaguch
388 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
389 1.1 yamaguch wait_for_distributing lagg0 shmif0
390 1.1 yamaguch expected_inactive lagg0 shmif1
391 1.1 yamaguch expected_inactive lagg0 shmif2
392 1.1 yamaguch }
393 1.1 yamaguch
394 1.1 yamaguch lagg_lacp_basic_cleanup()
395 1.1 yamaguch {
396 1.1 yamaguch
397 1.1 yamaguch $DEBUG && dump
398 1.1 yamaguch cleanup
399 1.1 yamaguch }
400 1.1 yamaguch
401 1.1 yamaguch lagg_lacp_ping()
402 1.1 yamaguch {
403 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
404 1.1 yamaguch
405 1.1 yamaguch local af=$1
406 1.1 yamaguch local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
407 1.1 yamaguch local ping=rump.ping
408 1.1 yamaguch local rumplib=""
409 1.1 yamaguch local pfx=24
410 1.1 yamaguch local addr_host0=$IP4ADDR0
411 1.1 yamaguch local addr_host1=$IP4ADDR1
412 1.1 yamaguch
413 1.1 yamaguch case $af in
414 1.1 yamaguch "inet")
415 1.1 yamaguch # do nothing
416 1.1 yamaguch ;;
417 1.1 yamaguch "inet6")
418 1.1 yamaguch atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
419 1.1 yamaguch rumplib="netinet6"
420 1.1 yamaguch pfx=64
421 1.1 yamaguch addr_host0=$IP6ADDR0
422 1.1 yamaguch addr_host1=$IP6ADDR1
423 1.1 yamaguch ;;
424 1.1 yamaguch esac
425 1.1 yamaguch
426 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg $rumplib
427 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg $rumplib
428 1.1 yamaguch
429 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
430 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
431 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
432 1.1 yamaguch
433 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
434 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
435 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
436 1.1 yamaguch
437 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
438 1.1 yamaguch $atf_ifconfig lagg0 create
439 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
440 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host0/$pfx
441 1.1 yamaguch $atf_ifconfig shmif0 up
442 1.1 yamaguch $atf_ifconfig lagg0 up
443 1.1 yamaguch
444 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
445 1.1 yamaguch $atf_ifconfig lagg0 create
446 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
447 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host1/$pfx
448 1.1 yamaguch $atf_ifconfig shmif0 up
449 1.1 yamaguch $atf_ifconfig lagg0 up
450 1.1 yamaguch
451 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
452 1.1 yamaguch wait_for_distributing lagg0
453 1.1 yamaguch $atf_ifconfig -w 10
454 1.1 yamaguch
455 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
456 1.1 yamaguch wait_for_distributing lagg0
457 1.1 yamaguch $atf_ifconfig -w 10
458 1.1 yamaguch
459 1.1 yamaguch $atf_ping $addr_host0
460 1.1 yamaguch
461 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
462 1.1 yamaguch $atf_ifconfig shmif1 up
463 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 laggport shmif2
464 1.1 yamaguch $atf_ifconfig shmif2 up
465 1.1 yamaguch
466 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
467 1.1 yamaguch $atf_ifconfig shmif1 up
468 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 laggport shmif2
469 1.1 yamaguch $atf_ifconfig shmif2 up
470 1.1 yamaguch
471 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
472 1.1 yamaguch wait_for_distributing lagg0 shmif1
473 1.1 yamaguch wait_for_distributing lagg0 shmif2
474 1.1 yamaguch
475 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
476 1.1 yamaguch wait_for_distributing lagg0 shmif1
477 1.1 yamaguch wait_for_distributing lagg0 shmif2
478 1.1 yamaguch
479 1.1 yamaguch $atf_ping $addr_host0
480 1.1 yamaguch }
481 1.1 yamaguch
482 1.1 yamaguch atf_test_case lagg_lacp_ipv4 cleanup
483 1.1 yamaguch lagg_lacp_ipv4_head()
484 1.1 yamaguch {
485 1.1 yamaguch
486 1.1 yamaguch atf_set "descr" "tests for IPv4 with LACP"
487 1.1 yamaguch atf_set "require.progs" "rump_server"
488 1.1 yamaguch }
489 1.1 yamaguch
490 1.1 yamaguch lagg_lacp_ipv4_body()
491 1.1 yamaguch {
492 1.1 yamaguch
493 1.1 yamaguch lagg_lacp_ping "inet"
494 1.1 yamaguch }
495 1.1 yamaguch
496 1.1 yamaguch lagg_lacp_ipv4_cleanup()
497 1.1 yamaguch {
498 1.1 yamaguch
499 1.1 yamaguch $DEBUG && dump
500 1.1 yamaguch cleanup
501 1.1 yamaguch }
502 1.1 yamaguch
503 1.2 yamaguch atf_test_case lagg_lacp_ipv6 cleanup
504 1.1 yamaguch lagg_lacp_ipv6_head()
505 1.1 yamaguch {
506 1.1 yamaguch
507 1.1 yamaguch atf_set "descr" "tests for IPv6 with LACP"
508 1.1 yamaguch atf_set "require.progs" "rump_server"
509 1.1 yamaguch }
510 1.1 yamaguch
511 1.1 yamaguch lagg_lacp_ipv6_body()
512 1.1 yamaguch {
513 1.1 yamaguch
514 1.1 yamaguch lagg_lacp_ping "inet6"
515 1.1 yamaguch }
516 1.1 yamaguch
517 1.1 yamaguch lagg_lacp_ipv6_cleanup()
518 1.1 yamaguch {
519 1.1 yamaguch
520 1.1 yamaguch $DEBUG && dump
521 1.1 yamaguch cleanup
522 1.1 yamaguch }
523 1.1 yamaguch
524 1.1 yamaguch lagg_lacp_vlan()
525 1.1 yamaguch {
526 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
527 1.1 yamaguch
528 1.1 yamaguch local af=$1
529 1.1 yamaguch local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
530 1.1 yamaguch local rumplib="vlan"
531 1.1 yamaguch local pfx=24
532 1.1 yamaguch local vlan0_addr_host0=$IP4ADDR0
533 1.1 yamaguch local host0addr0=$IP4ADDR0
534 1.1 yamaguch local host1addr0=$IP4ADDR1
535 1.1 yamaguch local host0addr1=$IP4ADDR2
536 1.1 yamaguch local host1addr1=$IP4ADDR3
537 1.1 yamaguch
538 1.1 yamaguch case $af in
539 1.1 yamaguch "inet")
540 1.1 yamaguch # do nothing
541 1.1 yamaguch ;;
542 1.1 yamaguch "inet6")
543 1.1 yamaguch atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
544 1.1 yamaguch rumplib="netinet6"
545 1.1 yamaguch pfx=64
546 1.1 yamaguch host0addr0=$IP6ADDR0
547 1.1 yamaguch host1addr0=$IP6ADDR1
548 1.1 yamaguch host0addr1=$IP6ADDR2
549 1.1 yamaguch host1addr1=$IP6ADDR3
550 1.1 yamaguch ;;
551 1.1 yamaguch esac
552 1.1 yamaguch
553 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg $rumplib
554 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg $rumplib
555 1.1 yamaguch
556 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
557 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
558 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
559 1.1 yamaguch
560 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
561 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
562 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
563 1.1 yamaguch
564 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
565 1.1 yamaguch $atf_ifconfig lagg0 create
566 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
567 1.1 yamaguch $atf_ifconfig shmif0 up
568 1.1 yamaguch $atf_ifconfig lagg0 up
569 1.1 yamaguch
570 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
571 1.1 yamaguch $atf_ifconfig lagg0 create
572 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp laggport shmif0
573 1.1 yamaguch $atf_ifconfig shmif0 up
574 1.1 yamaguch $atf_ifconfig lagg0 up
575 1.1 yamaguch
576 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
577 1.1 yamaguch wait_for_distributing lagg0
578 1.1 yamaguch
579 1.1 yamaguch $atf_ifconfig vlan0 create
580 1.1 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif lagg0
581 1.1 yamaguch $atf_ifconfig vlan0 $af $host0addr0/$pfx
582 1.1 yamaguch $atf_ifconfig vlan0 up
583 1.1 yamaguch
584 1.1 yamaguch $atf_ifconfig vlan1 create
585 1.1 yamaguch $atf_ifconfig vlan1 vlan 11 vlanif lagg0
586 1.1 yamaguch $atf_ifconfig vlan1 $af $host0addr1/$pfx
587 1.1 yamaguch $atf_ifconfig vlan1 up
588 1.1 yamaguch
589 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
590 1.1 yamaguch $atf_ifconfig vlan0 create
591 1.1 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif lagg0
592 1.1 yamaguch $atf_ifconfig vlan0 $af $host1addr0/$pfx
593 1.1 yamaguch $atf_ifconfig vlan0 up
594 1.1 yamaguch
595 1.1 yamaguch $atf_ifconfig vlan1 create
596 1.1 yamaguch $atf_ifconfig vlan1 vlan 11 vlanif lagg0
597 1.1 yamaguch $atf_ifconfig vlan1 $af $host1addr1/$pfx
598 1.1 yamaguch $atf_ifconfig vlan1 up
599 1.1 yamaguch
600 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
601 1.1 yamaguch $atf_ifconfig -w 10
602 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
603 1.1 yamaguch $atf_ifconfig -w 10
604 1.1 yamaguch
605 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
606 1.1 yamaguch $atf_ping $host1addr0
607 1.1 yamaguch $atf_ping $host1addr1
608 1.1 yamaguch
609 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
610 1.1 yamaguch $atf_ifconfig shmif1 up
611 1.1 yamaguch
612 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
613 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1
614 1.1 yamaguch $atf_ifconfig shmif1 up
615 1.1 yamaguch
616 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
617 1.1 yamaguch wait_for_distributing lagg0 shmif1
618 1.1 yamaguch
619 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
620 1.1 yamaguch wait_for_distributing lagg0 shmif1
621 1.1 yamaguch
622 1.1 yamaguch $atf_ping $host0addr0
623 1.1 yamaguch $atf_ping $host0addr1
624 1.1 yamaguch }
625 1.1 yamaguch
626 1.1 yamaguch atf_test_case lagg_lacp_vlan_ipv4 cleanup
627 1.1 yamaguch lagg_lacp_vlan_ipv4_head()
628 1.1 yamaguch {
629 1.1 yamaguch
630 1.1 yamaguch atf_set "descr" "tests for IPv4 VLAN frames over LACP LAG"
631 1.1 yamaguch atf_set "require.progs" "rump_server"
632 1.1 yamaguch }
633 1.1 yamaguch
634 1.1 yamaguch lagg_lacp_vlan_ipv4_body()
635 1.1 yamaguch {
636 1.1 yamaguch
637 1.1 yamaguch lagg_lacp_vlan "inet"
638 1.1 yamaguch }
639 1.1 yamaguch
640 1.1 yamaguch lagg_lacp_vlan_ipv4_cleanup()
641 1.1 yamaguch {
642 1.1 yamaguch $DEBUG && dump
643 1.1 yamaguch cleanup
644 1.1 yamaguch }
645 1.1 yamaguch
646 1.1 yamaguch atf_test_case lagg_lacp_vlan_ipv6 cleanup
647 1.1 yamaguch lagg_lacp_vlan_ipv6_head()
648 1.1 yamaguch {
649 1.1 yamaguch
650 1.1 yamaguch atf_set "descr" "tests for IPv6 VLAN frames over LACP LAG"
651 1.1 yamaguch atf_set "require.progs" "rump_server"
652 1.1 yamaguch }
653 1.1 yamaguch
654 1.1 yamaguch lagg_lacp_vlan_ipv6_body()
655 1.1 yamaguch {
656 1.1 yamaguch
657 1.1 yamaguch lagg_lacp_vlan "inet"
658 1.1 yamaguch }
659 1.1 yamaguch
660 1.1 yamaguch lagg_lacp_vlan_ipv6_cleanup()
661 1.1 yamaguch {
662 1.1 yamaguch $DEBUG && dump
663 1.1 yamaguch cleanup
664 1.1 yamaguch }
665 1.1 yamaguch
666 1.1 yamaguch atf_test_case lagg_lacp_portpri cleanup
667 1.1 yamaguch lagg_lacp_portpri_head()
668 1.1 yamaguch {
669 1.1 yamaguch
670 1.1 yamaguch atf_set "descr" "tests for LACP port priority"
671 1.1 yamaguch atf_set "require.progs" "rump_server"
672 1.1 yamaguch }
673 1.1 yamaguch
674 1.1 yamaguch lagg_lacp_portpri_body()
675 1.1 yamaguch {
676 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
677 1.1 yamaguch
678 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg
679 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg
680 1.1 yamaguch
681 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
682 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
683 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
684 1.1 yamaguch
685 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
686 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
687 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
688 1.1 yamaguch
689 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
690 1.1 yamaguch $atf_ifconfig lagg0 create
691 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
692 1.1 yamaguch $atf_ifconfig lagg0 lagglacp maxports 2
693 1.1 yamaguch
694 1.1 yamaguch $atf_ifconfig shmif0 up
695 1.1 yamaguch $atf_ifconfig shmif1 up
696 1.1 yamaguch $atf_ifconfig shmif2 up
697 1.1 yamaguch
698 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 1000
699 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 2000
700 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 3000
701 1.1 yamaguch $atf_ifconfig lagg0 up
702 1.1 yamaguch
703 1.1 yamaguch atf_check -s exit:0 -o match:'shmif0 pri=1000' rump.ifconfig lagg0
704 1.1 yamaguch atf_check -s exit:0 -o match:'shmif1 pri=2000' rump.ifconfig lagg0
705 1.1 yamaguch atf_check -s exit:0 -o match:'shmif2 pri=3000' rump.ifconfig lagg0
706 1.1 yamaguch
707 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
708 1.1 yamaguch $atf_ifconfig lagg0 create
709 1.1 yamaguch $atf_ifconfig lagg0 laggproto lacp
710 1.1 yamaguch
711 1.1 yamaguch $atf_ifconfig shmif0 up
712 1.1 yamaguch $atf_ifconfig shmif1 up
713 1.1 yamaguch $atf_ifconfig shmif2 up
714 1.1 yamaguch
715 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 300
716 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 200
717 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 100
718 1.1 yamaguch $atf_ifconfig lagg0 up
719 1.1 yamaguch
720 1.1 yamaguch atf_check -s exit:0 -o match:'shmif0 pri=300' rump.ifconfig lagg0
721 1.1 yamaguch atf_check -s exit:0 -o match:'shmif1 pri=200' rump.ifconfig lagg0
722 1.1 yamaguch atf_check -s exit:0 -o match:'shmif2 pri=100' rump.ifconfig lagg0
723 1.1 yamaguch
724 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
725 1.1 yamaguch wait_for_distributing lagg0 shmif0
726 1.1 yamaguch wait_for_distributing lagg0 shmif1
727 1.1 yamaguch wait_state "STANDBY" lagg0 shmif2
728 1.1 yamaguch
729 1.1 yamaguch $atf_ifconfig shmif0 down
730 1.1 yamaguch wait_for_distributing lagg0 shmif2
731 1.1 yamaguch
732 1.1 yamaguch $atf_ifconfig shmif0 up
733 1.1 yamaguch wait_for_distributing lagg0 shmif0
734 1.1 yamaguch
735 1.1 yamaguch $atf_ifconfig lagg0 laggportpri shmif0 5000
736 1.1 yamaguch $atf_ifconfig lagg0 laggportpri shmif1 5000
737 1.1 yamaguch $atf_ifconfig lagg0 laggportpri shmif2 5000
738 1.1 yamaguch
739 1.1 yamaguch atf_check -s exit:0 -o match:'shmif0 pri=5000' rump.ifconfig lagg0
740 1.1 yamaguch atf_check -s exit:0 -o match:'shmif1 pri=5000' rump.ifconfig lagg0
741 1.1 yamaguch atf_check -s exit:0 -o match:'shmif2 pri=5000' rump.ifconfig lagg0
742 1.1 yamaguch
743 1.1 yamaguch wait_state "STANDBY" lagg0 shmif0
744 1.1 yamaguch wait_for_distributing lagg0 shmif1
745 1.1 yamaguch wait_for_distributing lagg0 shmif2
746 1.1 yamaguch }
747 1.1 yamaguch
748 1.1 yamaguch lagg_lacp_portpri_cleanup()
749 1.1 yamaguch {
750 1.1 yamaguch
751 1.1 yamaguch $DEBUG && dump
752 1.1 yamaguch cleanup
753 1.1 yamaguch }
754 1.1 yamaguch
755 1.1 yamaguch lagg_failover()
756 1.1 yamaguch {
757 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
758 1.1 yamaguch
759 1.1 yamaguch local af=$1
760 1.1 yamaguch local ping="rump.ping -c 1"
761 1.1 yamaguch local rumplib=""
762 1.1 yamaguch local pfx=24
763 1.1 yamaguch local addr_host0=$IP4ADDR0
764 1.1 yamaguch local addr_host1=$IP4ADDR1
765 1.1 yamaguch
766 1.1 yamaguch case $af in
767 1.1 yamaguch "inet")
768 1.1 yamaguch # do nothing
769 1.1 yamaguch ;;
770 1.1 yamaguch "inet6")
771 1.1 yamaguch ping="rump.ping6 -c 1"
772 1.1 yamaguch rumplib="netinet6"
773 1.1 yamaguch pfx=64
774 1.1 yamaguch addr_host0=$IP6ADDR0
775 1.1 yamaguch addr_host1=$IP6ADDR1
776 1.1 yamaguch ;;
777 1.1 yamaguch esac
778 1.1 yamaguch
779 1.1 yamaguch local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
780 1.1 yamaguch
781 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg $rumplib
782 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg $rumplib
783 1.1 yamaguch
784 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
785 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
786 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
787 1.1 yamaguch
788 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
789 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
790 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
791 1.1 yamaguch
792 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
793 1.1 yamaguch $atf_ifconfig lagg0 create
794 1.1 yamaguch $atf_ifconfig lagg0 laggproto failover
795 1.1 yamaguch
796 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 1000
797 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 2000
798 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 3000
799 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host0/$pfx
800 1.1 yamaguch
801 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
802 1.1 yamaguch $atf_ifconfig lagg0 create
803 1.1 yamaguch $atf_ifconfig lagg0 laggproto failover
804 1.1 yamaguch
805 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 1000
806 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 3000
807 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 2000
808 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host1/$pfx
809 1.1 yamaguch
810 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
811 1.1 yamaguch $atf_ifconfig shmif0 up
812 1.1 yamaguch $atf_ifconfig shmif1 up
813 1.1 yamaguch $atf_ifconfig shmif2 up
814 1.1 yamaguch $atf_ifconfig lagg0 up
815 1.1 yamaguch
816 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
817 1.1 yamaguch $atf_ifconfig shmif0 up
818 1.1 yamaguch $atf_ifconfig shmif1 up
819 1.1 yamaguch $atf_ifconfig shmif2 up
820 1.1 yamaguch $atf_ifconfig lagg0 up
821 1.1 yamaguch
822 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
823 1.1 yamaguch $atf_ifconfig -w 10
824 1.1 yamaguch wait_for_distributing lagg0 shmif0
825 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif0
826 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif1
827 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif2
828 1.1 yamaguch
829 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
830 1.1 yamaguch $atf_ifconfig -w 10
831 1.1 yamaguch wait_for_distributing lagg0 shmif0
832 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif0
833 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif1
834 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif2
835 1.1 yamaguch
836 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
837 1.1 yamaguch $atf_ping $addr_host1
838 1.1 yamaguch
839 1.1 yamaguch $atf_ifconfig shmif0 down
840 1.1 yamaguch wait_for_distributing lagg0 shmif1
841 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif1
842 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif2
843 1.1 yamaguch
844 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
845 1.1 yamaguch $atf_ifconfig shmif0 down
846 1.1 yamaguch wait_for_distributing lagg0 shmif2
847 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif2
848 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif1
849 1.1 yamaguch
850 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
851 1.1 yamaguch $atf_ping $addr_host1
852 1.1 yamaguch
853 1.1 yamaguch $atf_ifconfig lagg0 laggfailover -rx-all
854 1.1 yamaguch atf_check -s exit:0 -o not-match:'shmif2.+COLLECTING' rump.ifconfig lagg0
855 1.1 yamaguch
856 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
857 1.1 yamaguch $atf_ifconfig lagg0 laggfailover -rx-all
858 1.1 yamaguch atf_check -s exit:0 -o not-match:'shmif1.+COLLECTING' rump.ifconfig lagg0
859 1.1 yamaguch
860 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
861 1.1 yamaguch atf_check -s not-exit:0 -o ignore -e ignore $ping -c 1 $addr_host1
862 1.1 yamaguch }
863 1.1 yamaguch
864 1.1 yamaguch atf_test_case lagg_failover_ipv4 cleanup
865 1.1 yamaguch lagg_failover_ipv4_head()
866 1.1 yamaguch {
867 1.1 yamaguch
868 1.1 yamaguch atf_set "descr" "tests for failover using IPv4"
869 1.1 yamaguch atf_set "require.progs" "rump_server"
870 1.1 yamaguch }
871 1.1 yamaguch
872 1.1 yamaguch lagg_failover_ipv4_body()
873 1.1 yamaguch {
874 1.1 yamaguch
875 1.1 yamaguch lagg_failover "inet"
876 1.1 yamaguch }
877 1.1 yamaguch
878 1.1 yamaguch lagg_failover_ipv4_cleanup()
879 1.1 yamaguch {
880 1.1 yamaguch
881 1.1 yamaguch $DEBUG && dump
882 1.1 yamaguch cleanup
883 1.1 yamaguch }
884 1.1 yamaguch
885 1.1 yamaguch atf_test_case lagg_failover_ipv6 cleanup
886 1.1 yamaguch lagg_failover_ipv6_head()
887 1.1 yamaguch {
888 1.1 yamaguch
889 1.1 yamaguch atf_set "descr" "tests for failover using IPv6"
890 1.1 yamaguch atf_set "require.progs" "rump_server"
891 1.1 yamaguch }
892 1.1 yamaguch
893 1.1 yamaguch lagg_failover_ipv6_body()
894 1.1 yamaguch {
895 1.1 yamaguch
896 1.1 yamaguch lagg_failover "inet6"
897 1.1 yamaguch }
898 1.1 yamaguch
899 1.1 yamaguch lagg_failover_ipv6_cleanup()
900 1.1 yamaguch {
901 1.1 yamaguch
902 1.1 yamaguch $DEBUG && dump
903 1.1 yamaguch cleanup
904 1.1 yamaguch }
905 1.1 yamaguch
906 1.1 yamaguch lagg_loadbalance()
907 1.1 yamaguch {
908 1.1 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
909 1.1 yamaguch
910 1.1 yamaguch local af=$1
911 1.1 yamaguch local ping="rump.ping -c 1"
912 1.1 yamaguch local rumplib=""
913 1.1 yamaguch local pfx=24
914 1.1 yamaguch local addr_host0=$IP4ADDR0
915 1.1 yamaguch local addr_host1=$IP4ADDR1
916 1.1 yamaguch
917 1.1 yamaguch case $af in
918 1.1 yamaguch "inet")
919 1.1 yamaguch # do nothing
920 1.1 yamaguch ;;
921 1.1 yamaguch "inet6")
922 1.1 yamaguch ping="rump.ping6 -c 1"
923 1.1 yamaguch rumplib="netinet6"
924 1.1 yamaguch pfx=64
925 1.1 yamaguch addr_host0=$IP6ADDR0
926 1.1 yamaguch addr_host1=$IP6ADDR1
927 1.1 yamaguch ;;
928 1.1 yamaguch esac
929 1.1 yamaguch
930 1.1 yamaguch local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
931 1.1 yamaguch
932 1.1 yamaguch rump_server_start $SOCK_HOST0 lagg $rumplib
933 1.1 yamaguch rump_server_start $SOCK_HOST1 lagg $rumplib
934 1.1 yamaguch
935 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
936 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
937 1.1 yamaguch rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
938 1.1 yamaguch
939 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
940 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
941 1.1 yamaguch rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
942 1.1 yamaguch
943 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
944 1.1 yamaguch $atf_ifconfig lagg0 create
945 1.1 yamaguch $atf_ifconfig lagg0 laggproto loadbalance
946 1.1 yamaguch
947 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 1000
948 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 2000
949 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 3000
950 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host0/$pfx
951 1.1 yamaguch
952 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
953 1.1 yamaguch $atf_ifconfig lagg0 create
954 1.1 yamaguch $atf_ifconfig lagg0 laggproto loadbalance
955 1.1 yamaguch
956 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif0 pri 1000
957 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif1 pri 3000
958 1.1 yamaguch $atf_ifconfig lagg0 laggport shmif2 pri 2000
959 1.1 yamaguch $atf_ifconfig lagg0 $af $addr_host1/$pfx
960 1.1 yamaguch
961 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
962 1.1 yamaguch $atf_ifconfig shmif0 up
963 1.1 yamaguch $atf_ifconfig shmif1 up
964 1.1 yamaguch $atf_ifconfig shmif2 up
965 1.1 yamaguch $atf_ifconfig lagg0 up
966 1.1 yamaguch
967 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
968 1.1 yamaguch $atf_ifconfig shmif0 up
969 1.1 yamaguch $atf_ifconfig shmif1 up
970 1.1 yamaguch $atf_ifconfig shmif2 up
971 1.1 yamaguch $atf_ifconfig lagg0 up
972 1.1 yamaguch
973 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
974 1.1 yamaguch $atf_ifconfig -w 10
975 1.1 yamaguch wait_for_distributing lagg0 shmif0
976 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif0
977 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif1
978 1.1 yamaguch wait_state "COLLECTING" lagg0 shmif2
979 1.1 yamaguch
980 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
981 1.1 yamaguch $atf_ifconfig -w 10
982 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif0
983 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif1
984 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif2
985 1.1 yamaguch
986 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
987 1.1 yamaguch $atf_ping $addr_host1
988 1.1 yamaguch
989 1.1 yamaguch $atf_ifconfig shmif0 down
990 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif1
991 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif2
992 1.1 yamaguch
993 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST1
994 1.1 yamaguch $atf_ifconfig shmif0 down
995 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif1
996 1.1 yamaguch wait_state "COLLECTING,DISTRIBUTING" lagg0 shmif2
997 1.1 yamaguch
998 1.1 yamaguch export RUMP_SERVER=$SOCK_HOST0
999 1.1 yamaguch $atf_ping $addr_host1
1000 1.1 yamaguch }
1001 1.1 yamaguch
1002 1.1 yamaguch atf_test_case lagg_loadbalance_ipv4 cleanup
1003 1.1 yamaguch lagg_loadbalance_ipv4_head()
1004 1.1 yamaguch {
1005 1.1 yamaguch
1006 1.1 yamaguch atf_set "descr" "tests for loadbalance using IPv4"
1007 1.1 yamaguch atf_set "require.progs" "rump_server"
1008 1.1 yamaguch }
1009 1.1 yamaguch
1010 1.1 yamaguch lagg_loadbalance_ipv4_body()
1011 1.1 yamaguch {
1012 1.1 yamaguch
1013 1.1 yamaguch lagg_loadbalance "inet"
1014 1.1 yamaguch }
1015 1.1 yamaguch
1016 1.1 yamaguch lagg_loadbalance_ipv4_cleanup()
1017 1.1 yamaguch {
1018 1.1 yamaguch
1019 1.1 yamaguch $DEBUG && dump
1020 1.1 yamaguch cleanup
1021 1.1 yamaguch }
1022 1.1 yamaguch
1023 1.1 yamaguch atf_test_case lagg_loadbalance_ipv6 cleanup
1024 1.1 yamaguch lagg_loadbalance_ipv6_head()
1025 1.1 yamaguch {
1026 1.1 yamaguch
1027 1.1 yamaguch atf_set "descr" "tests for loadbalance using IPv6"
1028 1.1 yamaguch atf_set "require.progs" "rump_server"
1029 1.1 yamaguch }
1030 1.1 yamaguch
1031 1.1 yamaguch lagg_loadbalance_ipv6_body()
1032 1.1 yamaguch {
1033 1.1 yamaguch
1034 1.1 yamaguch lagg_loadbalance "inet6"
1035 1.1 yamaguch }
1036 1.1 yamaguch
1037 1.1 yamaguch lagg_loadbalance_ipv6_cleanup()
1038 1.1 yamaguch {
1039 1.1 yamaguch
1040 1.1 yamaguch $DEBUG && dump
1041 1.1 yamaguch cleanup
1042 1.1 yamaguch }
1043 1.1 yamaguch
1044 1.1 yamaguch atf_init_test_cases()
1045 1.1 yamaguch {
1046 1.1 yamaguch
1047 1.1 yamaguch atf_add_test_case lagg_ifconfig
1048 1.1 yamaguch atf_add_test_case lagg_macaddr
1049 1.1 yamaguch atf_add_test_case lagg_ipv6lla
1050 1.1 yamaguch atf_add_test_case lagg_lacp_basic
1051 1.1 yamaguch atf_add_test_case lagg_lacp_ipv4
1052 1.1 yamaguch atf_add_test_case lagg_lacp_ipv6
1053 1.1 yamaguch atf_add_test_case lagg_lacp_vlan_ipv4
1054 1.1 yamaguch atf_add_test_case lagg_lacp_vlan_ipv6
1055 1.1 yamaguch atf_add_test_case lagg_lacp_portpri
1056 1.1 yamaguch atf_add_test_case lagg_failover_ipv4
1057 1.1 yamaguch atf_add_test_case lagg_failover_ipv6
1058 1.1 yamaguch atf_add_test_case lagg_loadbalance_ipv4
1059 1.1 yamaguch atf_add_test_case lagg_loadbalance_ipv6
1060 1.1 yamaguch }
1061