12973Sjlahoda# $NetBSD: t_bridge.sh,v 1.16 2016/11/25 08:51:16 ozaki-r Exp $ 22973Sjlahoda# 32973Sjlahoda# Copyright (c) 2014 The NetBSD Foundation, Inc. 42973Sjlahoda# All rights reserved. 52973Sjlahoda# 62973Sjlahoda# Redistribution and use in source and binary forms, with or without 72973Sjlahoda# modification, are permitted provided that the following conditions 82973Sjlahoda# are met: 92973Sjlahoda# 1. Redistributions of source code must retain the above copyright 102973Sjlahoda# notice, this list of conditions and the following disclaimer. 112973Sjlahoda# 2. Redistributions in binary form must reproduce the above copyright 122973Sjlahoda# notice, this list of conditions and the following disclaimer in the 132973Sjlahoda# documentation and/or other materials provided with the distribution. 142973Sjlahoda# 152973Sjlahoda# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 162973Sjlahoda# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 172973Sjlahoda# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 182973Sjlahoda# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 192973Sjlahoda# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 202973Sjlahoda# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 212973Sjlahoda# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 222973Sjlahoda# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 232973Sjlahoda# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 242973Sjlahoda# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 252973Sjlahoda# POSSIBILITY OF SUCH DAMAGE. 262973Sjlahoda# 272973Sjlahoda 282973SjlahodaSOCK1=unix://commsock1 292973SjlahodaSOCK2=unix://commsock2 302973SjlahodaSOCK3=unix://commsock3 312973SjlahodaIP1=10.0.0.1 322973SjlahodaIP2=10.0.0.2 332973SjlahodaIP61=fc00::1 342973SjlahodaIP62=fc00::2 352973SjlahodaIPBR1=10.0.0.11 362973SjlahodaIPBR2=10.0.0.12 372973SjlahodaIP6BR1=fc00::11 382973SjlahodaIP6BR2=fc00::12 392973Sjlahoda 402973SjlahodaDEBUG=${DEBUG:-false} 412973SjlahodaTIMEOUT=5 422973Sjlahoda 432973Sjlahodaatf_test_case bridge_ipv4 cleanup 442973Sjlahodaatf_test_case bridge_ipv6 cleanup 452973Sjlahodaatf_test_case bridge_rtable cleanup 462973Sjlahodaatf_test_case bridge_member_ipv4 cleanup 472973Sjlahodaatf_test_case bridge_member_ipv6 cleanup 482973Sjlahoda 492973Sjlahodabridge_ipv4_head() 502973Sjlahoda{ 512973Sjlahoda atf_set "descr" "Does simple if_bridge tests" 522973Sjlahoda atf_set "require.progs" "rump_server" 532973Sjlahoda} 542973Sjlahoda 552973Sjlahodabridge_ipv6_head() 562973Sjlahoda{ 572973Sjlahoda atf_set "descr" "Does simple if_bridge tests (IPv6)" 582973Sjlahoda atf_set "require.progs" "rump_server" 592973Sjlahoda} 602973Sjlahoda 612973Sjlahodabridge_rtable_head() 622973Sjlahoda{ 632973Sjlahoda atf_set "descr" "Tests route table operations of if_bridge" 642973Sjlahoda atf_set "require.progs" "rump_server" 652973Sjlahoda} 662973Sjlahoda 672973Sjlahodabridge_member_ipv4_head() 682973Sjlahoda{ 692973Sjlahoda atf_set "descr" "Tests if_bridge with members with an IP address" 702973Sjlahoda atf_set "require.progs" "rump_server" 712973Sjlahoda} 722973Sjlahoda 732973Sjlahodabridge_member_ipv6_head() 742973Sjlahoda{ 752973Sjlahoda atf_set "descr" "Tests if_bridge with members with an IP address (IPv6)" 762973Sjlahoda atf_set "require.progs" "rump_server" 772973Sjlahoda} 782973Sjlahoda 792973Sjlahodasetup_endpoint() 802973Sjlahoda{ 812973Sjlahoda sock=${1} 822973Sjlahoda addr=${2} 832973Sjlahoda bus=${3} 842973Sjlahoda mode=${4} 852973Sjlahoda 862973Sjlahoda rump_server_add_iface $sock shmif0 $bus 872973Sjlahoda export RUMP_SERVER=${sock} 882973Sjlahoda if [ $mode = "ipv6" ]; then 892973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${addr} 902973Sjlahoda else 912973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 inet ${addr} netmask 0xffffff00 922973Sjlahoda fi 932973Sjlahoda 942973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 up 952973Sjlahoda $DEBUG && rump.ifconfig shmif0 962973Sjlahoda} 972973Sjlahoda 982973Sjlahodatest_endpoint() 992973Sjlahoda{ 1002973Sjlahoda sock=${1} 1012973Sjlahoda addr=${2} 1022973Sjlahoda bus=${3} 1032973Sjlahoda mode=${4} 1042973Sjlahoda 1052973Sjlahoda export RUMP_SERVER=${sock} 1062973Sjlahoda atf_check -s exit:0 -o match:shmif0 rump.ifconfig 1072973Sjlahoda if [ $mode = "ipv6" ]; then 1082973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${addr} 1092973Sjlahoda else 1102973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 ${addr} 1112973Sjlahoda fi 1122973Sjlahoda} 1132973Sjlahoda 1142973Sjlahodatest_setup() 1152973Sjlahoda{ 1162973Sjlahoda test_endpoint $SOCK1 $IP1 bus1 ipv4 1172973Sjlahoda test_endpoint $SOCK3 $IP2 bus2 ipv4 1182973Sjlahoda 1192973Sjlahoda export RUMP_SERVER=$SOCK2 1202973Sjlahoda atf_check -s exit:0 -o match:shmif0 rump.ifconfig 1212973Sjlahoda atf_check -s exit:0 -o match:shmif1 rump.ifconfig 1222973Sjlahoda} 1232973Sjlahoda 1242973Sjlahodatest_setup6() 1252973Sjlahoda{ 1262973Sjlahoda test_endpoint $SOCK1 $IP61 bus1 ipv6 1272973Sjlahoda test_endpoint $SOCK3 $IP62 bus2 ipv6 1282973Sjlahoda 1292973Sjlahoda export RUMP_SERVER=$SOCK2 1302973Sjlahoda atf_check -s exit:0 -o match:shmif0 rump.ifconfig 1312973Sjlahoda atf_check -s exit:0 -o match:shmif1 rump.ifconfig 1322973Sjlahoda} 1332973Sjlahoda 1342973Sjlahodasetup_bridge_server() 1352973Sjlahoda{ 1362973Sjlahoda 1372973Sjlahoda rump_server_add_iface $SOCK2 shmif0 bus1 1382973Sjlahoda rump_server_add_iface $SOCK2 shmif1 bus2 1392973Sjlahoda export RUMP_SERVER=$SOCK2 1402973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 up 1412973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif1 up 1422973Sjlahoda} 1432973Sjlahoda 1442973Sjlahodasetup() 1452973Sjlahoda{ 1462973Sjlahoda 1472973Sjlahoda rump_server_start $SOCK1 bridge 1482973Sjlahoda rump_server_start $SOCK2 bridge 1492973Sjlahoda rump_server_start $SOCK3 bridge 1502973Sjlahoda 1512973Sjlahoda setup_endpoint $SOCK1 $IP1 bus1 ipv4 1522973Sjlahoda setup_endpoint $SOCK3 $IP2 bus2 ipv4 1532973Sjlahoda setup_bridge_server 1542973Sjlahoda} 1552973Sjlahoda 1562973Sjlahodasetup6() 1572973Sjlahoda{ 1582973Sjlahoda 1592973Sjlahoda rump_server_start $SOCK1 netinet6 bridge 1602973Sjlahoda rump_server_start $SOCK2 netinet6 bridge 1612973Sjlahoda rump_server_start $SOCK3 netinet6 bridge 1622973Sjlahoda 1632973Sjlahoda setup_endpoint $SOCK1 $IP61 bus1 ipv6 1642973Sjlahoda setup_endpoint $SOCK3 $IP62 bus2 ipv6 1652973Sjlahoda setup_bridge_server 1662973Sjlahoda} 1672973Sjlahoda 1682973Sjlahodasetup_bridge() 1692973Sjlahoda{ 1702973Sjlahoda export RUMP_SERVER=$SOCK2 1712973Sjlahoda atf_check -s exit:0 rump.ifconfig bridge0 create 1722973Sjlahoda atf_check -s exit:0 rump.ifconfig bridge0 up 1732973Sjlahoda 1742973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 1752973Sjlahoda atf_check -s exit:0 /sbin/brconfig bridge0 add shmif0 1762973Sjlahoda atf_check -s exit:0 /sbin/brconfig bridge0 add shmif1 1772973Sjlahoda /sbin/brconfig bridge0 1782973Sjlahoda unset LD_PRELOAD 1792973Sjlahoda rump.ifconfig shmif0 1802973Sjlahoda rump.ifconfig shmif1 1812973Sjlahoda} 1822973Sjlahoda 1832973Sjlahodasetup_member_ip() 1842973Sjlahoda{ 1852973Sjlahoda export RUMP_SERVER=$SOCK2 1862973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 1872973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 $IPBR1/24 1882973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif1 $IPBR2/24 1892973Sjlahoda atf_check -s exit:0 rump.ifconfig -w 10 1902973Sjlahoda /sbin/brconfig bridge0 1912973Sjlahoda unset LD_PRELOAD 1922973Sjlahoda rump.ifconfig shmif0 1932973Sjlahoda rump.ifconfig shmif1 1942973Sjlahoda} 1952973Sjlahoda 1962973Sjlahodasetup_member_ip6() 1972973Sjlahoda{ 1982973Sjlahoda export RUMP_SERVER=$SOCK2 1992973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 2002973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6BR1 2012973Sjlahoda atf_check -s exit:0 rump.ifconfig shmif1 inet6 $IP6BR2 2022973Sjlahoda atf_check -s exit:0 rump.ifconfig -w 10 2032973Sjlahoda /sbin/brconfig bridge0 2042973Sjlahoda unset LD_PRELOAD 2052973Sjlahoda rump.ifconfig shmif0 2062973Sjlahoda rump.ifconfig shmif1 2072973Sjlahoda} 2082973Sjlahoda 2092973Sjlahodateardown_bridge() 2102973Sjlahoda{ 2112973Sjlahoda export RUMP_SERVER=$SOCK2 2122973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 2132973Sjlahoda /sbin/brconfig bridge0 2142973Sjlahoda atf_check -s exit:0 /sbin/brconfig bridge0 delete shmif0 2152973Sjlahoda atf_check -s exit:0 /sbin/brconfig bridge0 delete shmif1 2162973Sjlahoda /sbin/brconfig bridge0 2172973Sjlahoda unset LD_PRELOAD 2182973Sjlahoda rump.ifconfig shmif0 2192973Sjlahoda rump.ifconfig shmif1 2202973Sjlahoda} 2212973Sjlahoda 2222973Sjlahodatest_setup_bridge() 2232973Sjlahoda{ 2242973Sjlahoda export RUMP_SERVER=$SOCK2 2252973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 2262973Sjlahoda atf_check -s exit:0 -o match:shmif0 /sbin/brconfig bridge0 2272973Sjlahoda atf_check -s exit:0 -o match:shmif1 /sbin/brconfig bridge0 2282973Sjlahoda /sbin/brconfig bridge0 2292973Sjlahoda unset LD_PRELOAD 2302973Sjlahoda} 2312973Sjlahoda 2322973Sjlahodadown_up_interfaces() 2332973Sjlahoda{ 2342973Sjlahoda export RUMP_SERVER=$SOCK1 2352973Sjlahoda rump.ifconfig shmif0 down 2362973Sjlahoda rump.ifconfig shmif0 up 2372973Sjlahoda export RUMP_SERVER=$SOCK3 2382973Sjlahoda rump.ifconfig shmif0 down 2392973Sjlahoda rump.ifconfig shmif0 up 2402973Sjlahoda} 2412973Sjlahoda 2422973Sjlahodatest_ping_failure() 2432973Sjlahoda{ 2442973Sjlahoda export RUMP_SERVER=$SOCK1 2452973Sjlahoda atf_check -s not-exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP2 2462973Sjlahoda export RUMP_SERVER=$SOCK3 2472973Sjlahoda atf_check -s not-exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP1 2482973Sjlahoda} 2492973Sjlahoda 2502973Sjlahodatest_ping_success() 2512973Sjlahoda{ 2522973Sjlahoda export RUMP_SERVER=$SOCK1 2532973Sjlahoda rump.ifconfig -v shmif0 2542973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP2 2552973Sjlahoda rump.ifconfig -v shmif0 2562973Sjlahoda 2572973Sjlahoda export RUMP_SERVER=$SOCK3 2582973Sjlahoda rump.ifconfig -v shmif0 2592973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP1 2602973Sjlahoda rump.ifconfig -v shmif0 2612973Sjlahoda} 2622973Sjlahoda 2632973Sjlahodatest_ping6_failure() 2642973Sjlahoda{ 2652973Sjlahoda export RUMP_SERVER=$SOCK1 2662973Sjlahoda atf_check -s not-exit:0 -o ignore rump.ping6 -q -n -c 1 -X $TIMEOUT $IP62 2672973Sjlahoda export RUMP_SERVER=$SOCK3 2682973Sjlahoda atf_check -s not-exit:0 -o ignore rump.ping6 -q -n -c 1 -X $TIMEOUT $IP61 2692973Sjlahoda} 2702973Sjlahoda 2712973Sjlahodatest_ping6_success() 2722973Sjlahoda{ 2732973Sjlahoda export RUMP_SERVER=$SOCK1 2742973Sjlahoda rump.ifconfig -v shmif0 2752973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -c 1 -X $TIMEOUT $IP62 2762973Sjlahoda rump.ifconfig -v shmif0 2772973Sjlahoda 2782973Sjlahoda export RUMP_SERVER=$SOCK3 2792973Sjlahoda rump.ifconfig -v shmif0 2802973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -c 1 -X $TIMEOUT $IP61 2812973Sjlahoda rump.ifconfig -v shmif0 2822973Sjlahoda} 2832973Sjlahoda 2842973Sjlahodatest_ping_member() 2852973Sjlahoda{ 2862973Sjlahoda export RUMP_SERVER=$SOCK1 2872973Sjlahoda rump.ifconfig -v shmif0 2882973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IPBR1 2892973Sjlahoda rump.ifconfig -v shmif0 2902973Sjlahoda # Test for PR#48104 2912973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IPBR2 2922973Sjlahoda rump.ifconfig -v shmif0 2932973Sjlahoda 2942973Sjlahoda export RUMP_SERVER=$SOCK3 2952973Sjlahoda rump.ifconfig -v shmif0 2962973Sjlahoda # Test for PR#48104 2972973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IPBR1 2982973Sjlahoda rump.ifconfig -v shmif0 2992973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IPBR2 3002973Sjlahoda rump.ifconfig -v shmif0 3012973Sjlahoda} 3022973Sjlahoda 3032973Sjlahodatest_ping6_member() 3042973Sjlahoda{ 3052973Sjlahoda export RUMP_SERVER=$SOCK1 3062973Sjlahoda rump.ifconfig -v shmif0 3072973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -X $TIMEOUT -c 1 $IP6BR1 3082973Sjlahoda rump.ifconfig -v shmif0 3092973Sjlahoda # Test for PR#48104 3102973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -X $TIMEOUT -c 1 $IP6BR2 3112973Sjlahoda rump.ifconfig -v shmif0 3122973Sjlahoda 3132973Sjlahoda export RUMP_SERVER=$SOCK3 3142973Sjlahoda rump.ifconfig -v shmif0 3152973Sjlahoda # Test for PR#48104 3162973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -X $TIMEOUT -c 1 $IP6BR1 3172973Sjlahoda rump.ifconfig -v shmif0 3182973Sjlahoda atf_check -s exit:0 -o ignore rump.ping6 -q -n -X $TIMEOUT -c 1 $IP6BR2 3192973Sjlahoda rump.ifconfig -v shmif0 3202973Sjlahoda} 3212973Sjlahoda 3222973Sjlahodaget_number_of_caches() 3232973Sjlahoda{ 3242973Sjlahoda export RUMP_SERVER=$SOCK2 3252973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 3262973Sjlahoda echo $(($(/sbin/brconfig bridge0 |grep -A 100 "Address cache" |wc -l) - 1)) 3272973Sjlahoda unset LD_PRELOAD 3282973Sjlahoda} 3292973Sjlahoda 3302973Sjlahodatest_brconfig_maxaddr() 3312973Sjlahoda{ 3322973Sjlahoda addr1= addr3= n= 3332973Sjlahoda 3342973Sjlahoda # Get MAC addresses of the endpoints. 3352973Sjlahoda addr1=$(get_macaddr $SOCK1 shmif0) 3362973Sjlahoda addr3=$(get_macaddr $SOCK3 shmif0) 3372973Sjlahoda 3382973Sjlahoda # Refill the MAC addresses of the endpoints. 3392973Sjlahoda export RUMP_SERVER=$SOCK1 3402973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2 3412973Sjlahoda export RUMP_SERVER=$SOCK2 3422973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 3432973Sjlahoda /sbin/brconfig bridge0 3442973Sjlahoda atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0 3452973Sjlahoda atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0 3462973Sjlahoda 3472973Sjlahoda # Check the default # of caches is 100 3482973Sjlahoda atf_check -s exit:0 -o match:"max cache: 100" /sbin/brconfig bridge0 3492973Sjlahoda 3502973Sjlahoda # Test two MAC addresses are cached 3512973Sjlahoda n=$(get_number_of_caches) 3522973Sjlahoda atf_check_equal $n 2 3532973Sjlahoda 3542973Sjlahoda # Limit # of caches to one 3552973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 maxaddr 1 3562973Sjlahoda atf_check -s exit:0 -o match:"max cache: 1" /sbin/brconfig bridge0 3572973Sjlahoda /sbin/brconfig bridge0 3582973Sjlahoda 3592973Sjlahoda # Test just one address is cached 3602973Sjlahoda n=$(get_number_of_caches) 3612973Sjlahoda atf_check_equal $n 1 3622973Sjlahoda 3632973Sjlahoda # Increase # of caches to two 3642973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 maxaddr 2 3652973Sjlahoda atf_check -s exit:0 -o match:"max cache: 2" /sbin/brconfig bridge0 3662973Sjlahoda unset LD_PRELOAD 3672973Sjlahoda 3682973Sjlahoda # Test we can cache two addresses again 3692973Sjlahoda export RUMP_SERVER=$SOCK1 3702973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2 3712973Sjlahoda export RUMP_SERVER=$SOCK2 3722973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 3732973Sjlahoda /sbin/brconfig bridge0 3742973Sjlahoda atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0 3752973Sjlahoda atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0 3762973Sjlahoda unset LD_PRELOAD 3772973Sjlahoda} 3782973Sjlahoda 3792973Sjlahodabridge_ipv4_body() 3802973Sjlahoda{ 3812973Sjlahoda setup 3822973Sjlahoda test_setup 3832973Sjlahoda 3842973Sjlahoda # Enable once PR kern/49219 is fixed 3852973Sjlahoda #test_ping_failure 3862973Sjlahoda 3872973Sjlahoda setup_bridge 3882973Sjlahoda sleep 1 3892973Sjlahoda test_setup_bridge 3902973Sjlahoda test_ping_success 3912973Sjlahoda 3922973Sjlahoda teardown_bridge 3932973Sjlahoda test_ping_failure 3942973Sjlahoda 3952973Sjlahoda rump_server_destroy_ifaces 3962973Sjlahoda} 3972973Sjlahoda 3982973Sjlahodabridge_ipv6_body() 3992973Sjlahoda{ 4002973Sjlahoda setup6 4012973Sjlahoda test_setup6 4022973Sjlahoda 4032973Sjlahoda test_ping6_failure 4042973Sjlahoda 4052973Sjlahoda setup_bridge 4062973Sjlahoda sleep 1 4072973Sjlahoda test_setup_bridge 4082973Sjlahoda test_ping6_success 4092973Sjlahoda 4102973Sjlahoda teardown_bridge 4112973Sjlahoda test_ping6_failure 4122973Sjlahoda 4132973Sjlahoda rump_server_destroy_ifaces 4142973Sjlahoda} 4152973Sjlahoda 4162973Sjlahodabridge_rtable_body() 4172973Sjlahoda{ 4182973Sjlahoda addr1= addr3= 4192973Sjlahoda 4202973Sjlahoda setup 4212973Sjlahoda setup_bridge 4222973Sjlahoda 4232973Sjlahoda # Get MAC addresses of the endpoints. 4242973Sjlahoda addr1=$(get_macaddr $SOCK1 shmif0) 4252973Sjlahoda addr3=$(get_macaddr $SOCK3 shmif0) 4262973Sjlahoda 4272973Sjlahoda # Confirm there is no MAC address caches. 4282973Sjlahoda export RUMP_SERVER=$SOCK2 4292973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 4302973Sjlahoda $DEBUG && /sbin/brconfig bridge0 4312973Sjlahoda atf_check -s exit:0 -o not-match:"$addr1" /sbin/brconfig bridge0 4322973Sjlahoda atf_check -s exit:0 -o not-match:"$addr3" /sbin/brconfig bridge0 4332973Sjlahoda unset LD_PRELOAD 4342973Sjlahoda 4352973Sjlahoda # Make the bridge learn the MAC addresses of the endpoints. 4362973Sjlahoda export RUMP_SERVER=$SOCK1 4372973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2 4382973Sjlahoda unset RUMP_SERVER 4392973Sjlahoda 4402973Sjlahoda # Tests the addresses are in the cache. 4412973Sjlahoda export RUMP_SERVER=$SOCK2 4422973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 4432973Sjlahoda $DEBUG && /sbin/brconfig bridge0 4442973Sjlahoda atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0 4452973Sjlahoda atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0 4462973Sjlahoda 4472973Sjlahoda # Tests brconfig deladdr 4482973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 deladdr "$addr1" 4492973Sjlahoda atf_check -s exit:0 -o not-match:"$addr1 shmif0" /sbin/brconfig bridge0 4502973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 deladdr "$addr3" 4512973Sjlahoda atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0 4522973Sjlahoda unset LD_PRELOAD 4532973Sjlahoda 4542973Sjlahoda # Refill the MAC addresses of the endpoints. 4552973Sjlahoda export RUMP_SERVER=$SOCK1 4562973Sjlahoda atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP2 4572973Sjlahoda unset RUMP_SERVER 4582973Sjlahoda export RUMP_SERVER=$SOCK2 4592973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 4602973Sjlahoda $DEBUG && /sbin/brconfig bridge0 4612973Sjlahoda atf_check -s exit:0 -o match:"$addr1 shmif0" /sbin/brconfig bridge0 4622973Sjlahoda atf_check -s exit:0 -o match:"$addr3 shmif1" /sbin/brconfig bridge0 4632973Sjlahoda 4642973Sjlahoda # Tests brconfig flush. 4652973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 flush 4662973Sjlahoda atf_check -s exit:0 -o not-match:"$addr1 shmif0" /sbin/brconfig bridge0 4672973Sjlahoda atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0 4682973Sjlahoda unset LD_PRELOAD 4692973Sjlahoda 4702973Sjlahoda # Tests brconfig timeout. 4712973Sjlahoda export RUMP_SERVER=$SOCK2 4722973Sjlahoda export LD_PRELOAD=/usr/lib/librumphijack.so 4732973Sjlahoda atf_check -s exit:0 -o match:"timeout: 1200" /sbin/brconfig bridge0 4742973Sjlahoda atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 timeout 10 4752973Sjlahoda atf_check -s exit:0 -o match:"timeout: 10" /sbin/brconfig bridge0 4762973Sjlahoda unset LD_PRELOAD 4772973Sjlahoda 4782973Sjlahoda # Tests brconfig maxaddr. 4792973Sjlahoda test_brconfig_maxaddr 4802973Sjlahoda 4812973Sjlahoda # TODO: brconfig static/flushall/discover/learn 4822973Sjlahoda # TODO: cache expiration; it takes 5 minutes at least and we want to 4832973Sjlahoda # wait here so long. Should we have a sysctl to change the period? 4842973Sjlahoda 4852973Sjlahoda rump_server_destroy_ifaces 4862973Sjlahoda} 4872973Sjlahoda 4882973Sjlahodabridge_member_ipv4_body() 4892973Sjlahoda{ 4902973Sjlahoda setup 4912973Sjlahoda test_setup 4922973Sjlahoda 4932973Sjlahoda # Enable once PR kern/49219 is fixed 4942973Sjlahoda #test_ping_failure 4952973Sjlahoda 4962973Sjlahoda setup_bridge 4972973Sjlahoda sleep 1 4982973Sjlahoda test_setup_bridge 4992973Sjlahoda test_ping_success 5002973Sjlahoda 5012973Sjlahoda setup_member_ip 5022973Sjlahoda test_ping_member 5032973Sjlahoda 5042973Sjlahoda teardown_bridge 5052973Sjlahoda test_ping_failure 5062973Sjlahoda 5072973Sjlahoda rump_server_destroy_ifaces 5082973Sjlahoda} 5092973Sjlahoda 5102973Sjlahodabridge_member_ipv6_body() 5112973Sjlahoda{ 5122973Sjlahoda setup6 5132973Sjlahoda test_setup6 5142973Sjlahoda 5152973Sjlahoda test_ping6_failure 5162973Sjlahoda 5172973Sjlahoda setup_bridge 5182973Sjlahoda sleep 1 5192973Sjlahoda test_setup_bridge 5202973Sjlahoda test_ping6_success 5212973Sjlahoda 5222973Sjlahoda setup_member_ip6 5232973Sjlahoda test_ping6_member 5242973Sjlahoda 5252973Sjlahoda teardown_bridge 5262973Sjlahoda test_ping6_failure 5272973Sjlahoda 5282973Sjlahoda rump_server_destroy_ifaces 5292973Sjlahoda} 5302973Sjlahoda 5312973Sjlahodabridge_ipv4_cleanup() 5322973Sjlahoda{ 5332973Sjlahoda 5342973Sjlahoda $DEBUG && dump 5352973Sjlahoda cleanup 5362973Sjlahoda} 5372973Sjlahoda 5382973Sjlahodabridge_ipv6_cleanup() 5392973Sjlahoda{ 5402973Sjlahoda 5412973Sjlahoda $DEBUG && dump 5422973Sjlahoda cleanup 5432973Sjlahoda} 5442973Sjlahoda 5452973Sjlahodabridge_rtable_cleanup() 5462973Sjlahoda{ 5472973Sjlahoda 5482973Sjlahoda $DEBUG && dump 5492973Sjlahoda cleanup 5502973Sjlahoda} 5512973Sjlahoda 5522973Sjlahodabridge_member_ipv4_cleanup() 5532973Sjlahoda{ 5542973Sjlahoda 5552973Sjlahoda $DEBUG && dump 5562973Sjlahoda cleanup 5572973Sjlahoda} 5582973Sjlahoda 5592973Sjlahodabridge_member_ipv6_cleanup() 5602973Sjlahoda{ 5612973Sjlahoda 5622973Sjlahoda $DEBUG && dump 5632973Sjlahoda cleanup 5642973Sjlahoda} 5652973Sjlahoda 5662973Sjlahodaatf_init_test_cases() 5672973Sjlahoda{ 5682973Sjlahoda atf_add_test_case bridge_ipv4 5692973Sjlahoda atf_add_test_case bridge_ipv6 5702973Sjlahoda atf_add_test_case bridge_rtable 5712973Sjlahoda atf_add_test_case bridge_member_ipv4 5722973Sjlahoda atf_add_test_case bridge_member_ipv6 5732973Sjlahoda} 5742973Sjlahoda