t_rtable.sh revision 1.2 1 1.2 ozaki # $NetBSD: t_rtable.sh,v 1.2 2018/04/10 07:09:00 ozaki-r Exp $
2 1.1 ozaki #
3 1.1 ozaki # Copyright (c) 2017 Internet Initiative Japan Inc.
4 1.1 ozaki # All rights reserved.
5 1.1 ozaki #
6 1.1 ozaki # Redistribution and use in source and binary forms, with or without
7 1.1 ozaki # modification, are permitted provided that the following conditions
8 1.1 ozaki # are met:
9 1.1 ozaki # 1. Redistributions of source code must retain the above copyright
10 1.1 ozaki # notice, this list of conditions and the following disclaimer.
11 1.1 ozaki # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 ozaki # notice, this list of conditions and the following disclaimer in the
13 1.1 ozaki # documentation and/or other materials provided with the distribution.
14 1.1 ozaki #
15 1.1 ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 ozaki # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 ozaki # POSSIBILITY OF SUCH DAMAGE.
26 1.1 ozaki #
27 1.1 ozaki
28 1.1 ozaki SOCK1=unix://commsock1
29 1.1 ozaki SOCK2=unix://commsock2
30 1.1 ozaki SOCK3=unix://commsock3
31 1.1 ozaki IP1=10.0.0.1
32 1.1 ozaki IP2=10.0.0.2
33 1.1 ozaki
34 1.1 ozaki DEBUG=${DEBUG:-false}
35 1.1 ozaki TIMEOUT=5
36 1.1 ozaki
37 1.1 ozaki setup_endpoint()
38 1.1 ozaki {
39 1.1 ozaki local sock=${1}
40 1.1 ozaki local addr=${2}
41 1.1 ozaki local bus=${3}
42 1.1 ozaki local mode=${4}
43 1.1 ozaki
44 1.1 ozaki rump_server_add_iface $sock shmif0 $bus
45 1.1 ozaki export RUMP_SERVER=${sock}
46 1.1 ozaki if [ $mode = "ipv6" ]; then
47 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${addr}
48 1.1 ozaki else
49 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet ${addr} netmask 0xffffff00
50 1.1 ozaki fi
51 1.1 ozaki
52 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
53 1.1 ozaki $DEBUG && rump.ifconfig shmif0
54 1.1 ozaki }
55 1.1 ozaki
56 1.1 ozaki setup_bridge_server()
57 1.1 ozaki {
58 1.1 ozaki
59 1.1 ozaki rump_server_add_iface $SOCK2 shmif0 bus1
60 1.1 ozaki rump_server_add_iface $SOCK2 shmif1 bus2
61 1.1 ozaki export RUMP_SERVER=$SOCK2
62 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
63 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif1 up
64 1.1 ozaki }
65 1.1 ozaki
66 1.1 ozaki setup()
67 1.1 ozaki {
68 1.1 ozaki
69 1.1 ozaki rump_server_start $SOCK1 bridge
70 1.1 ozaki rump_server_start $SOCK2 bridge
71 1.1 ozaki rump_server_start $SOCK3 bridge
72 1.1 ozaki
73 1.1 ozaki setup_endpoint $SOCK1 $IP1 bus1 ipv4
74 1.1 ozaki setup_endpoint $SOCK3 $IP2 bus2 ipv4
75 1.1 ozaki setup_bridge_server
76 1.1 ozaki }
77 1.1 ozaki
78 1.1 ozaki setup_bridge()
79 1.1 ozaki {
80 1.1 ozaki
81 1.1 ozaki export RUMP_SERVER=$SOCK2
82 1.1 ozaki atf_check -s exit:0 rump.ifconfig bridge0 create
83 1.1 ozaki atf_check -s exit:0 rump.ifconfig bridge0 up
84 1.1 ozaki
85 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
86 1.1 ozaki atf_check -s exit:0 /sbin/brconfig bridge0 add shmif0
87 1.1 ozaki atf_check -s exit:0 /sbin/brconfig bridge0 add shmif1
88 1.1 ozaki /sbin/brconfig bridge0
89 1.1 ozaki unset LD_PRELOAD
90 1.1 ozaki rump.ifconfig shmif0
91 1.1 ozaki rump.ifconfig shmif1
92 1.1 ozaki }
93 1.1 ozaki
94 1.1 ozaki get_number_of_caches()
95 1.1 ozaki {
96 1.1 ozaki
97 1.1 ozaki export RUMP_SERVER=$SOCK2
98 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
99 1.1 ozaki echo $(($(/sbin/brconfig bridge0 |grep -A 100 "Address cache" |wc -l) - 1))
100 1.1 ozaki unset LD_PRELOAD
101 1.1 ozaki }
102 1.1 ozaki
103 1.1 ozaki
104 1.1 ozaki atf_test_case bridge_rtable_basic cleanup
105 1.1 ozaki bridge_rtable_basic_head()
106 1.1 ozaki {
107 1.1 ozaki
108 1.1 ozaki atf_set "descr" "Tests basic opearaions of bridge's learning table"
109 1.1 ozaki atf_set "require.progs" "rump_server"
110 1.1 ozaki }
111 1.1 ozaki
112 1.1 ozaki bridge_rtable_basic_body()
113 1.1 ozaki {
114 1.1 ozaki local addr1= addr3=
115 1.1 ozaki
116 1.1 ozaki setup
117 1.1 ozaki setup_bridge
118 1.1 ozaki
119 1.1 ozaki # Get MAC addresses of the endpoints.
120 1.1 ozaki addr1=$(get_macaddr $SOCK1 shmif0)
121 1.1 ozaki addr3=$(get_macaddr $SOCK3 shmif0)
122 1.1 ozaki
123 1.1 ozaki # Confirm there is no MAC address caches.
124 1.1 ozaki export RUMP_SERVER=$SOCK2
125 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
126 1.1 ozaki $DEBUG && /sbin/brconfig bridge0
127 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr1" /sbin/brconfig bridge0
128 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr3" /sbin/brconfig bridge0
129 1.1 ozaki unset LD_PRELOAD
130 1.1 ozaki
131 1.1 ozaki # Make the bridge learn the MAC addresses of the endpoints.
132 1.1 ozaki export RUMP_SERVER=$SOCK1
133 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2
134 1.1 ozaki unset RUMP_SERVER
135 1.1 ozaki
136 1.1 ozaki # Tests the addresses are in the cache.
137 1.1 ozaki export RUMP_SERVER=$SOCK2
138 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
139 1.1 ozaki $DEBUG && /sbin/brconfig bridge0
140 1.1 ozaki atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0
141 1.1 ozaki atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0
142 1.1 ozaki
143 1.1 ozaki # Tests brconfig deladdr
144 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 deladdr "$addr1"
145 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr1 shmif0" /sbin/brconfig bridge0
146 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 deladdr "$addr3"
147 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0
148 1.1 ozaki unset LD_PRELOAD
149 1.1 ozaki
150 1.1 ozaki rump_server_destroy_ifaces
151 1.1 ozaki }
152 1.1 ozaki
153 1.1 ozaki bridge_rtable_basic_cleanup()
154 1.1 ozaki {
155 1.1 ozaki
156 1.1 ozaki $DEBUG && dump
157 1.1 ozaki cleanup
158 1.1 ozaki }
159 1.1 ozaki
160 1.1 ozaki
161 1.1 ozaki atf_test_case bridge_rtable_flush cleanup
162 1.1 ozaki bridge_rtable_flush_head()
163 1.1 ozaki {
164 1.1 ozaki
165 1.1 ozaki atf_set "descr" "Tests brconfig flush"
166 1.1 ozaki atf_set "require.progs" "rump_server"
167 1.1 ozaki }
168 1.1 ozaki
169 1.1 ozaki bridge_rtable_flush_body()
170 1.1 ozaki {
171 1.1 ozaki local addr1= addr3=
172 1.1 ozaki
173 1.1 ozaki setup
174 1.1 ozaki setup_bridge
175 1.1 ozaki
176 1.1 ozaki # Get MAC addresses of the endpoints.
177 1.1 ozaki addr1=$(get_macaddr $SOCK1 shmif0)
178 1.1 ozaki addr3=$(get_macaddr $SOCK3 shmif0)
179 1.1 ozaki
180 1.1 ozaki # Make the bridge learn the MAC addresses of the endpoints.
181 1.1 ozaki export RUMP_SERVER=$SOCK1
182 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2
183 1.1 ozaki unset RUMP_SERVER
184 1.1 ozaki
185 1.1 ozaki # Tests the addresses are in the cache.
186 1.1 ozaki export RUMP_SERVER=$SOCK2
187 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
188 1.1 ozaki $DEBUG && /sbin/brconfig bridge0
189 1.1 ozaki atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0
190 1.1 ozaki atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0
191 1.1 ozaki
192 1.1 ozaki # Tests brconfig flush.
193 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 flush
194 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr1 shmif0" /sbin/brconfig bridge0
195 1.1 ozaki atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0
196 1.1 ozaki unset LD_PRELOAD
197 1.1 ozaki
198 1.1 ozaki rump_server_destroy_ifaces
199 1.1 ozaki }
200 1.1 ozaki
201 1.1 ozaki bridge_rtable_flush_cleanup()
202 1.1 ozaki {
203 1.1 ozaki
204 1.1 ozaki $DEBUG && dump
205 1.1 ozaki cleanup
206 1.1 ozaki }
207 1.1 ozaki
208 1.1 ozaki
209 1.1 ozaki atf_test_case bridge_rtable_timeout cleanup
210 1.1 ozaki bridge_rtable_timeout_head()
211 1.1 ozaki {
212 1.1 ozaki
213 1.1 ozaki atf_set "descr" "Tests cache timeout of bridge's learning table"
214 1.1 ozaki atf_set "require.progs" "rump_server"
215 1.1 ozaki }
216 1.1 ozaki
217 1.1 ozaki bridge_rtable_timeout_body()
218 1.1 ozaki {
219 1.1 ozaki local addr1= addr3=
220 1.1 ozaki local timeout=5
221 1.1 ozaki
222 1.1 ozaki setup
223 1.1 ozaki setup_bridge
224 1.1 ozaki
225 1.1 ozaki # Get MAC addresses of the endpoints.
226 1.1 ozaki addr1=$(get_macaddr $SOCK1 shmif0)
227 1.1 ozaki addr3=$(get_macaddr $SOCK3 shmif0)
228 1.1 ozaki
229 1.1 ozaki # Tests brconfig timeout.
230 1.1 ozaki export RUMP_SERVER=$SOCK2
231 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
232 1.1 ozaki atf_check -s exit:0 -o match:"timeout: 1200" /sbin/brconfig bridge0
233 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 timeout $timeout
234 1.1 ozaki atf_check -s exit:0 -o match:"timeout: $timeout" /sbin/brconfig bridge0
235 1.1 ozaki unset LD_PRELOAD
236 1.1 ozaki
237 1.1 ozaki # Make the bridge learn the MAC addresses of the endpoints.
238 1.1 ozaki export RUMP_SERVER=$SOCK1
239 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2
240 1.1 ozaki unset RUMP_SERVER
241 1.1 ozaki
242 1.1 ozaki # Tests the addresses are in the cache.
243 1.1 ozaki export RUMP_SERVER=$SOCK2
244 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
245 1.1 ozaki $DEBUG && /sbin/brconfig bridge0
246 1.1 ozaki atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0
247 1.1 ozaki atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0
248 1.1 ozaki
249 1.1 ozaki # TODO: cache expiration
250 1.1 ozaki # The initial timeout value of a cache is changed to $timeout and
251 1.1 ozaki # after $timeout elapsed the cache is ready to be sweeped. However,
252 1.1 ozaki # the GC of rtable runs every 5 minutes and the cache remains until
253 1.1 ozaki # then. Should we have a sysctl to change the period?
254 1.1 ozaki
255 1.1 ozaki #sleep $(($timeout + 2))
256 1.1 ozaki #
257 1.1 ozaki ## Tests the addresses are not in the cache.
258 1.1 ozaki #export RUMP_SERVER=$SOCK2
259 1.1 ozaki #export LD_PRELOAD=/usr/lib/librumphijack.so
260 1.1 ozaki #$DEBUG && /sbin/brconfig bridge0
261 1.1 ozaki #atf_check -s exit:0 -o not-match:"$addr1 shmif0" /sbin/brconfig bridge0
262 1.1 ozaki #atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0
263 1.1 ozaki
264 1.1 ozaki rump_server_destroy_ifaces
265 1.1 ozaki }
266 1.1 ozaki
267 1.1 ozaki bridge_rtable_timeout_cleanup()
268 1.1 ozaki {
269 1.1 ozaki
270 1.1 ozaki $DEBUG && dump
271 1.1 ozaki cleanup
272 1.1 ozaki }
273 1.1 ozaki
274 1.1 ozaki
275 1.1 ozaki atf_test_case bridge_rtable_maxaddr cleanup
276 1.1 ozaki bridge_rtable_maxaddr_head()
277 1.1 ozaki {
278 1.1 ozaki
279 1.1 ozaki atf_set "descr" "Tests brconfig maxaddr"
280 1.1 ozaki atf_set "require.progs" "rump_server"
281 1.1 ozaki }
282 1.1 ozaki
283 1.1 ozaki bridge_rtable_maxaddr_body()
284 1.1 ozaki {
285 1.1 ozaki local addr1= addr3=
286 1.1 ozaki
287 1.1 ozaki setup
288 1.1 ozaki setup_bridge
289 1.1 ozaki
290 1.1 ozaki # Get MAC addresses of the endpoints.
291 1.1 ozaki addr1=$(get_macaddr $SOCK1 shmif0)
292 1.1 ozaki addr3=$(get_macaddr $SOCK3 shmif0)
293 1.1 ozaki
294 1.1 ozaki # Fill the MAC addresses of the endpoints.
295 1.1 ozaki export RUMP_SERVER=$SOCK1
296 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2
297 1.1 ozaki export RUMP_SERVER=$SOCK2
298 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
299 1.1 ozaki /sbin/brconfig bridge0
300 1.1 ozaki atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0
301 1.1 ozaki atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0
302 1.1 ozaki
303 1.1 ozaki # Check the default # of caches is 100
304 1.1 ozaki atf_check -s exit:0 -o match:"max cache: 100" /sbin/brconfig bridge0
305 1.1 ozaki
306 1.1 ozaki # Test two MAC addresses are cached
307 1.1 ozaki n=$(get_number_of_caches)
308 1.1 ozaki atf_check_equal $n 2
309 1.1 ozaki
310 1.1 ozaki # Limit # of caches to one
311 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 maxaddr 1
312 1.1 ozaki atf_check -s exit:0 -o match:"max cache: 1" /sbin/brconfig bridge0
313 1.1 ozaki /sbin/brconfig bridge0
314 1.1 ozaki
315 1.1 ozaki # Test just one address is cached
316 1.1 ozaki n=$(get_number_of_caches)
317 1.1 ozaki atf_check_equal $n 1
318 1.1 ozaki
319 1.1 ozaki # Increase # of caches to two
320 1.1 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 maxaddr 2
321 1.1 ozaki atf_check -s exit:0 -o match:"max cache: 2" /sbin/brconfig bridge0
322 1.1 ozaki unset LD_PRELOAD
323 1.1 ozaki
324 1.1 ozaki # Test we can cache two addresses again
325 1.1 ozaki export RUMP_SERVER=$SOCK1
326 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2
327 1.1 ozaki export RUMP_SERVER=$SOCK2
328 1.1 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
329 1.1 ozaki /sbin/brconfig bridge0
330 1.1 ozaki atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0
331 1.1 ozaki atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0
332 1.1 ozaki unset LD_PRELOAD
333 1.1 ozaki
334 1.1 ozaki rump_server_destroy_ifaces
335 1.1 ozaki }
336 1.1 ozaki
337 1.1 ozaki bridge_rtable_maxaddr_cleanup()
338 1.1 ozaki {
339 1.1 ozaki
340 1.1 ozaki $DEBUG && dump
341 1.1 ozaki cleanup
342 1.1 ozaki }
343 1.1 ozaki
344 1.1 ozaki
345 1.2 ozaki atf_test_case bridge_rtable_delete_member cleanup
346 1.2 ozaki bridge_rtable_delete_member_head()
347 1.2 ozaki {
348 1.2 ozaki
349 1.2 ozaki atf_set "descr" "Tests belonging rtable entries are removed on deleting an interface"
350 1.2 ozaki atf_set "require.progs" "rump_server"
351 1.2 ozaki }
352 1.2 ozaki
353 1.2 ozaki bridge_rtable_delete_member_body()
354 1.2 ozaki {
355 1.2 ozaki local addr10= addr30= addr11= addr31=
356 1.2 ozaki local n=
357 1.2 ozaki
358 1.2 ozaki setup
359 1.2 ozaki setup_bridge
360 1.2 ozaki
361 1.2 ozaki # Add extra interfaces and addresses
362 1.2 ozaki export RUMP_SERVER=$SOCK1
363 1.2 ozaki rump_server_add_iface $SOCK1 shmif1 bus1
364 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24
365 1.2 ozaki atf_check -s exit:0 rump.ifconfig -w 10
366 1.2 ozaki
367 1.2 ozaki export RUMP_SERVER=$SOCK3
368 1.2 ozaki rump_server_add_iface $SOCK3 shmif1 bus2
369 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.12/24
370 1.2 ozaki atf_check -s exit:0 rump.ifconfig -w 10
371 1.2 ozaki
372 1.2 ozaki # Get MAC addresses of the endpoints.
373 1.2 ozaki addr10=$(get_macaddr $SOCK1 shmif0)
374 1.2 ozaki addr30=$(get_macaddr $SOCK3 shmif0)
375 1.2 ozaki addr11=$(get_macaddr $SOCK1 shmif1)
376 1.2 ozaki addr31=$(get_macaddr $SOCK3 shmif1)
377 1.2 ozaki
378 1.2 ozaki # Make the bridge learn the MAC addresses of the endpoints.
379 1.2 ozaki export RUMP_SERVER=$SOCK1
380 1.2 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 10.0.0.12
381 1.2 ozaki export RUMP_SERVER=$SOCK3
382 1.2 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 10.0.0.11
383 1.2 ozaki
384 1.2 ozaki export RUMP_SERVER=$SOCK2
385 1.2 ozaki export LD_PRELOAD=/usr/lib/librumphijack.so
386 1.2 ozaki $DEBUG && /sbin/brconfig bridge0
387 1.2 ozaki atf_check -s exit:0 -o match:"$addr10 shmif0" /sbin/brconfig bridge0
388 1.2 ozaki atf_check -s exit:0 -o match:"$addr11 shmif0" /sbin/brconfig bridge0
389 1.2 ozaki atf_check -s exit:0 -o match:"$addr30 shmif1" /sbin/brconfig bridge0
390 1.2 ozaki atf_check -s exit:0 -o match:"$addr31 shmif1" /sbin/brconfig bridge0
391 1.2 ozaki
392 1.2 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 delete shmif0
393 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr10 shmif0" /sbin/brconfig bridge0
394 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr11 shmif0" /sbin/brconfig bridge0
395 1.2 ozaki atf_check -s exit:0 -o match:"$addr30 shmif1" /sbin/brconfig bridge0
396 1.2 ozaki atf_check -s exit:0 -o match:"$addr31 shmif1" /sbin/brconfig bridge0
397 1.2 ozaki
398 1.2 ozaki atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 delete shmif1
399 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr10 shmif0" /sbin/brconfig bridge0
400 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr11 shmif0" /sbin/brconfig bridge0
401 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr30 shmif1" /sbin/brconfig bridge0
402 1.2 ozaki atf_check -s exit:0 -o not-match:"$addr31 shmif1" /sbin/brconfig bridge0
403 1.2 ozaki
404 1.2 ozaki rump_server_destroy_ifaces
405 1.2 ozaki }
406 1.2 ozaki
407 1.2 ozaki bridge_rtable_delete_member_cleanup()
408 1.2 ozaki {
409 1.2 ozaki
410 1.2 ozaki $DEBUG && dump
411 1.2 ozaki cleanup
412 1.2 ozaki }
413 1.2 ozaki
414 1.2 ozaki
415 1.1 ozaki atf_init_test_cases()
416 1.1 ozaki {
417 1.1 ozaki
418 1.1 ozaki atf_add_test_case bridge_rtable_basic
419 1.1 ozaki atf_add_test_case bridge_rtable_flush
420 1.1 ozaki atf_add_test_case bridge_rtable_timeout
421 1.1 ozaki atf_add_test_case bridge_rtable_maxaddr
422 1.2 ozaki atf_add_test_case bridge_rtable_delete_member
423 1.1 ozaki # TODO: brconfig static/flushall/discover/learn
424 1.1 ozaki }
425