1*cf12f019Syamaguchi# $NetBSD: t_vlan.sh,v 1.24 2021/08/19 03:27:05 yamaguchi Exp $ 2d8b2128bSozaki-r# 3d8b2128bSozaki-r# Copyright (c) 2016 Internet Initiative Japan Inc. 4d8b2128bSozaki-r# All rights reserved. 5d8b2128bSozaki-r# 6d8b2128bSozaki-r# Redistribution and use in source and binary forms, with or without 7d8b2128bSozaki-r# modification, are permitted provided that the following conditions 8d8b2128bSozaki-r# are met: 9d8b2128bSozaki-r# 1. Redistributions of source code must retain the above copyright 10d8b2128bSozaki-r# notice, this list of conditions and the following disclaimer. 11d8b2128bSozaki-r# 2. Redistributions in binary form must reproduce the above copyright 12d8b2128bSozaki-r# notice, this list of conditions and the following disclaimer in the 13d8b2128bSozaki-r# documentation and/or other materials provided with the distribution. 14d8b2128bSozaki-r# 15d8b2128bSozaki-r# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16d8b2128bSozaki-r# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17d8b2128bSozaki-r# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18d8b2128bSozaki-r# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19d8b2128bSozaki-r# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20d8b2128bSozaki-r# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21d8b2128bSozaki-r# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22d8b2128bSozaki-r# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23d8b2128bSozaki-r# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24d8b2128bSozaki-r# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25d8b2128bSozaki-r# POSSIBILITY OF SUCH DAMAGE. 26d8b2128bSozaki-r# 27d8b2128bSozaki-r 28d8b2128bSozaki-rBUS=bus 29d8b2128bSozaki-rSOCK_LOCAL=unix://commsock1 30d8b2128bSozaki-rSOCK_REMOTE=unix://commsock2 31d04fb9baSozaki-rIP_LOCAL0=10.0.0.1 32d04fb9baSozaki-rIP_LOCAL1=10.0.1.1 33d04fb9baSozaki-rIP_REMOTE0=10.0.0.2 34d04fb9baSozaki-rIP_REMOTE1=10.0.1.2 357a5814c3SyamaguchiIP_MCADDR0=224.0.0.10 36d2674664SyamaguchiIP6_LOCAL0=fc00::1 37d04fb9baSozaki-rIP6_LOCAL1=fc00:1::1 38d2674664SyamaguchiIP6_REMOTE0=fc00::2 39d04fb9baSozaki-rIP6_REMOTE1=fc00:1::2 407a5814c3SyamaguchiIP6_MCADDR0=ff11::10 417a5814c3SyamaguchiETH_IP_MCADDR0=01:00:5e:00:00:0a 427a5814c3SyamaguchiETH_IP6_MCADDR0=33:33:00:00:00:10 43d8b2128bSozaki-r 44d8b2128bSozaki-rDEBUG=${DEBUG:-false} 45d8b2128bSozaki-r 46d04fb9baSozaki-rvlan_create_destroy_body_common() 47d04fb9baSozaki-r{ 48d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 49d2788a51Sozaki-r 50d04fb9baSozaki-r export RUMP_SERVER=${SOCK_LOCAL} 51d04fb9baSozaki-r 52d2788a51Sozaki-r $atf_ifconfig vlan0 create 53d2788a51Sozaki-r $atf_ifconfig vlan0 destroy 545887e14dSozaki-r 55d2788a51Sozaki-r $atf_ifconfig vlan0 create 56d2788a51Sozaki-r $atf_ifconfig vlan0 up 57d2788a51Sozaki-r $atf_ifconfig vlan0 down 58d2788a51Sozaki-r $atf_ifconfig vlan0 destroy 59d04fb9baSozaki-r 60d2788a51Sozaki-r $atf_ifconfig shmif0 create 61d2788a51Sozaki-r $atf_ifconfig vlan0 create 62d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 1 vlanif shmif0 63d2788a51Sozaki-r $atf_ifconfig vlan0 up 64d2788a51Sozaki-r $atf_ifconfig vlan0 destroy 65d04fb9baSozaki-r 66d04fb9baSozaki-r # more than one vlan interface with a same parent interface 67d2788a51Sozaki-r $atf_ifconfig shmif1 create 68d2788a51Sozaki-r $atf_ifconfig vlan0 create 69d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 70d2788a51Sozaki-r $atf_ifconfig vlan1 create 71d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 11 vlanif shmif0 72d04fb9baSozaki-r 73d04fb9baSozaki-r # more than one interface with another parent interface 74d2788a51Sozaki-r $atf_ifconfig vlan2 create 75d2788a51Sozaki-r $atf_ifconfig vlan2 vlan 12 vlanif shmif1 76d2788a51Sozaki-r $atf_ifconfig vlan3 create 77d2788a51Sozaki-r $atf_ifconfig vlan3 vlan 13 vlanif shmif1 78d2788a51Sozaki-r $atf_ifconfig shmif0 destroy 79d04fb9baSozaki-r atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan0 80d04fb9baSozaki-r atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan1 81d04fb9baSozaki-r atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan2 82d04fb9baSozaki-r atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan3 83d2788a51Sozaki-r $atf_ifconfig vlan0 destroy 84d2788a51Sozaki-r $atf_ifconfig vlan1 destroy 85d2788a51Sozaki-r $atf_ifconfig vlan2 destroy 86d2788a51Sozaki-r $atf_ifconfig vlan3 destroy 87d04fb9baSozaki-r 88d04fb9baSozaki-r} 89d04fb9baSozaki-r 90d8b2128bSozaki-ratf_test_case vlan_create_destroy cleanup 91d8b2128bSozaki-rvlan_create_destroy_head() 92d8b2128bSozaki-r{ 93d8b2128bSozaki-r 94d8b2128bSozaki-r atf_set "descr" "tests of creation and deletion of vlan interface" 95d8b2128bSozaki-r atf_set "require.progs" "rump_server" 96d8b2128bSozaki-r} 97d8b2128bSozaki-r 98d8b2128bSozaki-rvlan_create_destroy_body() 99d8b2128bSozaki-r{ 100d8b2128bSozaki-r rump_server_start $SOCK_LOCAL vlan 101d8b2128bSozaki-r 102d04fb9baSozaki-r vlan_create_destroy_body_common 103d8b2128bSozaki-r} 104d8b2128bSozaki-r 105d04fb9baSozaki-r 106d8b2128bSozaki-rvlan_create_destroy_cleanup() 107d8b2128bSozaki-r{ 108d8b2128bSozaki-r 109d8b2128bSozaki-r $DEBUG && dump 110d8b2128bSozaki-r cleanup 111d8b2128bSozaki-r} 112d8b2128bSozaki-r 113d04fb9baSozaki-ratf_test_case vlan_create_destroy6 cleanup 114d04fb9baSozaki-rvlan_create_destroy6_head() 115d04fb9baSozaki-r{ 116d04fb9baSozaki-r 117d04fb9baSozaki-r atf_set "descr" "tests of creation and deletion of vlan interface with IPv6" 118d04fb9baSozaki-r atf_set "require.progs" "rump_server" 119d04fb9baSozaki-r} 120d04fb9baSozaki-r 121d04fb9baSozaki-rvlan_create_destroy6_body() 122d04fb9baSozaki-r{ 123d04fb9baSozaki-r 124d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan netinet6 125d04fb9baSozaki-r 126d04fb9baSozaki-r vlan_create_destroy_body_common 127d04fb9baSozaki-r} 128d04fb9baSozaki-r 129d04fb9baSozaki-rvlan_create_destroy6_cleanup() 130d04fb9baSozaki-r{ 131d04fb9baSozaki-r 132d04fb9baSozaki-r $DEBUG && dump 133d04fb9baSozaki-r cleanup 134d04fb9baSozaki-r} 135d04fb9baSozaki-r 136d04fb9baSozaki-rvlan_basic_body_common() 137d04fb9baSozaki-r{ 138d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 139d04fb9baSozaki-r local outfile=./out 140d04fb9baSozaki-r local af=inet 141d04fb9baSozaki-r local prefix=24 142d04fb9baSozaki-r local local0=$IP_LOCAL0 143d04fb9baSozaki-r local remote0=$IP_REMOTE0 144d04fb9baSozaki-r local ping_cmd="rump.ping -n -w 1 -c 1" 145d04fb9baSozaki-r 146d04fb9baSozaki-r if [ x"$1" = x"inet6" ]; then 147d04fb9baSozaki-r af="inet6" 148d04fb9baSozaki-r prefix=64 149d04fb9baSozaki-r local0=$IP6_LOCAL0 150d04fb9baSozaki-r remote0=$IP6_REMOTE0 151d04fb9baSozaki-r ping_cmd="rump.ping6 -n -c 1" 152d04fb9baSozaki-r fi 153d04fb9baSozaki-r 154d04fb9baSozaki-r rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 155d04fb9baSozaki-r rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 156d04fb9baSozaki-r 157d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 158d2788a51Sozaki-r $atf_ifconfig shmif0 up 159d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 160d2788a51Sozaki-r $atf_ifconfig shmif0 up 161d04fb9baSozaki-r 162d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 163d2788a51Sozaki-r $atf_ifconfig vlan0 create 164d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 165d2788a51Sozaki-r $atf_ifconfig vlan0 $af $local0/$prefix 166d2788a51Sozaki-r $atf_ifconfig vlan0 up 167d2788a51Sozaki-r $atf_ifconfig -w 10 168d04fb9baSozaki-r 169d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 170d2788a51Sozaki-r $atf_ifconfig vlan0 create 171d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 172d2788a51Sozaki-r $atf_ifconfig vlan0 $af $remote0/$prefix 173d2788a51Sozaki-r $atf_ifconfig vlan0 up 174d2788a51Sozaki-r $atf_ifconfig -w 10 175d04fb9baSozaki-r 176d04fb9baSozaki-r extract_new_packets $BUS > $outfile 177d04fb9baSozaki-r 178d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 179d04fb9baSozaki-r atf_check -s exit:0 -o ignore $ping_cmd $remote0 180d04fb9baSozaki-r 181d04fb9baSozaki-r extract_new_packets $BUS > $outfile 182d04fb9baSozaki-r atf_check -s exit:0 -o match:'vlan 10' cat $outfile 183d04fb9baSozaki-r 184d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 185d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 20 vlanif shmif0 186d2788a51Sozaki-r $atf_ifconfig vlan0 $af $local0/$prefix 187d2788a51Sozaki-r $atf_ifconfig vlan0 up 188d2788a51Sozaki-r $atf_ifconfig -w 10 189d04fb9baSozaki-r 190d04fb9baSozaki-r extract_new_packets $BUS > $outfile 191d04fb9baSozaki-r atf_check -s not-exit:0 -o ignore $ping_cmd $remote0 192d04fb9baSozaki-r 193d04fb9baSozaki-r extract_new_packets $BUS > $outfile 194d04fb9baSozaki-r atf_check -s exit:0 -o match:'vlan 20' cat $outfile 195585004e0Sknakahara 196585004e0Sknakahara export RUMP_SERVER=$SOCK_LOCAL 197d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 198d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 199d2788a51Sozaki-r $atf_ifconfig vlan0 $af $local0/$prefix 200d2788a51Sozaki-r $atf_ifconfig vlan0 up 201d2788a51Sozaki-r $atf_ifconfig -w 10 202585004e0Sknakahara 203585004e0Sknakahara atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0 204585004e0Sknakahara atf_check -s exit:0 -o ignore $ping_cmd $remote0 205585004e0Sknakahara rump.ifconfig -v vlan0 > $outfile 206585004e0Sknakahara 207585004e0Sknakahara atf_check -s exit:0 -o not-match:' 0 packets' cat $outfile 208585004e0Sknakahara atf_check -s exit:0 -o not-match:' 0 bytes' cat $outfile 209d04fb9baSozaki-r} 210d04fb9baSozaki-r 211d8b2128bSozaki-ratf_test_case vlan_basic cleanup 212d8b2128bSozaki-rvlan_basic_head() 213d8b2128bSozaki-r{ 214d8b2128bSozaki-r 215d8b2128bSozaki-r atf_set "descr" "tests of communications over vlan interfaces" 216d8b2128bSozaki-r atf_set "require.progs" "rump_server" 217d8b2128bSozaki-r} 218d8b2128bSozaki-r 219d8b2128bSozaki-rvlan_basic_body() 220d8b2128bSozaki-r{ 221d8b2128bSozaki-r rump_server_start $SOCK_LOCAL vlan 222d8b2128bSozaki-r rump_server_start $SOCK_REMOTE vlan 223d8b2128bSozaki-r 224d04fb9baSozaki-r vlan_basic_body_common inet 225d8b2128bSozaki-r 226d8b2128bSozaki-r} 227d8b2128bSozaki-r 228d8b2128bSozaki-rvlan_basic_cleanup() 229d8b2128bSozaki-r{ 230d8b2128bSozaki-r 231d8b2128bSozaki-r $DEBUG && dump 232d8b2128bSozaki-r cleanup 233d8b2128bSozaki-r} 234d8b2128bSozaki-r 235d04fb9baSozaki-ratf_test_case vlan_basic6 cleanup 236d04fb9baSozaki-rvlan_basic6_head() 237d04fb9baSozaki-r{ 238d04fb9baSozaki-r 239d04fb9baSozaki-r atf_set "descr" "tests of communications over vlan interfaces using IPv6" 240d04fb9baSozaki-r atf_set "require.progs" "rump_server" 241d04fb9baSozaki-r} 242d04fb9baSozaki-r 243d04fb9baSozaki-rvlan_basic6_body() 244d04fb9baSozaki-r{ 245d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan netinet6 246d04fb9baSozaki-r rump_server_start $SOCK_REMOTE vlan netinet6 247d04fb9baSozaki-r 248d04fb9baSozaki-r vlan_basic_body_common inet6 249d04fb9baSozaki-r} 250d04fb9baSozaki-r 251d04fb9baSozaki-rvlan_basic6_cleanup() 252d04fb9baSozaki-r{ 253d04fb9baSozaki-r 254d04fb9baSozaki-r $DEBUG && dump 255d04fb9baSozaki-r cleanup 256d04fb9baSozaki-r} 257d04fb9baSozaki-r 258d2674664Syamaguchivlan_auto_follow_mtu_body_common() 259d2674664Syamaguchi{ 260d2674664Syamaguchi local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 261d2674664Syamaguchi local outfile=./out 262d2674664Syamaguchi local af=inet 263d2674664Syamaguchi local prefix=24 264d2674664Syamaguchi local local0=$IP_LOCAL0 265d2674664Syamaguchi local remote0=$IP_REMOTE0 266d2674664Syamaguchi local ping_cmd="rump.ping -D -n -w 1 -c 1" 267d2674664Syamaguchi local mtu=1500 268d2674664Syamaguchi local vlan_mtu=`expr $mtu - 4` 269d2674664Syamaguchi # ipv4 header=20bytes, icmp header=8bytes 270d2674664Syamaguchi local padding=`expr $vlan_mtu - 20 - 8` 271d2674664Syamaguchi local over_padding=`expr $vlan_mtu - 20 - 8 + 1` 272d2674664Syamaguchi local nonfrag_msg="$local0 > $remote0: ICMP echo request" 273d2674664Syamaguchi # unused for ipv4 274d2674664Syamaguchi local frag_msg="" 275d2674664Syamaguchi 276d2674664Syamaguchi if [ x"$1" = x"inet6" ]; then 277d2674664Syamaguchi af="inet6" 278d2674664Syamaguchi prefix=64 279d2674664Syamaguchi local0=$IP6_LOCAL0 280d2674664Syamaguchi remote0=$IP6_REMOTE0 281d2674664Syamaguchi # ipv6 header=40bytes, icmpv6 header=8bytes 282d2674664Syamaguchi padding=`expr $vlan_mtu - 40 - 8` 283d2674664Syamaguchi over_padding=`expr $vlan_mtu - 40 - 8 + 1` 284d2674664Syamaguchi ping_cmd="rump.ping6 -mm -n -c 1 -i 1" 285d2674664Syamaguchi nonfrag_msg="$local0 > $remote0: ICMP6, echo request" 286d2674664Syamaguchi frag_msg="$local0 > $remote0: frag .* ICMP6, echo request" 287d2674664Syamaguchi fi 288d2674664Syamaguchi 289d2674664Syamaguchi rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 290d2674664Syamaguchi rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 291d2674664Syamaguchi 292d2674664Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 293d2674664Syamaguchi $atf_ifconfig shmif0 up 294d2674664Syamaguchi export RUMP_SERVER=$SOCK_REMOTE 295d2674664Syamaguchi $atf_ifconfig shmif0 up 296d2674664Syamaguchi 297d2674664Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 298d2674664Syamaguchi $atf_ifconfig vlan0 create 299d2674664Syamaguchi 300d2674664Syamaguchi # since upper bound of shmif's mtu is 1500, 301d2674664Syamaguchi # so we lower vlan's mtu instead of raising shmif's. 302d2674664Syamaguchi # to do this, we change the interface's parameter 303d2674664Syamaguchi # such as ND_IFINFO(ifp)->maxmtu that is changed by SIOCSIFMTU. 304d2674664Syamaguchi 305d2674664Syamaguchi # $atf_config shmif0 mtu 1600 306d2674664Syamaguchi $atf_ifconfig vlan0 vlan 10 vlanif shmif0 307d2674664Syamaguchi $atf_ifconfig vlan0 mtu 1400 308d2674664Syamaguchi $atf_ifconfig vlan0 -vlanif shmif0 309d2674664Syamaguchi 310d2674664Syamaguchi $atf_ifconfig vlan0 vlan 10 vlanif shmif0 311d2674664Syamaguchi $atf_ifconfig vlan0 $af $local0/$prefix 312d2674664Syamaguchi $atf_ifconfig vlan0 up 313d2674664Syamaguchi $atf_ifconfig -w 10 314d2674664Syamaguchi 315d2674664Syamaguchi export RUMP_SERVER=$SOCK_REMOTE 316d2674664Syamaguchi $atf_ifconfig vlan0 create 317d2674664Syamaguchi $atf_ifconfig vlan0 vlan 10 vlanif shmif0 318d2674664Syamaguchi $atf_ifconfig vlan0 $af $remote0/$prefix 319d2674664Syamaguchi $atf_ifconfig vlan0 up 320d2674664Syamaguchi $atf_ifconfig -w 10 321d2674664Syamaguchi 322d2674664Syamaguchi extract_new_packets $BUS > $outfile 323d2674664Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 324d2674664Syamaguchi 325d2674664Syamaguchi atf_check -s exit:0 -o ignore $ping_cmd -s $padding $remote0 326d2674664Syamaguchi extract_new_packets $BUS > $outfile 327d2674664Syamaguchi atf_check -s exit:0 -o match:"$nonfrag_msg" cat $outfile 328d2674664Syamaguchi 329d2674664Syamaguchi if [ x"$1" = x"inet6" ]; then 330d2674664Syamaguchi atf_check -s exit:0 -o ignore $ping_cmd -s $over_padding $remote0 331d2674664Syamaguchi extract_new_packets $BUS > $outfile 332d2674664Syamaguchi atf_check -s exit:0 -o match:"$frag_msg" cat $outfile 333d2674664Syamaguchi else 334d2674664Syamaguchi atf_check -s not-exit:0 -o ignore -e match:"Message too long" \ 335d2674664Syamaguchi $ping_cmd -s $over_padding $remote0 336d2674664Syamaguchi fi 337d2674664Syamaguchi} 338d2674664Syamaguchi 339d2674664Syamaguchiatf_test_case vlan_auto_follow_mtu cleanup 340d2674664Syamaguchivlan_auto_follow_mtu_head() 341d2674664Syamaguchi{ 342d2674664Syamaguchi 343d2674664Syamaguchi atf_set "descr" "tests of setting vlan mtu using IPv4" 344d2674664Syamaguchi atf_set "require.progs" "rump_server" 345d2674664Syamaguchi} 346d2674664Syamaguchi 347d2674664Syamaguchivlan_auto_follow_mtu_body() 348d2674664Syamaguchi{ 349d2674664Syamaguchi rump_server_start $SOCK_LOCAL vlan 350d2674664Syamaguchi rump_server_start $SOCK_REMOTE vlan 351d2674664Syamaguchi 352d2674664Syamaguchi vlan_auto_follow_mtu_body_common inet 353d2674664Syamaguchi} 354d2674664Syamaguchi 355d2674664Syamaguchivlan_auto_follow_mtu_cleanup() 356d2674664Syamaguchi{ 357d2674664Syamaguchi 358d2674664Syamaguchi $DEBUG && dump 359d2674664Syamaguchi cleanup 360d2674664Syamaguchi} 361d2674664Syamaguchi 362d2674664Syamaguchiatf_test_case vlan_auto_follow_mtu6 cleanup 363d2674664Syamaguchivlan_auto_follow_mtu6_head() 364d2674664Syamaguchi{ 365d2674664Syamaguchi 366d2674664Syamaguchi atf_set "descr" "tests of setting vlan mtu using IPv6" 367d2674664Syamaguchi atf_set "require.progs" "rump_server" 368d2674664Syamaguchi} 369d2674664Syamaguchi 370d2674664Syamaguchivlan_auto_follow_mtu6_body() 371d2674664Syamaguchi{ 372d2674664Syamaguchi rump_server_start $SOCK_LOCAL vlan netinet6 373d2674664Syamaguchi rump_server_start $SOCK_REMOTE vlan netinet6 374d2674664Syamaguchi 375d2674664Syamaguchi vlan_auto_follow_mtu_body_common inet6 376d2674664Syamaguchi} 377d2674664Syamaguchi 378d2674664Syamaguchivlan_auto_follow_mtu6_cleanup() 379d2674664Syamaguchi{ 380d2674664Syamaguchi 381d2674664Syamaguchi $DEBUG && dump 382d2674664Syamaguchi cleanup 383d2674664Syamaguchi} 384d2674664Syamaguchi 385d04fb9baSozaki-rvlanid_config_and_ping() 386d04fb9baSozaki-r{ 387d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 388d04fb9baSozaki-r local vlanid=$1 389d04fb9baSozaki-r shift 390d04fb9baSozaki-r 391d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 392d2788a51Sozaki-r $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 393d2788a51Sozaki-r $atf_ifconfig vlan0 $IP_LOCAL0/24 394d2788a51Sozaki-r $atf_ifconfig vlan0 up 395d04fb9baSozaki-r 396d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 397d2788a51Sozaki-r $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 398d2788a51Sozaki-r $atf_ifconfig vlan0 $IP_REMOTE0/24 399d2788a51Sozaki-r $atf_ifconfig vlan0 up 400d04fb9baSozaki-r 401d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 402d04fb9baSozaki-r atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 $IP_REMOTE0 403d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 404d04fb9baSozaki-r 405d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 406d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 407d04fb9baSozaki-r} 408d04fb9baSozaki-r 409d04fb9baSozaki-rvlanid_config_and_ping6() 410d04fb9baSozaki-r{ 411d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 412d04fb9baSozaki-r local vlanid=$1 413d04fb9baSozaki-r shift 414d04fb9baSozaki-r 415d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 416d2788a51Sozaki-r $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 417d2788a51Sozaki-r $atf_ifconfig vlan0 inet6 $IP6_LOCAL0/64 418d2788a51Sozaki-r $atf_ifconfig vlan0 up 419d04fb9baSozaki-r 420d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 421d2788a51Sozaki-r $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 422d2788a51Sozaki-r $atf_ifconfig vlan0 inet6 $IP6_REMOTE0/64 423d2788a51Sozaki-r $atf_ifconfig vlan0 up 424d04fb9baSozaki-r 425d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 426d04fb9baSozaki-r atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 $IP6_REMOTE0 427d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 428d04fb9baSozaki-r 429d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 430d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 431d04fb9baSozaki-r} 432d04fb9baSozaki-r 433d04fb9baSozaki-rvlan_vlanid_body_common() 434d04fb9baSozaki-r{ 435d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 436d04fb9baSozaki-r local af=inet 437d04fb9baSozaki-r local prefix=24 438d04fb9baSozaki-r local sysctl_param="net.inet.ip.dad_count=0" 439d04fb9baSozaki-r local ping_cmd="rump.ping -n -w 1 -c 1" 440d04fb9baSozaki-r local config_and_ping=vlanid_config_and_ping 441d04fb9baSozaki-r local local0=$IP_LOCAL0 442d04fb9baSozaki-r local local1=$IP_LOCAL1 443d04fb9baSozaki-r local remote0=$IP_REMOTE0 444d04fb9baSozaki-r local remote1=$IP_REMOTE1 445d04fb9baSozaki-r 446d04fb9baSozaki-r if [ x"$1" = x"inet6" ]; then 447d04fb9baSozaki-r af=inet6 448d04fb9baSozaki-r prefix=64 449d04fb9baSozaki-r sysctl_param="net.inet6.ip6.dad_count=0" 450d04fb9baSozaki-r ping_cmd="rump.ping6 -n -c 1" 451d04fb9baSozaki-r config_and_ping=vlanid_config_and_ping6 452d04fb9baSozaki-r local0=$IP6_LOCAL0 453d04fb9baSozaki-r local1=$IP6_LOCAL1 454d04fb9baSozaki-r remote0=$IP6_REMOTE0 455d04fb9baSozaki-r remote1=$IP6_REMOTE1 456d04fb9baSozaki-r fi 457d04fb9baSozaki-r 458d04fb9baSozaki-r rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 459d04fb9baSozaki-r rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 460d04fb9baSozaki-r 461d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 462d04fb9baSozaki-r atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 463d2788a51Sozaki-r $atf_ifconfig shmif0 up 464d2788a51Sozaki-r $atf_ifconfig vlan0 create 465d04fb9baSozaki-r 466d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 467d04fb9baSozaki-r atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 468d2788a51Sozaki-r $atf_ifconfig shmif0 up 469d2788a51Sozaki-r $atf_ifconfig vlan0 create 470d04fb9baSozaki-r 471d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 4725b47a999Sozaki-r atf_check -s not-exit:0 -e match:"^usage: rump.ifconfig" \ 473d04fb9baSozaki-r rump.ifconfig vlan0 vlan -1 vlanif shmif0 474d04fb9baSozaki-r 475b1e4419bSkre # $config_and_ping 0 # reserved vlan id 476d04fb9baSozaki-r $config_and_ping 1 477d04fb9baSozaki-r $config_and_ping 4094 478b1e4419bSkre # $config_and_ping 4095 #reserved vlan id 479d04fb9baSozaki-r 480c84c7aedSkre if [ "${RANDOM:-0}" != "${RANDOM:-0}" ] 481c84c7aedSkre then 482c84c7aedSkre for TAG in $(( ${RANDOM:-0} % 4092 + 2 )) \ 483c84c7aedSkre $(( ${RANDOM:-0} % 4092 + 2 )) \ 484c84c7aedSkre $(( ${RANDOM:-0} % 4092 + 2 )) 485c84c7aedSkre do 486c84c7aedSkre $config_and_ping "${TAG}" 487c84c7aedSkre done 488c84c7aedSkre fi 489c84c7aedSkre 490d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 491c84c7aedSkre for TAG in 0 4095 4096 $((4096*4 + 1)) 65536 65537 $((65536 + 4095)) 492c84c7aedSkre do 493c84c7aedSkre atf_check -s not-exit:0 -e not-empty \ 494c84c7aedSkre rump.ifconfig vlan0 vlan "${TAG}" vlanif shmif0 495c84c7aedSkre done 496d04fb9baSozaki-r 497d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 1 vlanif shmif0 4985b47a999Sozaki-r atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \ 499d04fb9baSozaki-r rump.ifconfig vlan0 vlan 2 vlanif shmif0 500d04fb9baSozaki-r 5015b47a999Sozaki-r atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \ 502d04fb9baSozaki-r rump.ifconfig vlan0 vlan 1 vlanif shmif1 503d04fb9baSozaki-r 504d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 5055b47a999Sozaki-r atf_check -s not-exit:0 -e match:"Invalid argument" \ 506644db2cdSozaki-r rump.ifconfig vlan0 $af $local0/$prefix 507d04fb9baSozaki-r 508d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 509d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 510d2788a51Sozaki-r $atf_ifconfig vlan0 $af $local0/$prefix 511d2788a51Sozaki-r $atf_ifconfig vlan0 up 512d2788a51Sozaki-r $atf_ifconfig vlan1 create 513d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 11 vlanif shmif0 514d2788a51Sozaki-r $atf_ifconfig vlan1 $af $local1/$prefix 515d2788a51Sozaki-r $atf_ifconfig vlan1 up 516d04fb9baSozaki-r 517d04fb9baSozaki-r export RUMP_SERVER=$SOCK_REMOTE 518d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 519d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 520d2788a51Sozaki-r $atf_ifconfig vlan0 $af $remote0/$prefix 521d2788a51Sozaki-r $atf_ifconfig vlan0 up 522d2788a51Sozaki-r $atf_ifconfig vlan1 create 523d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 11 vlanif shmif0 524d2788a51Sozaki-r $atf_ifconfig vlan1 $af $remote1/$prefix 525d2788a51Sozaki-r $atf_ifconfig vlan1 up 526d04fb9baSozaki-r 527d04fb9baSozaki-r export RUMP_SERVER=$SOCK_LOCAL 528d04fb9baSozaki-r atf_check -s exit:0 -o ignore $ping_cmd $remote0 529d04fb9baSozaki-r atf_check -s exit:0 -o ignore $ping_cmd $remote1 530d04fb9baSozaki-r} 531d04fb9baSozaki-r 532d04fb9baSozaki-ratf_test_case vlan_vlanid cleanup 533d04fb9baSozaki-rvlan_vlanid_head() 534d04fb9baSozaki-r{ 535d04fb9baSozaki-r 536d04fb9baSozaki-r atf_set "descr" "tests of configuration for vlan id" 537d04fb9baSozaki-r atf_set "require.progs" "rump_server" 538d04fb9baSozaki-r} 539d04fb9baSozaki-r 540d04fb9baSozaki-rvlan_vlanid_body() 541d04fb9baSozaki-r{ 542d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan 543d04fb9baSozaki-r rump_server_start $SOCK_REMOTE vlan 544d04fb9baSozaki-r 545d04fb9baSozaki-r vlan_vlanid_body_common inet 546d04fb9baSozaki-r} 547d04fb9baSozaki-r 548d04fb9baSozaki-rvlan_vlanid_cleanup() 549d04fb9baSozaki-r{ 550d04fb9baSozaki-r 551d04fb9baSozaki-r $DEBUG && dump 552d04fb9baSozaki-r cleanup 553d04fb9baSozaki-r} 554d04fb9baSozaki-r 555d04fb9baSozaki-ratf_test_case vlan_vlanid6 cleanup 556d04fb9baSozaki-rvlan_vlanid6_head() 557d04fb9baSozaki-r{ 558d04fb9baSozaki-r 559d04fb9baSozaki-r atf_set "descr" "tests of configuration for vlan id using IPv6" 560d04fb9baSozaki-r atf_set "require.progs" "rump_server" 561d04fb9baSozaki-r} 562d04fb9baSozaki-r 563d04fb9baSozaki-r 564d04fb9baSozaki-rvlan_vlanid6_body() 565d04fb9baSozaki-r{ 566d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan netinet6 567d04fb9baSozaki-r rump_server_start $SOCK_REMOTE vlan netinet6 568d04fb9baSozaki-r 569d04fb9baSozaki-r vlan_vlanid_body_common inet6 570d04fb9baSozaki-r} 571d04fb9baSozaki-r 572d04fb9baSozaki-rvlan_vlanid6_cleanup() 573d04fb9baSozaki-r{ 574d04fb9baSozaki-r 575d04fb9baSozaki-r $DEBUG && dump 576d04fb9baSozaki-r cleanup 577d04fb9baSozaki-r} 578d04fb9baSozaki-r 579d04fb9baSozaki-rvlan_configs_body_common() 580d04fb9baSozaki-r{ 581d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 582d2788a51Sozaki-r 583d04fb9baSozaki-r export RUMP_SERVER=${SOCK_LOCAL} 584d04fb9baSozaki-r 585d2788a51Sozaki-r $atf_ifconfig shmif0 create 586d2788a51Sozaki-r $atf_ifconfig shmif1 create 587dc663ea9Sknakahara # unset U/L bit to detect a bug fixed by if_vlan.c:r1.132 588d2788a51Sozaki-r $atf_ifconfig shmif0 link b0:a0:75:00:01:00 active 589d2788a51Sozaki-r $atf_ifconfig shmif1 link b0:a0:75:00:01:01 active 590d2788a51Sozaki-r $atf_ifconfig vlan0 create 591d04fb9baSozaki-r 59288944874Syamaguchi atf_check -s exit:0 -o match:'status: +down' \ 59388944874Syamaguchi rump.ifconfig vlan0 594d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 595d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 59688944874Syamaguchi atf_check -s exit:0 -o match:'status: +down' \ 59788944874Syamaguchi rump.ifconfig vlan0 598d04fb9baSozaki-r 599d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 600d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif shmif0 601d04fb9baSozaki-r 602d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 6035b47a999Sozaki-r atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1 6045b47a999Sozaki-r atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2 605d04fb9baSozaki-r 606d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 607d04fb9baSozaki-r 608d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 609d04fb9baSozaki-r atf_check -s exit:0 -e match:'Invalid argument' \ 610d04fb9baSozaki-r rump.ifconfig vlan0 mtu 1497 611d2788a51Sozaki-r $atf_ifconfig vlan0 mtu 1496 612d2788a51Sozaki-r $atf_ifconfig vlan0 mtu 42 613d04fb9baSozaki-r atf_check -s exit:0 -e match:'Invalid argument' \ 614d04fb9baSozaki-r rump.ifconfig vlan0 mtu 41 615d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif 616d668e406Smsaitoh 617d2788a51Sozaki-r $atf_ifconfig vlan1 create 618d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 619d668e406Smsaitoh atf_check -s not-exit:0 -e match:'File exists' \ 620d668e406Smsaitoh rump.ifconfig vlan1 vlan 10 vlanif shmif0 621d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 10 vlanif shmif1 62265c393a1Smsaitoh 623d2788a51Sozaki-r $atf_ifconfig vlan1 -vlanif shmif1 624d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 10 vlanif shmif1 62565c393a1Smsaitoh 626d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif shmif0 627d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 628d04fb9baSozaki-r} 629d04fb9baSozaki-r 630d04fb9baSozaki-ratf_test_case vlan_configs cleanup 631d04fb9baSozaki-rvlan_configs_head() 632d04fb9baSozaki-r{ 633d04fb9baSozaki-r atf_set "descr" "tests of configuration except vlan id" 634d04fb9baSozaki-r atf_set "require.progs" "rump_server" 635d04fb9baSozaki-r} 636d04fb9baSozaki-r 637d04fb9baSozaki-rvlan_configs_body() 638d04fb9baSozaki-r{ 639d04fb9baSozaki-r 640d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan 641d04fb9baSozaki-r 642d04fb9baSozaki-r vlan_configs_body_common 643d04fb9baSozaki-r 644d04fb9baSozaki-r} 645d04fb9baSozaki-r 646d04fb9baSozaki-rvlan_configs_cleanup() 647d04fb9baSozaki-r{ 648d04fb9baSozaki-r 649d04fb9baSozaki-r $DEBUG && dump 650d04fb9baSozaki-r cleanup 651d04fb9baSozaki-r} 652d04fb9baSozaki-r 653d04fb9baSozaki-ratf_test_case vlan_configs6 cleanup 654d04fb9baSozaki-rvlan_configs6_head() 655d04fb9baSozaki-r{ 656d04fb9baSozaki-r atf_set "descr" "tests of configuration except vlan id using IPv6" 657d04fb9baSozaki-r atf_set "require.progs" "rump_server" 658d04fb9baSozaki-r} 659d04fb9baSozaki-r 660d04fb9baSozaki-rvlan_configs6_body() 661d04fb9baSozaki-r{ 662d04fb9baSozaki-r rump_server_start $SOCK_LOCAL vlan netinet6 663d04fb9baSozaki-r 664d04fb9baSozaki-r vlan_configs_body_common 665d04fb9baSozaki-r} 666d04fb9baSozaki-r 667d04fb9baSozaki-rvlan_configs6_cleanup() 668d04fb9baSozaki-r{ 669d04fb9baSozaki-r $DEBUG && dump 670d04fb9baSozaki-r cleanup 671d04fb9baSozaki-r} 672d04fb9baSozaki-r 673039773a0Sozaki-rvlan_bridge_body_common() 674039773a0Sozaki-r{ 675d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 67675ee67b1Syamaguchi local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig" 677039773a0Sozaki-r 678039773a0Sozaki-r rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 679039773a0Sozaki-r 680039773a0Sozaki-r export RUMP_SERVER=$SOCK_LOCAL 681d2788a51Sozaki-r $atf_ifconfig shmif0 up 682039773a0Sozaki-r 683d2788a51Sozaki-r $atf_ifconfig vlan0 create 684039773a0Sozaki-r $DEBUG && rump.ifconfig vlan0 685039773a0Sozaki-r 686d2788a51Sozaki-r $atf_ifconfig bridge0 create 687d2788a51Sozaki-r $atf_ifconfig bridge0 up 688039773a0Sozaki-r 68975ee67b1Syamaguchi # 69075ee67b1Syamaguchi # Add vlan to bridge member 69175ee67b1Syamaguchi # 69275ee67b1Syamaguchi $atf_ifconfig bridge0 mtu 1496 6930a2abb49Syamaguchi 6940a2abb49Syamaguchi # vlan0 can not add to bridge member 6950a2abb49Syamaguchi # because it is not an ethernet device 6960a2abb49Syamaguchi atf_check -s not-exit:0 -e match:'Invalid argument' \ 6970a2abb49Syamaguchi $HIJACKING /sbin/brconfig bridge0 add vlan0 6980a2abb49Syamaguchi 6990a2abb49Syamaguchi $atf_ifconfig vlan0 vlan 10 vlanif shmif0 7000a2abb49Syamaguchi $atf_ifconfig vlan0 up 70175ee67b1Syamaguchi atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 70275ee67b1Syamaguchi 7030a2abb49Syamaguchi # vlan0 becomes an ethernet device 7040a2abb49Syamaguchi # after attaching the parent interface 70575ee67b1Syamaguchi $atf_brconfig bridge0 add vlan0 7060a2abb49Syamaguchi $DEBUG && $HIJACKING /sbin/brconfig bridge0 7070a2abb49Syamaguchi 70875ee67b1Syamaguchi $atf_brconfig bridge0 delete vlan0 70975ee67b1Syamaguchi 7100a2abb49Syamaguchi $atf_brconfig bridge0 add vlan0 7110a2abb49Syamaguchi $atf_ifconfig vlan0 -vlanif 7120a2abb49Syamaguchi atf_check -s exit:0 -o not-match:'vlan0' \ 7130a2abb49Syamaguchi $HIJACKING /sbin/brconfig bridge0 7140a2abb49Syamaguchi atf_check -s not-exit:0 -e match:'No such' \ 7150a2abb49Syamaguchi $HIJACKING /sbin/brconfig bridge0 delete vlan0 7160a2abb49Syamaguchi 71775ee67b1Syamaguchi # 71875ee67b1Syamaguchi # decrease MTU on adding to bridge member 71975ee67b1Syamaguchi # 72075ee67b1Syamaguchi $atf_ifconfig bridge0 mtu 1495 7210a2abb49Syamaguchi $atf_ifconfig vlan0 vlan 10 vlanif shmif0 7220a2abb49Syamaguchi $atf_ifconfig vlan0 up 72375ee67b1Syamaguchi atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 72475ee67b1Syamaguchi 72575ee67b1Syamaguchi $atf_brconfig bridge0 add vlan0 726b14ea2d4Syamaguchi $DEBUG && $HIJACKING /sbin/brconfig bridge0 72775ee67b1Syamaguchi atf_check -s exit:0 -o match:'mtu 1495' rump.ifconfig vlan0 72875ee67b1Syamaguchi $atf_brconfig bridge0 delete vlan0 72975ee67b1Syamaguchi 73075ee67b1Syamaguchi # 73175ee67b1Syamaguchi # increase MTU on adding to bridge member 73275ee67b1Syamaguchi # 73375ee67b1Syamaguchi $atf_ifconfig bridge0 mtu 1496 73475ee67b1Syamaguchi $atf_ifconfig vlan0 mtu 1495 73575ee67b1Syamaguchi $atf_brconfig bridge0 add vlan0 73675ee67b1Syamaguchi 737b14ea2d4Syamaguchi $DEBUG && $HIJACKING /sbin/brconfig bridge0 73875ee67b1Syamaguchi atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 73975ee67b1Syamaguchi $atf_brconfig bridge0 delete vlan0 74075ee67b1Syamaguchi 74175ee67b1Syamaguchi $atf_ifconfig bridge0 mtu 1497 74275ee67b1Syamaguchi atf_check -s not-exit:0 -o ignore -e ignore \ 743b14ea2d4Syamaguchi $HIJACKING /sbin/brconfig bridge0 add vlan0 74475ee67b1Syamaguchi 74575ee67b1Syamaguchi # 74675ee67b1Syamaguchi # Destroy a vlan interface that is bridge member 74775ee67b1Syamaguchi # 74875ee67b1Syamaguchi $atf_ifconfig bridge0 mtu 1496 74975ee67b1Syamaguchi $atf_brconfig bridge0 add vlan0 750d2788a51Sozaki-r $atf_ifconfig vlan0 destroy 751039773a0Sozaki-r 752039773a0Sozaki-r rump_server_destroy_ifaces 753039773a0Sozaki-r} 754039773a0Sozaki-r 755039773a0Sozaki-ratf_test_case vlan_bridge cleanup 756039773a0Sozaki-rvlan_bridge_head() 757039773a0Sozaki-r{ 758039773a0Sozaki-r 759039773a0Sozaki-r atf_set "descr" "tests of vlan interfaces with bridges (IPv4)" 760039773a0Sozaki-r atf_set "require.progs" "rump_server" 761039773a0Sozaki-r} 762039773a0Sozaki-r 763039773a0Sozaki-rvlan_bridge_body() 764039773a0Sozaki-r{ 765039773a0Sozaki-r 766039773a0Sozaki-r rump_server_start $SOCK_LOCAL vlan bridge 767039773a0Sozaki-r vlan_bridge_body_common 768039773a0Sozaki-r} 769039773a0Sozaki-r 770039773a0Sozaki-rvlan_bridge_cleanup() 771039773a0Sozaki-r{ 772039773a0Sozaki-r 773039773a0Sozaki-r $DEBUG && dump 774039773a0Sozaki-r cleanup 775039773a0Sozaki-r} 776039773a0Sozaki-r 777039773a0Sozaki-ratf_test_case vlan_bridge6 cleanup 778039773a0Sozaki-rvlan_bridge6_head() 779039773a0Sozaki-r{ 780039773a0Sozaki-r 781039773a0Sozaki-r atf_set "descr" "tests of vlan interfaces with bridges (IPv6)" 782039773a0Sozaki-r atf_set "require.progs" "rump_server" 783039773a0Sozaki-r} 784039773a0Sozaki-r 785039773a0Sozaki-rvlan_bridge6_body() 786039773a0Sozaki-r{ 787039773a0Sozaki-r 788039773a0Sozaki-r rump_server_start $SOCK_LOCAL vlan netinet6 bridge 789039773a0Sozaki-r vlan_bridge_body_common 790039773a0Sozaki-r} 791039773a0Sozaki-r 792039773a0Sozaki-rvlan_bridge6_cleanup() 793039773a0Sozaki-r{ 794039773a0Sozaki-r 795039773a0Sozaki-r $DEBUG && dump 796039773a0Sozaki-r cleanup 797039773a0Sozaki-r} 798039773a0Sozaki-r 7997a5814c3Syamaguchivlan_multicast_body_common() 8007a5814c3Syamaguchi{ 801d2788a51Sozaki-r local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 8027a5814c3Syamaguchi local af="inet" 8037a5814c3Syamaguchi local local0=$IP_LOCAL0 8047a5814c3Syamaguchi local local1=$IP_LOCAL1 8057a5814c3Syamaguchi local mcaddr=$IP_MCADDR0 8067a5814c3Syamaguchi local eth_mcaddr=$ETH_IP_MCADDR0 8077a5814c3Syamaguchi local prefix=24 8087a5814c3Syamaguchi local siocXmulti="$(atf_get_srcdir)/siocXmulti" 809d2788a51Sozaki-r local atf_siocXmulti="atf_check -s exit:0 $HIJACKING $siocXmulti" 8107a5814c3Syamaguchi 8117a5814c3Syamaguchi if [ x"$1" = x"inet6" ]; then 8127a5814c3Syamaguchi af="inet6" 8137a5814c3Syamaguchi prefix=64 8147a5814c3Syamaguchi local0=$IP6_LOCAL0 8157a5814c3Syamaguchi local1=$IP6_LOCAL1 8167a5814c3Syamaguchi mcaddr=$IP6_MCADDR0 8177a5814c3Syamaguchi eth_mcaddr=$ETH_IP6_MCADDR0 8187a5814c3Syamaguchi fi 8197a5814c3Syamaguchi 8207a5814c3Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 8217a5814c3Syamaguchi 822d2788a51Sozaki-r $atf_ifconfig shmif0 create 823d2788a51Sozaki-r $atf_ifconfig shmif0 linkstr net0 up 824d2788a51Sozaki-r $atf_ifconfig vlan0 create 825d2788a51Sozaki-r $atf_ifconfig vlan0 vlan 10 vlanif shmif0 826d2788a51Sozaki-r $atf_ifconfig vlan0 $af $local0/$prefix up 827d2788a51Sozaki-r $atf_ifconfig vlan1 create 828d2788a51Sozaki-r $atf_ifconfig vlan1 vlan 11 vlanif shmif0 829d2788a51Sozaki-r $atf_ifconfig vlan1 $af $local1/$prefix up 830d2788a51Sozaki-r $atf_ifconfig -w 10 8317a5814c3Syamaguchi 8327a5814c3Syamaguchi # check the initial state 8337a5814c3Syamaguchi atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 8347a5814c3Syamaguchi 8357a5814c3Syamaguchi # add a multicast address 836d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 8377a5814c3Syamaguchi atf_check -s exit:0 -o match:"$eth_mcaddr" $HIJACKING ifmcstat 8387a5814c3Syamaguchi 8397a5814c3Syamaguchi # delete the address 840d2788a51Sozaki-r $atf_siocXmulti del vlan0 $mcaddr 8417a5814c3Syamaguchi atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 8427a5814c3Syamaguchi 8437a5814c3Syamaguchi # delete a non-existing address 8445b47a999Sozaki-r atf_check -s not-exit:0 -e match:"Invalid argument" \ 8455b47a999Sozaki-r $HIJACKING $siocXmulti del vlan0 $mcaddr 8467a5814c3Syamaguchi 8477a5814c3Syamaguchi # add an address to different interfaces 848d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 849d2788a51Sozaki-r $atf_siocXmulti add vlan1 $mcaddr 850a9404914Snisimura atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 2" $HIJACKING ifmcstat 851d2788a51Sozaki-r $atf_siocXmulti del vlan0 $mcaddr 8527a5814c3Syamaguchi 8537a5814c3Syamaguchi # delete the address with invalid interface 8547071c103Syamaguchi atf_check -s not-exit:0 -e match:"Invalid argument" \ 8557a5814c3Syamaguchi $HIJACKING $siocXmulti del vlan0 $mcaddr 8567a5814c3Syamaguchi 857d2788a51Sozaki-r $atf_siocXmulti del vlan1 $mcaddr 8587a5814c3Syamaguchi 8597a5814c3Syamaguchi # add and delete a same address more than once 860d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 861d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 862d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 863a9404914Snisimura atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 3" $HIJACKING ifmcstat 864d2788a51Sozaki-r $atf_siocXmulti del vlan0 $mcaddr 865d2788a51Sozaki-r $atf_siocXmulti del vlan0 $mcaddr 866d2788a51Sozaki-r $atf_siocXmulti del vlan0 $mcaddr 8677a5814c3Syamaguchi atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 8687a5814c3Syamaguchi 8697a5814c3Syamaguchi # delete all address added to parent device when remove 8707a5814c3Syamaguchi # the config of parent interface 871d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 872d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 873d2788a51Sozaki-r $atf_siocXmulti add vlan0 $mcaddr 874d2788a51Sozaki-r $atf_ifconfig vlan0 -vlanif shmif0 8757a5814c3Syamaguchi atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 8767a5814c3Syamaguchi} 8777a5814c3Syamaguchi 8787a5814c3Syamaguchiatf_test_case vlan_multicast cleanup 8797a5814c3Syamaguchivlan_multicast_head() 8807a5814c3Syamaguchi{ 8817a5814c3Syamaguchi atf_set "descr" "tests of multicast address adding and deleting" 8827a5814c3Syamaguchi atf_set "require.progs" "rump_server" 8837a5814c3Syamaguchi} 8847a5814c3Syamaguchi 8857a5814c3Syamaguchivlan_multicast_body() 8867a5814c3Syamaguchi{ 8877a5814c3Syamaguchi rump_server_start $SOCK_LOCAL vlan 8887a5814c3Syamaguchi 8897a5814c3Syamaguchi vlan_multicast_body_common inet 8907a5814c3Syamaguchi} 8917a5814c3Syamaguchi 8927a5814c3Syamaguchivlan_multicast_cleanup() 8937a5814c3Syamaguchi{ 8947a5814c3Syamaguchi $DEBUG && dump 8957a5814c3Syamaguchi cleanup 8967a5814c3Syamaguchi} 8977a5814c3Syamaguchi 8987a5814c3Syamaguchiatf_test_case vlan_multicast6 cleanup 8997a5814c3Syamaguchivlan_multicast6_head() 9007a5814c3Syamaguchi{ 9017a5814c3Syamaguchi atf_set "descr" "tests of multicast address adding and deleting with IPv6" 9027a5814c3Syamaguchi atf_set "require.progs" "rump_server" 9037a5814c3Syamaguchi} 9047a5814c3Syamaguchi 9057a5814c3Syamaguchivlan_multicast6_body() 9067a5814c3Syamaguchi{ 9077a5814c3Syamaguchi rump_server_start $SOCK_LOCAL vlan netinet6 9087a5814c3Syamaguchi 9097a5814c3Syamaguchi vlan_multicast_body_common inet6 9107a5814c3Syamaguchi} 9117a5814c3Syamaguchi 9127a5814c3Syamaguchivlan_multicast6_cleanup() 9137a5814c3Syamaguchi{ 9147a5814c3Syamaguchi $DEBUG && dump 9157a5814c3Syamaguchi cleanup 9167a5814c3Syamaguchi} 9177a5814c3Syamaguchi 918d659b7f1Syamaguchiatf_test_case vlan_promisc cleanup 919d659b7f1Syamaguchivlan_promisc_head() 920d659b7f1Syamaguchi{ 921d659b7f1Syamaguchi 922d659b7f1Syamaguchi atf_set "descr" "tests of IFF_PROMISC of vlan" 923d659b7f1Syamaguchi atf_set "require.progs" "rump_server" 924d659b7f1Syamaguchi} 925d659b7f1Syamaguchi 926d659b7f1Syamaguchivlan_promisc_body() 927d659b7f1Syamaguchi{ 928d659b7f1Syamaguchi local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 929d659b7f1Syamaguchi local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig" 930d659b7f1Syamaguchi local atf_arp="atf_check -s exit:0 rump.arp" 931d659b7f1Syamaguchi local bpfopen="$HIJACKING $(atf_get_srcdir)/bpfopen" 932*cf12f019Syamaguchi bpfopen="$bpfopen -dv -b /rump/dev/bpf" 933*cf12f019Syamaguchi local pidfile="./bpfopen.pid" 934d659b7f1Syamaguchi local macaddr="" 935d659b7f1Syamaguchi 936d659b7f1Syamaguchi rump_server_bpf_start $SOCK_LOCAL vlan bridge 937d659b7f1Syamaguchi rump_server_start $SOCK_REMOTE vlan 938d659b7f1Syamaguchi 939d659b7f1Syamaguchi rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 940d659b7f1Syamaguchi rump_server_add_iface $SOCK_LOCAL shmif1 941d659b7f1Syamaguchi rump_server_add_iface $SOCK_LOCAL vlan0 942d659b7f1Syamaguchi rump_server_add_iface $SOCK_LOCAL vlan1 943d659b7f1Syamaguchi rump_server_add_iface $SOCK_LOCAL bridge0 944d659b7f1Syamaguchi 945d659b7f1Syamaguchi rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 946d659b7f1Syamaguchi rump_server_add_iface $SOCK_REMOTE vlan0 947d659b7f1Syamaguchi 948d659b7f1Syamaguchi macaddr=$(get_macaddr $SOCK_LOCAL shmif1) 949d659b7f1Syamaguchi 950d659b7f1Syamaguchi export RUMP_SERVER=$SOCK_REMOTE 951d659b7f1Syamaguchi $atf_ifconfig vlan0 vlan 1 vlanif shmif0 952d659b7f1Syamaguchi $atf_ifconfig shmif0 up 953d659b7f1Syamaguchi $atf_ifconfig vlan0 inet $IP_REMOTE0/24 954d659b7f1Syamaguchi $atf_ifconfig vlan0 up 955d659b7f1Syamaguchi $atf_ifconfig -w 10 956d659b7f1Syamaguchi $atf_arp -s $IP_LOCAL0 $macaddr 957d659b7f1Syamaguchi 958d659b7f1Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 959d659b7f1Syamaguchi $atf_ifconfig bridge0 mtu 1496 960d659b7f1Syamaguchi # 961d659b7f1Syamaguchi # When vlan IF is PROMISC, the parent is also PROMISC 962d659b7f1Syamaguchi # 963d659b7f1Syamaguchi $atf_ifconfig vlan0 vlan 1 vlanif shmif0 964d659b7f1Syamaguchi $atf_ifconfig shmif0 up 965d659b7f1Syamaguchi $atf_ifconfig vlan0 up 966d659b7f1Syamaguchi 967d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 968d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 969d659b7f1Syamaguchi 970d659b7f1Syamaguchi $atf_brconfig bridge0 add vlan0 971d659b7f1Syamaguchi $atf_ifconfig bridge0 up 972d659b7f1Syamaguchi atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0 973d659b7f1Syamaguchi atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 974d659b7f1Syamaguchi 975d659b7f1Syamaguchi $atf_ifconfig bridge0 down 976d659b7f1Syamaguchi $atf_brconfig bridge0 delete vlan0 977d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 978d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 979d659b7f1Syamaguchi $atf_ifconfig vlan0 -vlanif 980d659b7f1Syamaguchi 981d659b7f1Syamaguchi # 982d659b7f1Syamaguchi # drop unicast packets that is not for the host 983d659b7f1Syamaguchi # 984d659b7f1Syamaguchi $atf_ifconfig vlan0 vlan 1 vlanif shmif0 985d659b7f1Syamaguchi $atf_ifconfig -w 10 986d659b7f1Syamaguchi 987*cf12f019Syamaguchi atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile shmif0 988d659b7f1Syamaguchi 989d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 990d659b7f1Syamaguchi atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 991d659b7f1Syamaguchi atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0 992d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'input:.*errors' \ 993d659b7f1Syamaguchi rump.ifconfig -v vlan0 994d659b7f1Syamaguchi 995d659b7f1Syamaguchi export RUMP_SERVER=$SOCK_REMOTE 996d659b7f1Syamaguchi atf_check -s not-exit:0 -o ignore -e ignore \ 997d659b7f1Syamaguchi rump.ping -c 3 -i 0.2 $IP_LOCAL0 998d659b7f1Syamaguchi 999d659b7f1Syamaguchi export RUMP_SERVER=$SOCK_LOCAL 1000d659b7f1Syamaguchi atf_check -s exit:0 -o match:'input:.*errors' \ 1001d659b7f1Syamaguchi rump.ifconfig -v vlan0 1002d659b7f1Syamaguchi 1003*cf12f019Syamaguchi atf_check -s exit:0 kill -TERM $(cat $pidfile) 1004d659b7f1Syamaguchi sleep 2 1005d659b7f1Syamaguchi 1006d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 1007d659b7f1Syamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 100852b7dd9eSyamaguchi $atf_ifconfig vlan0 -vlanif 100952b7dd9eSyamaguchi 101052b7dd9eSyamaguchi # 101152b7dd9eSyamaguchi # clear IFF_PROMISC after bpf_detach called from ether_ifdetach 101252b7dd9eSyamaguchi # 101352b7dd9eSyamaguchi $atf_ifconfig vlan0 vlan 1 vlanif shmif0 101452b7dd9eSyamaguchi $atf_ifconfig vlan0 up 101552b7dd9eSyamaguchi 1016*cf12f019Syamaguchi atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile vlan0 101752b7dd9eSyamaguchi 101852b7dd9eSyamaguchi atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0 101952b7dd9eSyamaguchi atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 102052b7dd9eSyamaguchi 102152b7dd9eSyamaguchi $atf_ifconfig vlan0 -vlanif 102252b7dd9eSyamaguchi 102352b7dd9eSyamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 102452b7dd9eSyamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 102552b7dd9eSyamaguchi 1026*cf12f019Syamaguchi atf_check -s exit:0 kill -TERM $(cat $pidfile) 1027*cf12f019Syamaguchi sleep 2 102852b7dd9eSyamaguchi atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 1029d659b7f1Syamaguchi} 1030d659b7f1Syamaguchi 1031d659b7f1Syamaguchivlan_promisc_cleanup() 1032d659b7f1Syamaguchi{ 1033d659b7f1Syamaguchi 1034d659b7f1Syamaguchi $DEBUG && dump 1035d659b7f1Syamaguchi cleanup 1036d659b7f1Syamaguchi} 1037d659b7f1Syamaguchi 1038d8b2128bSozaki-ratf_init_test_cases() 1039d8b2128bSozaki-r{ 1040d8b2128bSozaki-r 1041d8b2128bSozaki-r atf_add_test_case vlan_create_destroy 1042d8b2128bSozaki-r atf_add_test_case vlan_basic 1043d2674664Syamaguchi atf_add_test_case vlan_auto_follow_mtu 1044d04fb9baSozaki-r atf_add_test_case vlan_vlanid 1045d04fb9baSozaki-r atf_add_test_case vlan_configs 1046039773a0Sozaki-r atf_add_test_case vlan_bridge 10477a5814c3Syamaguchi atf_add_test_case vlan_multicast 1048d659b7f1Syamaguchi atf_add_test_case vlan_promisc 1049d04fb9baSozaki-r 1050d04fb9baSozaki-r atf_add_test_case vlan_create_destroy6 1051d04fb9baSozaki-r atf_add_test_case vlan_basic6 1052d2674664Syamaguchi atf_add_test_case vlan_auto_follow_mtu6 1053d04fb9baSozaki-r atf_add_test_case vlan_vlanid6 1054d04fb9baSozaki-r atf_add_test_case vlan_configs6 1055039773a0Sozaki-r atf_add_test_case vlan_bridge6 10567a5814c3Syamaguchi atf_add_test_case vlan_multicast6 1057d8b2128bSozaki-r} 1058