1 1.27 ozaki # $NetBSD: t_vlan.sh,v 1.27 2025/03/18 07:58:09 ozaki-r Exp $ 2 1.1 ozaki # 3 1.1 ozaki # Copyright (c) 2016 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 BUS=bus 29 1.1 ozaki SOCK_LOCAL=unix://commsock1 30 1.1 ozaki SOCK_REMOTE=unix://commsock2 31 1.2 ozaki IP_LOCAL0=10.0.0.1 32 1.2 ozaki IP_LOCAL1=10.0.1.1 33 1.2 ozaki IP_REMOTE0=10.0.0.2 34 1.2 ozaki IP_REMOTE1=10.0.1.2 35 1.10 yamaguch IP_MCADDR0=224.0.0.10 36 1.16 yamaguch IP6_LOCAL0=fc00::1 37 1.2 ozaki IP6_LOCAL1=fc00:1::1 38 1.16 yamaguch IP6_REMOTE0=fc00::2 39 1.2 ozaki IP6_REMOTE1=fc00:1::2 40 1.10 yamaguch IP6_MCADDR0=ff11::10 41 1.10 yamaguch ETH_IP_MCADDR0=01:00:5e:00:00:0a 42 1.10 yamaguch ETH_IP6_MCADDR0=33:33:00:00:00:10 43 1.1 ozaki 44 1.1 ozaki DEBUG=${DEBUG:-false} 45 1.1 ozaki 46 1.2 ozaki vlan_create_destroy_body_common() 47 1.2 ozaki { 48 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 49 1.13 ozaki 50 1.2 ozaki export RUMP_SERVER=${SOCK_LOCAL} 51 1.2 ozaki 52 1.13 ozaki $atf_ifconfig vlan0 create 53 1.13 ozaki $atf_ifconfig vlan0 destroy 54 1.8 ozaki 55 1.13 ozaki $atf_ifconfig vlan0 create 56 1.13 ozaki $atf_ifconfig vlan0 up 57 1.13 ozaki $atf_ifconfig vlan0 down 58 1.13 ozaki $atf_ifconfig vlan0 destroy 59 1.13 ozaki 60 1.13 ozaki $atf_ifconfig shmif0 create 61 1.13 ozaki $atf_ifconfig vlan0 create 62 1.13 ozaki $atf_ifconfig vlan0 vlan 1 vlanif shmif0 63 1.13 ozaki $atf_ifconfig vlan0 up 64 1.13 ozaki $atf_ifconfig vlan0 destroy 65 1.2 ozaki 66 1.2 ozaki # more than one vlan interface with a same parent interface 67 1.13 ozaki $atf_ifconfig shmif1 create 68 1.13 ozaki $atf_ifconfig vlan0 create 69 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 70 1.13 ozaki $atf_ifconfig vlan1 create 71 1.13 ozaki $atf_ifconfig vlan1 vlan 11 vlanif shmif0 72 1.2 ozaki 73 1.2 ozaki # more than one interface with another parent interface 74 1.13 ozaki $atf_ifconfig vlan2 create 75 1.13 ozaki $atf_ifconfig vlan2 vlan 12 vlanif shmif1 76 1.13 ozaki $atf_ifconfig vlan3 create 77 1.13 ozaki $atf_ifconfig vlan3 vlan 13 vlanif shmif1 78 1.13 ozaki $atf_ifconfig shmif0 destroy 79 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan0 80 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan1 81 1.2 ozaki atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan2 82 1.2 ozaki atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan3 83 1.13 ozaki $atf_ifconfig vlan0 destroy 84 1.13 ozaki $atf_ifconfig vlan1 destroy 85 1.13 ozaki $atf_ifconfig vlan2 destroy 86 1.13 ozaki $atf_ifconfig vlan3 destroy 87 1.2 ozaki 88 1.2 ozaki } 89 1.2 ozaki 90 1.26 ozaki test_create_destroy() 91 1.1 ozaki { 92 1.1 ozaki rump_server_start $SOCK_LOCAL vlan 93 1.1 ozaki 94 1.2 ozaki vlan_create_destroy_body_common 95 1.2 ozaki } 96 1.1 ozaki 97 1.26 ozaki test_create_destroy6() 98 1.2 ozaki { 99 1.2 ozaki 100 1.2 ozaki rump_server_start $SOCK_LOCAL vlan netinet6 101 1.2 ozaki 102 1.2 ozaki vlan_create_destroy_body_common 103 1.2 ozaki } 104 1.2 ozaki 105 1.2 ozaki vlan_basic_body_common() 106 1.1 ozaki { 107 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 108 1.2 ozaki local outfile=./out 109 1.2 ozaki local af=inet 110 1.2 ozaki local prefix=24 111 1.2 ozaki local local0=$IP_LOCAL0 112 1.2 ozaki local remote0=$IP_REMOTE0 113 1.2 ozaki local ping_cmd="rump.ping -n -w 1 -c 1" 114 1.2 ozaki 115 1.2 ozaki if [ x"$1" = x"inet6" ]; then 116 1.2 ozaki af="inet6" 117 1.2 ozaki prefix=64 118 1.2 ozaki local0=$IP6_LOCAL0 119 1.2 ozaki remote0=$IP6_REMOTE0 120 1.2 ozaki ping_cmd="rump.ping6 -n -c 1" 121 1.2 ozaki fi 122 1.1 ozaki 123 1.1 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 124 1.1 ozaki rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 125 1.1 ozaki 126 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 127 1.13 ozaki $atf_ifconfig shmif0 up 128 1.1 ozaki export RUMP_SERVER=$SOCK_REMOTE 129 1.13 ozaki $atf_ifconfig shmif0 up 130 1.1 ozaki 131 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 132 1.13 ozaki $atf_ifconfig vlan0 create 133 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 134 1.13 ozaki $atf_ifconfig vlan0 $af $local0/$prefix 135 1.13 ozaki $atf_ifconfig vlan0 up 136 1.13 ozaki $atf_ifconfig -w 10 137 1.1 ozaki 138 1.1 ozaki export RUMP_SERVER=$SOCK_REMOTE 139 1.13 ozaki $atf_ifconfig vlan0 create 140 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 141 1.13 ozaki $atf_ifconfig vlan0 $af $remote0/$prefix 142 1.13 ozaki $atf_ifconfig vlan0 up 143 1.13 ozaki $atf_ifconfig -w 10 144 1.1 ozaki 145 1.2 ozaki extract_new_packets $BUS > $outfile 146 1.2 ozaki 147 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 148 1.2 ozaki atf_check -s exit:0 -o ignore $ping_cmd $remote0 149 1.2 ozaki 150 1.2 ozaki extract_new_packets $BUS > $outfile 151 1.2 ozaki atf_check -s exit:0 -o match:'vlan 10' cat $outfile 152 1.2 ozaki 153 1.13 ozaki $atf_ifconfig vlan0 -vlanif 154 1.13 ozaki $atf_ifconfig vlan0 vlan 20 vlanif shmif0 155 1.13 ozaki $atf_ifconfig vlan0 $af $local0/$prefix 156 1.13 ozaki $atf_ifconfig vlan0 up 157 1.13 ozaki $atf_ifconfig -w 10 158 1.2 ozaki 159 1.2 ozaki extract_new_packets $BUS > $outfile 160 1.2 ozaki atf_check -s not-exit:0 -o ignore $ping_cmd $remote0 161 1.2 ozaki 162 1.2 ozaki extract_new_packets $BUS > $outfile 163 1.2 ozaki atf_check -s exit:0 -o match:'vlan 20' cat $outfile 164 1.3 knakahar 165 1.3 knakahar export RUMP_SERVER=$SOCK_LOCAL 166 1.13 ozaki $atf_ifconfig vlan0 -vlanif 167 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 168 1.13 ozaki $atf_ifconfig vlan0 $af $local0/$prefix 169 1.13 ozaki $atf_ifconfig vlan0 up 170 1.13 ozaki $atf_ifconfig -w 10 171 1.3 knakahar 172 1.3 knakahar atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0 173 1.3 knakahar atf_check -s exit:0 -o ignore $ping_cmd $remote0 174 1.3 knakahar rump.ifconfig -v vlan0 > $outfile 175 1.3 knakahar 176 1.3 knakahar atf_check -s exit:0 -o not-match:' 0 packets' cat $outfile 177 1.3 knakahar atf_check -s exit:0 -o not-match:' 0 bytes' cat $outfile 178 1.2 ozaki } 179 1.2 ozaki 180 1.26 ozaki test_basic() 181 1.2 ozaki { 182 1.2 ozaki rump_server_start $SOCK_LOCAL vlan 183 1.2 ozaki rump_server_start $SOCK_REMOTE vlan 184 1.2 ozaki 185 1.2 ozaki vlan_basic_body_common inet 186 1.2 ozaki 187 1.1 ozaki } 188 1.1 ozaki 189 1.26 ozaki test_basic6() 190 1.2 ozaki { 191 1.2 ozaki rump_server_start $SOCK_LOCAL vlan netinet6 192 1.2 ozaki rump_server_start $SOCK_REMOTE vlan netinet6 193 1.2 ozaki 194 1.2 ozaki vlan_basic_body_common inet6 195 1.2 ozaki } 196 1.2 ozaki 197 1.16 yamaguch vlan_auto_follow_mtu_body_common() 198 1.16 yamaguch { 199 1.16 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 200 1.16 yamaguch local outfile=./out 201 1.16 yamaguch local af=inet 202 1.16 yamaguch local prefix=24 203 1.16 yamaguch local local0=$IP_LOCAL0 204 1.16 yamaguch local remote0=$IP_REMOTE0 205 1.16 yamaguch local ping_cmd="rump.ping -D -n -w 1 -c 1" 206 1.16 yamaguch local mtu=1500 207 1.16 yamaguch local vlan_mtu=`expr $mtu - 4` 208 1.16 yamaguch # ipv4 header=20bytes, icmp header=8bytes 209 1.16 yamaguch local padding=`expr $vlan_mtu - 20 - 8` 210 1.16 yamaguch local over_padding=`expr $vlan_mtu - 20 - 8 + 1` 211 1.16 yamaguch local nonfrag_msg="$local0 > $remote0: ICMP echo request" 212 1.16 yamaguch # unused for ipv4 213 1.16 yamaguch local frag_msg="" 214 1.16 yamaguch 215 1.16 yamaguch if [ x"$1" = x"inet6" ]; then 216 1.16 yamaguch af="inet6" 217 1.16 yamaguch prefix=64 218 1.16 yamaguch local0=$IP6_LOCAL0 219 1.16 yamaguch remote0=$IP6_REMOTE0 220 1.16 yamaguch # ipv6 header=40bytes, icmpv6 header=8bytes 221 1.16 yamaguch padding=`expr $vlan_mtu - 40 - 8` 222 1.16 yamaguch over_padding=`expr $vlan_mtu - 40 - 8 + 1` 223 1.16 yamaguch ping_cmd="rump.ping6 -mm -n -c 1 -i 1" 224 1.16 yamaguch nonfrag_msg="$local0 > $remote0: ICMP6, echo request" 225 1.16 yamaguch frag_msg="$local0 > $remote0: frag .* ICMP6, echo request" 226 1.16 yamaguch fi 227 1.16 yamaguch 228 1.16 yamaguch rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 229 1.16 yamaguch rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 230 1.16 yamaguch 231 1.16 yamaguch export RUMP_SERVER=$SOCK_LOCAL 232 1.16 yamaguch $atf_ifconfig shmif0 up 233 1.16 yamaguch export RUMP_SERVER=$SOCK_REMOTE 234 1.16 yamaguch $atf_ifconfig shmif0 up 235 1.16 yamaguch 236 1.16 yamaguch export RUMP_SERVER=$SOCK_LOCAL 237 1.16 yamaguch $atf_ifconfig vlan0 create 238 1.16 yamaguch 239 1.16 yamaguch # since upper bound of shmif's mtu is 1500, 240 1.16 yamaguch # so we lower vlan's mtu instead of raising shmif's. 241 1.16 yamaguch # to do this, we change the interface's parameter 242 1.16 yamaguch # such as ND_IFINFO(ifp)->maxmtu that is changed by SIOCSIFMTU. 243 1.16 yamaguch 244 1.16 yamaguch # $atf_config shmif0 mtu 1600 245 1.16 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif shmif0 246 1.16 yamaguch $atf_ifconfig vlan0 mtu 1400 247 1.16 yamaguch $atf_ifconfig vlan0 -vlanif shmif0 248 1.16 yamaguch 249 1.16 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif shmif0 250 1.16 yamaguch $atf_ifconfig vlan0 $af $local0/$prefix 251 1.16 yamaguch $atf_ifconfig vlan0 up 252 1.16 yamaguch $atf_ifconfig -w 10 253 1.16 yamaguch 254 1.16 yamaguch export RUMP_SERVER=$SOCK_REMOTE 255 1.16 yamaguch $atf_ifconfig vlan0 create 256 1.16 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif shmif0 257 1.16 yamaguch $atf_ifconfig vlan0 $af $remote0/$prefix 258 1.16 yamaguch $atf_ifconfig vlan0 up 259 1.16 yamaguch $atf_ifconfig -w 10 260 1.16 yamaguch 261 1.16 yamaguch extract_new_packets $BUS > $outfile 262 1.16 yamaguch export RUMP_SERVER=$SOCK_LOCAL 263 1.16 yamaguch 264 1.16 yamaguch atf_check -s exit:0 -o ignore $ping_cmd -s $padding $remote0 265 1.16 yamaguch extract_new_packets $BUS > $outfile 266 1.16 yamaguch atf_check -s exit:0 -o match:"$nonfrag_msg" cat $outfile 267 1.16 yamaguch 268 1.16 yamaguch if [ x"$1" = x"inet6" ]; then 269 1.16 yamaguch atf_check -s exit:0 -o ignore $ping_cmd -s $over_padding $remote0 270 1.16 yamaguch extract_new_packets $BUS > $outfile 271 1.16 yamaguch atf_check -s exit:0 -o match:"$frag_msg" cat $outfile 272 1.16 yamaguch else 273 1.16 yamaguch atf_check -s not-exit:0 -o ignore -e match:"Message too long" \ 274 1.16 yamaguch $ping_cmd -s $over_padding $remote0 275 1.16 yamaguch fi 276 1.16 yamaguch } 277 1.16 yamaguch 278 1.26 ozaki test_auto_follow_mtu() 279 1.16 yamaguch { 280 1.16 yamaguch rump_server_start $SOCK_LOCAL vlan 281 1.16 yamaguch rump_server_start $SOCK_REMOTE vlan 282 1.16 yamaguch 283 1.16 yamaguch vlan_auto_follow_mtu_body_common inet 284 1.16 yamaguch } 285 1.16 yamaguch 286 1.26 ozaki test_auto_follow_mtu6() 287 1.16 yamaguch { 288 1.16 yamaguch rump_server_start $SOCK_LOCAL vlan netinet6 289 1.16 yamaguch rump_server_start $SOCK_REMOTE vlan netinet6 290 1.16 yamaguch 291 1.16 yamaguch vlan_auto_follow_mtu_body_common inet6 292 1.16 yamaguch } 293 1.16 yamaguch 294 1.2 ozaki vlanid_config_and_ping() 295 1.2 ozaki { 296 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 297 1.2 ozaki local vlanid=$1 298 1.2 ozaki shift 299 1.2 ozaki 300 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 301 1.13 ozaki $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 302 1.13 ozaki $atf_ifconfig vlan0 $IP_LOCAL0/24 303 1.13 ozaki $atf_ifconfig vlan0 up 304 1.2 ozaki 305 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 306 1.13 ozaki $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 307 1.13 ozaki $atf_ifconfig vlan0 $IP_REMOTE0/24 308 1.13 ozaki $atf_ifconfig vlan0 up 309 1.2 ozaki 310 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 311 1.2 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 $IP_REMOTE0 312 1.13 ozaki $atf_ifconfig vlan0 -vlanif 313 1.2 ozaki 314 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 315 1.13 ozaki $atf_ifconfig vlan0 -vlanif 316 1.2 ozaki } 317 1.2 ozaki 318 1.2 ozaki vlanid_config_and_ping6() 319 1.2 ozaki { 320 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 321 1.2 ozaki local vlanid=$1 322 1.2 ozaki shift 323 1.2 ozaki 324 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 325 1.13 ozaki $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 326 1.13 ozaki $atf_ifconfig vlan0 inet6 $IP6_LOCAL0/64 327 1.13 ozaki $atf_ifconfig vlan0 up 328 1.2 ozaki 329 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 330 1.13 ozaki $atf_ifconfig vlan0 vlan $vlanid vlanif shmif0 331 1.13 ozaki $atf_ifconfig vlan0 inet6 $IP6_REMOTE0/64 332 1.13 ozaki $atf_ifconfig vlan0 up 333 1.2 ozaki 334 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 335 1.2 ozaki atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 $IP6_REMOTE0 336 1.13 ozaki $atf_ifconfig vlan0 -vlanif 337 1.2 ozaki 338 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 339 1.13 ozaki $atf_ifconfig vlan0 -vlanif 340 1.2 ozaki } 341 1.2 ozaki 342 1.2 ozaki vlan_vlanid_body_common() 343 1.2 ozaki { 344 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 345 1.2 ozaki local af=inet 346 1.2 ozaki local prefix=24 347 1.2 ozaki local sysctl_param="net.inet.ip.dad_count=0" 348 1.2 ozaki local ping_cmd="rump.ping -n -w 1 -c 1" 349 1.2 ozaki local config_and_ping=vlanid_config_and_ping 350 1.2 ozaki local local0=$IP_LOCAL0 351 1.2 ozaki local local1=$IP_LOCAL1 352 1.2 ozaki local remote0=$IP_REMOTE0 353 1.2 ozaki local remote1=$IP_REMOTE1 354 1.2 ozaki 355 1.2 ozaki if [ x"$1" = x"inet6" ]; then 356 1.2 ozaki af=inet6 357 1.2 ozaki prefix=64 358 1.2 ozaki sysctl_param="net.inet6.ip6.dad_count=0" 359 1.2 ozaki ping_cmd="rump.ping6 -n -c 1" 360 1.2 ozaki config_and_ping=vlanid_config_and_ping6 361 1.2 ozaki local0=$IP6_LOCAL0 362 1.2 ozaki local1=$IP6_LOCAL1 363 1.2 ozaki remote0=$IP6_REMOTE0 364 1.2 ozaki remote1=$IP6_REMOTE1 365 1.2 ozaki fi 366 1.2 ozaki 367 1.2 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 368 1.2 ozaki rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 369 1.2 ozaki 370 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 371 1.2 ozaki atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 372 1.13 ozaki $atf_ifconfig shmif0 up 373 1.13 ozaki $atf_ifconfig vlan0 create 374 1.2 ozaki 375 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 376 1.2 ozaki atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 377 1.13 ozaki $atf_ifconfig shmif0 up 378 1.13 ozaki $atf_ifconfig vlan0 create 379 1.2 ozaki 380 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 381 1.14 ozaki atf_check -s not-exit:0 -e match:"^usage: rump.ifconfig" \ 382 1.2 ozaki rump.ifconfig vlan0 vlan -1 vlanif shmif0 383 1.2 ozaki 384 1.6 kre # $config_and_ping 0 # reserved vlan id 385 1.2 ozaki $config_and_ping 1 386 1.2 ozaki $config_and_ping 4094 387 1.6 kre # $config_and_ping 4095 #reserved vlan id 388 1.2 ozaki 389 1.7 kre if [ "${RANDOM:-0}" != "${RANDOM:-0}" ] 390 1.7 kre then 391 1.7 kre for TAG in $(( ${RANDOM:-0} % 4092 + 2 )) \ 392 1.7 kre $(( ${RANDOM:-0} % 4092 + 2 )) \ 393 1.7 kre $(( ${RANDOM:-0} % 4092 + 2 )) 394 1.7 kre do 395 1.7 kre $config_and_ping "${TAG}" 396 1.7 kre done 397 1.7 kre fi 398 1.7 kre 399 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 400 1.7 kre for TAG in 0 4095 4096 $((4096*4 + 1)) 65536 65537 $((65536 + 4095)) 401 1.7 kre do 402 1.7 kre atf_check -s not-exit:0 -e not-empty \ 403 1.7 kre rump.ifconfig vlan0 vlan "${TAG}" vlanif shmif0 404 1.7 kre done 405 1.2 ozaki 406 1.13 ozaki $atf_ifconfig vlan0 vlan 1 vlanif shmif0 407 1.14 ozaki atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \ 408 1.2 ozaki rump.ifconfig vlan0 vlan 2 vlanif shmif0 409 1.2 ozaki 410 1.14 ozaki atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \ 411 1.2 ozaki rump.ifconfig vlan0 vlan 1 vlanif shmif1 412 1.2 ozaki 413 1.13 ozaki $atf_ifconfig vlan0 -vlanif 414 1.14 ozaki atf_check -s not-exit:0 -e match:"Invalid argument" \ 415 1.15 ozaki rump.ifconfig vlan0 $af $local0/$prefix 416 1.2 ozaki 417 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 418 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 419 1.13 ozaki $atf_ifconfig vlan0 $af $local0/$prefix 420 1.13 ozaki $atf_ifconfig vlan0 up 421 1.13 ozaki $atf_ifconfig vlan1 create 422 1.13 ozaki $atf_ifconfig vlan1 vlan 11 vlanif shmif0 423 1.13 ozaki $atf_ifconfig vlan1 $af $local1/$prefix 424 1.13 ozaki $atf_ifconfig vlan1 up 425 1.2 ozaki 426 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 427 1.13 ozaki $atf_ifconfig vlan0 -vlanif 428 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 429 1.13 ozaki $atf_ifconfig vlan0 $af $remote0/$prefix 430 1.13 ozaki $atf_ifconfig vlan0 up 431 1.13 ozaki $atf_ifconfig vlan1 create 432 1.13 ozaki $atf_ifconfig vlan1 vlan 11 vlanif shmif0 433 1.13 ozaki $atf_ifconfig vlan1 $af $remote1/$prefix 434 1.13 ozaki $atf_ifconfig vlan1 up 435 1.2 ozaki 436 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 437 1.2 ozaki atf_check -s exit:0 -o ignore $ping_cmd $remote0 438 1.2 ozaki atf_check -s exit:0 -o ignore $ping_cmd $remote1 439 1.2 ozaki } 440 1.2 ozaki 441 1.26 ozaki test_vlanid() 442 1.2 ozaki { 443 1.2 ozaki rump_server_start $SOCK_LOCAL vlan 444 1.2 ozaki rump_server_start $SOCK_REMOTE vlan 445 1.2 ozaki 446 1.2 ozaki vlan_vlanid_body_common inet 447 1.2 ozaki } 448 1.2 ozaki 449 1.26 ozaki test_vlanid6() 450 1.2 ozaki { 451 1.2 ozaki rump_server_start $SOCK_LOCAL vlan netinet6 452 1.2 ozaki rump_server_start $SOCK_REMOTE vlan netinet6 453 1.2 ozaki 454 1.2 ozaki vlan_vlanid_body_common inet6 455 1.2 ozaki } 456 1.2 ozaki 457 1.2 ozaki vlan_configs_body_common() 458 1.2 ozaki { 459 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 460 1.13 ozaki 461 1.2 ozaki export RUMP_SERVER=${SOCK_LOCAL} 462 1.2 ozaki 463 1.13 ozaki $atf_ifconfig shmif0 create 464 1.13 ozaki $atf_ifconfig shmif1 create 465 1.12 knakahar # unset U/L bit to detect a bug fixed by if_vlan.c:r1.132 466 1.13 ozaki $atf_ifconfig shmif0 link b0:a0:75:00:01:00 active 467 1.13 ozaki $atf_ifconfig shmif1 link b0:a0:75:00:01:01 active 468 1.13 ozaki $atf_ifconfig vlan0 create 469 1.2 ozaki 470 1.19 yamaguch atf_check -s exit:0 -o match:'status: +down' \ 471 1.19 yamaguch rump.ifconfig vlan0 472 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 473 1.13 ozaki $atf_ifconfig vlan0 -vlanif 474 1.19 yamaguch atf_check -s exit:0 -o match:'status: +down' \ 475 1.19 yamaguch rump.ifconfig vlan0 476 1.2 ozaki 477 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 478 1.13 ozaki $atf_ifconfig vlan0 -vlanif shmif0 479 1.2 ozaki 480 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 481 1.14 ozaki atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1 482 1.14 ozaki atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2 483 1.2 ozaki 484 1.13 ozaki $atf_ifconfig vlan0 -vlanif 485 1.2 ozaki 486 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 487 1.2 ozaki atf_check -s exit:0 -e match:'Invalid argument' \ 488 1.2 ozaki rump.ifconfig vlan0 mtu 1497 489 1.13 ozaki $atf_ifconfig vlan0 mtu 1496 490 1.13 ozaki $atf_ifconfig vlan0 mtu 42 491 1.2 ozaki atf_check -s exit:0 -e match:'Invalid argument' \ 492 1.2 ozaki rump.ifconfig vlan0 mtu 41 493 1.13 ozaki $atf_ifconfig vlan0 -vlanif 494 1.4 msaitoh 495 1.13 ozaki $atf_ifconfig vlan1 create 496 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 497 1.4 msaitoh atf_check -s not-exit:0 -e match:'File exists' \ 498 1.4 msaitoh rump.ifconfig vlan1 vlan 10 vlanif shmif0 499 1.13 ozaki $atf_ifconfig vlan1 vlan 10 vlanif shmif1 500 1.5 msaitoh 501 1.13 ozaki $atf_ifconfig vlan1 -vlanif shmif1 502 1.13 ozaki $atf_ifconfig vlan1 vlan 10 vlanif shmif1 503 1.5 msaitoh 504 1.13 ozaki $atf_ifconfig vlan0 -vlanif shmif0 505 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 506 1.2 ozaki } 507 1.2 ozaki 508 1.26 ozaki test_configs() 509 1.2 ozaki { 510 1.2 ozaki 511 1.2 ozaki rump_server_start $SOCK_LOCAL vlan 512 1.2 ozaki 513 1.2 ozaki vlan_configs_body_common 514 1.2 ozaki 515 1.2 ozaki } 516 1.2 ozaki 517 1.26 ozaki test_configs6() 518 1.2 ozaki { 519 1.2 ozaki rump_server_start $SOCK_LOCAL vlan netinet6 520 1.2 ozaki 521 1.2 ozaki vlan_configs_body_common 522 1.2 ozaki } 523 1.2 ozaki 524 1.9 ozaki vlan_bridge_body_common() 525 1.9 ozaki { 526 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 527 1.18 yamaguch local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig" 528 1.9 ozaki 529 1.9 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 530 1.9 ozaki 531 1.9 ozaki export RUMP_SERVER=$SOCK_LOCAL 532 1.13 ozaki $atf_ifconfig shmif0 up 533 1.9 ozaki 534 1.13 ozaki $atf_ifconfig vlan0 create 535 1.9 ozaki $DEBUG && rump.ifconfig vlan0 536 1.9 ozaki 537 1.13 ozaki $atf_ifconfig bridge0 create 538 1.18 yamaguch $atf_ifconfig bridge0 up 539 1.18 yamaguch 540 1.18 yamaguch # 541 1.18 yamaguch # Add vlan to bridge member 542 1.18 yamaguch # 543 1.18 yamaguch $atf_ifconfig bridge0 mtu 1496 544 1.22 yamaguch 545 1.22 yamaguch # vlan0 can not add to bridge member 546 1.22 yamaguch # because it is not an ethernet device 547 1.22 yamaguch atf_check -s not-exit:0 -e match:'Invalid argument' \ 548 1.22 yamaguch $HIJACKING /sbin/brconfig bridge0 add vlan0 549 1.22 yamaguch 550 1.22 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif shmif0 551 1.22 yamaguch $atf_ifconfig vlan0 up 552 1.18 yamaguch atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 553 1.18 yamaguch 554 1.22 yamaguch # vlan0 becomes an ethernet device 555 1.22 yamaguch # after attaching the parent interface 556 1.18 yamaguch $atf_brconfig bridge0 add vlan0 557 1.22 yamaguch $DEBUG && $HIJACKING /sbin/brconfig bridge0 558 1.22 yamaguch 559 1.18 yamaguch $atf_brconfig bridge0 delete vlan0 560 1.18 yamaguch 561 1.22 yamaguch $atf_brconfig bridge0 add vlan0 562 1.22 yamaguch $atf_ifconfig vlan0 -vlanif 563 1.22 yamaguch atf_check -s exit:0 -o not-match:'vlan0' \ 564 1.22 yamaguch $HIJACKING /sbin/brconfig bridge0 565 1.22 yamaguch atf_check -s not-exit:0 -e match:'No such' \ 566 1.22 yamaguch $HIJACKING /sbin/brconfig bridge0 delete vlan0 567 1.22 yamaguch 568 1.18 yamaguch # 569 1.18 yamaguch # decrease MTU on adding to bridge member 570 1.18 yamaguch # 571 1.18 yamaguch $atf_ifconfig bridge0 mtu 1495 572 1.22 yamaguch $atf_ifconfig vlan0 vlan 10 vlanif shmif0 573 1.22 yamaguch $atf_ifconfig vlan0 up 574 1.18 yamaguch atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 575 1.18 yamaguch 576 1.18 yamaguch $atf_brconfig bridge0 add vlan0 577 1.23 yamaguch $DEBUG && $HIJACKING /sbin/brconfig bridge0 578 1.18 yamaguch atf_check -s exit:0 -o match:'mtu 1495' rump.ifconfig vlan0 579 1.18 yamaguch $atf_brconfig bridge0 delete vlan0 580 1.18 yamaguch 581 1.18 yamaguch # 582 1.18 yamaguch # increase MTU on adding to bridge member 583 1.18 yamaguch # 584 1.13 ozaki $atf_ifconfig bridge0 mtu 1496 585 1.18 yamaguch $atf_ifconfig vlan0 mtu 1495 586 1.18 yamaguch $atf_brconfig bridge0 add vlan0 587 1.18 yamaguch 588 1.23 yamaguch $DEBUG && $HIJACKING /sbin/brconfig bridge0 589 1.18 yamaguch atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0 590 1.18 yamaguch $atf_brconfig bridge0 delete vlan0 591 1.9 ozaki 592 1.18 yamaguch $atf_ifconfig bridge0 mtu 1497 593 1.18 yamaguch atf_check -s not-exit:0 -o ignore -e ignore \ 594 1.23 yamaguch $HIJACKING /sbin/brconfig bridge0 add vlan0 595 1.18 yamaguch 596 1.18 yamaguch # 597 1.18 yamaguch # Destroy a vlan interface that is bridge member 598 1.18 yamaguch # 599 1.18 yamaguch $atf_ifconfig bridge0 mtu 1496 600 1.18 yamaguch $atf_brconfig bridge0 add vlan0 601 1.13 ozaki $atf_ifconfig vlan0 destroy 602 1.9 ozaki 603 1.9 ozaki rump_server_destroy_ifaces 604 1.9 ozaki } 605 1.9 ozaki 606 1.26 ozaki test_bridge() 607 1.9 ozaki { 608 1.9 ozaki 609 1.9 ozaki rump_server_start $SOCK_LOCAL vlan bridge 610 1.9 ozaki vlan_bridge_body_common 611 1.9 ozaki } 612 1.9 ozaki 613 1.26 ozaki test_bridge6() 614 1.9 ozaki { 615 1.9 ozaki 616 1.9 ozaki rump_server_start $SOCK_LOCAL vlan netinet6 bridge 617 1.9 ozaki vlan_bridge_body_common 618 1.9 ozaki } 619 1.9 ozaki 620 1.10 yamaguch vlan_multicast_body_common() 621 1.10 yamaguch { 622 1.13 ozaki local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 623 1.10 yamaguch local af="inet" 624 1.10 yamaguch local local0=$IP_LOCAL0 625 1.10 yamaguch local local1=$IP_LOCAL1 626 1.10 yamaguch local mcaddr=$IP_MCADDR0 627 1.10 yamaguch local eth_mcaddr=$ETH_IP_MCADDR0 628 1.10 yamaguch local prefix=24 629 1.10 yamaguch local siocXmulti="$(atf_get_srcdir)/siocXmulti" 630 1.13 ozaki local atf_siocXmulti="atf_check -s exit:0 $HIJACKING $siocXmulti" 631 1.10 yamaguch 632 1.10 yamaguch if [ x"$1" = x"inet6" ]; then 633 1.10 yamaguch af="inet6" 634 1.10 yamaguch prefix=64 635 1.10 yamaguch local0=$IP6_LOCAL0 636 1.10 yamaguch local1=$IP6_LOCAL1 637 1.10 yamaguch mcaddr=$IP6_MCADDR0 638 1.10 yamaguch eth_mcaddr=$ETH_IP6_MCADDR0 639 1.10 yamaguch fi 640 1.10 yamaguch 641 1.10 yamaguch export RUMP_SERVER=$SOCK_LOCAL 642 1.10 yamaguch 643 1.13 ozaki $atf_ifconfig shmif0 create 644 1.13 ozaki $atf_ifconfig shmif0 linkstr net0 up 645 1.13 ozaki $atf_ifconfig vlan0 create 646 1.13 ozaki $atf_ifconfig vlan0 vlan 10 vlanif shmif0 647 1.13 ozaki $atf_ifconfig vlan0 $af $local0/$prefix up 648 1.13 ozaki $atf_ifconfig vlan1 create 649 1.13 ozaki $atf_ifconfig vlan1 vlan 11 vlanif shmif0 650 1.13 ozaki $atf_ifconfig vlan1 $af $local1/$prefix up 651 1.13 ozaki $atf_ifconfig -w 10 652 1.10 yamaguch 653 1.10 yamaguch # check the initial state 654 1.10 yamaguch atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 655 1.10 yamaguch 656 1.10 yamaguch # add a multicast address 657 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 658 1.10 yamaguch atf_check -s exit:0 -o match:"$eth_mcaddr" $HIJACKING ifmcstat 659 1.10 yamaguch 660 1.10 yamaguch # delete the address 661 1.13 ozaki $atf_siocXmulti del vlan0 $mcaddr 662 1.10 yamaguch atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 663 1.10 yamaguch 664 1.10 yamaguch # delete a non-existing address 665 1.14 ozaki atf_check -s not-exit:0 -e match:"Invalid argument" \ 666 1.14 ozaki $HIJACKING $siocXmulti del vlan0 $mcaddr 667 1.10 yamaguch 668 1.10 yamaguch # add an address to different interfaces 669 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 670 1.13 ozaki $atf_siocXmulti add vlan1 $mcaddr 671 1.17 nisimura atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 2" $HIJACKING ifmcstat 672 1.13 ozaki $atf_siocXmulti del vlan0 $mcaddr 673 1.10 yamaguch 674 1.10 yamaguch # delete the address with invalid interface 675 1.11 yamaguch atf_check -s not-exit:0 -e match:"Invalid argument" \ 676 1.10 yamaguch $HIJACKING $siocXmulti del vlan0 $mcaddr 677 1.10 yamaguch 678 1.13 ozaki $atf_siocXmulti del vlan1 $mcaddr 679 1.10 yamaguch 680 1.10 yamaguch # add and delete a same address more than once 681 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 682 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 683 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 684 1.17 nisimura atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 3" $HIJACKING ifmcstat 685 1.13 ozaki $atf_siocXmulti del vlan0 $mcaddr 686 1.13 ozaki $atf_siocXmulti del vlan0 $mcaddr 687 1.13 ozaki $atf_siocXmulti del vlan0 $mcaddr 688 1.10 yamaguch atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 689 1.10 yamaguch 690 1.10 yamaguch # delete all address added to parent device when remove 691 1.10 yamaguch # the config of parent interface 692 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 693 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 694 1.13 ozaki $atf_siocXmulti add vlan0 $mcaddr 695 1.13 ozaki $atf_ifconfig vlan0 -vlanif shmif0 696 1.10 yamaguch atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat 697 1.10 yamaguch } 698 1.10 yamaguch 699 1.26 ozaki test_multicast() 700 1.10 yamaguch { 701 1.10 yamaguch rump_server_start $SOCK_LOCAL vlan 702 1.10 yamaguch 703 1.10 yamaguch vlan_multicast_body_common inet 704 1.10 yamaguch } 705 1.10 yamaguch 706 1.26 ozaki test_multicast6() 707 1.10 yamaguch { 708 1.10 yamaguch rump_server_start $SOCK_LOCAL vlan netinet6 709 1.10 yamaguch 710 1.10 yamaguch vlan_multicast_body_common inet6 711 1.10 yamaguch } 712 1.10 yamaguch 713 1.26 ozaki test_promisc() 714 1.20 yamaguch { 715 1.20 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 716 1.20 yamaguch local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig" 717 1.20 yamaguch local atf_arp="atf_check -s exit:0 rump.arp" 718 1.20 yamaguch local bpfopen="$HIJACKING $(atf_get_srcdir)/bpfopen" 719 1.24 yamaguch bpfopen="$bpfopen -dv -b /rump/dev/bpf" 720 1.24 yamaguch local pidfile="./bpfopen.pid" 721 1.20 yamaguch local macaddr="" 722 1.20 yamaguch 723 1.20 yamaguch rump_server_bpf_start $SOCK_LOCAL vlan bridge 724 1.20 yamaguch rump_server_start $SOCK_REMOTE vlan 725 1.20 yamaguch 726 1.20 yamaguch rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 727 1.20 yamaguch rump_server_add_iface $SOCK_LOCAL shmif1 728 1.20 yamaguch rump_server_add_iface $SOCK_LOCAL vlan0 729 1.20 yamaguch rump_server_add_iface $SOCK_LOCAL vlan1 730 1.20 yamaguch rump_server_add_iface $SOCK_LOCAL bridge0 731 1.20 yamaguch 732 1.20 yamaguch rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 733 1.20 yamaguch rump_server_add_iface $SOCK_REMOTE vlan0 734 1.20 yamaguch 735 1.20 yamaguch macaddr=$(get_macaddr $SOCK_LOCAL shmif1) 736 1.20 yamaguch 737 1.20 yamaguch export RUMP_SERVER=$SOCK_REMOTE 738 1.20 yamaguch $atf_ifconfig vlan0 vlan 1 vlanif shmif0 739 1.20 yamaguch $atf_ifconfig shmif0 up 740 1.20 yamaguch $atf_ifconfig vlan0 inet $IP_REMOTE0/24 741 1.20 yamaguch $atf_ifconfig vlan0 up 742 1.20 yamaguch $atf_ifconfig -w 10 743 1.20 yamaguch $atf_arp -s $IP_LOCAL0 $macaddr 744 1.20 yamaguch 745 1.20 yamaguch export RUMP_SERVER=$SOCK_LOCAL 746 1.20 yamaguch $atf_ifconfig bridge0 mtu 1496 747 1.20 yamaguch # 748 1.20 yamaguch # When vlan IF is PROMISC, the parent is also PROMISC 749 1.20 yamaguch # 750 1.20 yamaguch $atf_ifconfig vlan0 vlan 1 vlanif shmif0 751 1.20 yamaguch $atf_ifconfig shmif0 up 752 1.20 yamaguch $atf_ifconfig vlan0 up 753 1.20 yamaguch 754 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 755 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 756 1.20 yamaguch 757 1.20 yamaguch $atf_brconfig bridge0 add vlan0 758 1.20 yamaguch $atf_ifconfig bridge0 up 759 1.20 yamaguch atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0 760 1.20 yamaguch atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 761 1.20 yamaguch 762 1.20 yamaguch $atf_ifconfig bridge0 down 763 1.20 yamaguch $atf_brconfig bridge0 delete vlan0 764 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 765 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 766 1.20 yamaguch $atf_ifconfig vlan0 -vlanif 767 1.20 yamaguch 768 1.20 yamaguch # 769 1.20 yamaguch # drop unicast packets that is not for the host 770 1.20 yamaguch # 771 1.20 yamaguch $atf_ifconfig vlan0 vlan 1 vlanif shmif0 772 1.20 yamaguch $atf_ifconfig -w 10 773 1.20 yamaguch 774 1.24 yamaguch atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile shmif0 775 1.20 yamaguch 776 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 777 1.20 yamaguch atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 778 1.20 yamaguch atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0 779 1.20 yamaguch atf_check -s exit:0 -o not-match:'input:.*errors' \ 780 1.20 yamaguch rump.ifconfig -v vlan0 781 1.20 yamaguch 782 1.20 yamaguch export RUMP_SERVER=$SOCK_REMOTE 783 1.20 yamaguch atf_check -s not-exit:0 -o ignore -e ignore \ 784 1.20 yamaguch rump.ping -c 3 -i 0.2 $IP_LOCAL0 785 1.20 yamaguch 786 1.20 yamaguch export RUMP_SERVER=$SOCK_LOCAL 787 1.20 yamaguch atf_check -s exit:0 -o match:'input:.*errors' \ 788 1.20 yamaguch rump.ifconfig -v vlan0 789 1.20 yamaguch 790 1.24 yamaguch atf_check -s exit:0 kill -TERM $(cat $pidfile) 791 1.20 yamaguch sleep 2 792 1.20 yamaguch 793 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 794 1.20 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 795 1.21 yamaguch $atf_ifconfig vlan0 -vlanif 796 1.21 yamaguch 797 1.21 yamaguch # 798 1.21 yamaguch # clear IFF_PROMISC after bpf_detach called from ether_ifdetach 799 1.21 yamaguch # 800 1.21 yamaguch $atf_ifconfig vlan0 vlan 1 vlanif shmif0 801 1.21 yamaguch $atf_ifconfig vlan0 up 802 1.21 yamaguch 803 1.24 yamaguch atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile vlan0 804 1.21 yamaguch 805 1.21 yamaguch atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0 806 1.21 yamaguch atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0 807 1.21 yamaguch 808 1.21 yamaguch $atf_ifconfig vlan0 -vlanif 809 1.21 yamaguch 810 1.21 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 811 1.21 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0 812 1.21 yamaguch 813 1.24 yamaguch atf_check -s exit:0 kill -TERM $(cat $pidfile) 814 1.24 yamaguch sleep 2 815 1.21 yamaguch atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0 816 1.20 yamaguch } 817 1.20 yamaguch 818 1.25 yamaguch vlan_l2tp_body_common() 819 1.25 yamaguch { 820 1.25 yamaguch local atf_ifconfig="atf_check -s exit:0 rump.ifconfig" 821 1.25 yamaguch 822 1.25 yamaguch local af=$1 823 1.25 yamaguch local ping_cmd="rump.ping -c 1" 824 1.25 yamaguch local pfx=24 825 1.25 yamaguch local local0=$IP_LOCAL0 826 1.25 yamaguch local local1=$IP_LOCAL1 827 1.25 yamaguch local remote0=$IP_REMOTE0 828 1.25 yamaguch local remote1=$IP_REMOTE1 829 1.25 yamaguch local sysctl_param="net.inet.ip.dad_count=0" 830 1.25 yamaguch local vid0=10 831 1.25 yamaguch local vid1=11 832 1.25 yamaguch 833 1.25 yamaguch local l2tp_laddr=10.222.222.1 834 1.25 yamaguch local l2tp_lsession=1001 835 1.25 yamaguch local l2tp_raddr=10.222.222.2 836 1.25 yamaguch local l2tp_rsession=1002 837 1.25 yamaguch 838 1.25 yamaguch if [ x"$af" = x"inet6" ]; then 839 1.25 yamaguch ping_cmd="rump.ping6 -c 1" 840 1.25 yamaguch rumplib="netinet6" 841 1.25 yamaguch pfx=64 842 1.25 yamaguch local0=$IP6_LOCAL0 843 1.25 yamaguch local1=$IP6_LOCAL1 844 1.25 yamaguch remote0=$IP6_REMOTE0 845 1.25 yamaguch remote1=$IP6_REMOTE1 846 1.25 yamaguch sysctl_param="net.inet6.ip6.dad_count=0" 847 1.25 yamaguch fi 848 1.25 yamaguch 849 1.25 yamaguch rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 850 1.25 yamaguch rump_server_add_iface $SOCK_LOCAL l2tp0 851 1.25 yamaguch rump_server_add_iface $SOCK_LOCAL vlan0 852 1.25 yamaguch rump_server_add_iface $SOCK_LOCAL vlan1 853 1.25 yamaguch 854 1.25 yamaguch rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 855 1.25 yamaguch rump_server_add_iface $SOCK_REMOTE l2tp0 856 1.25 yamaguch rump_server_add_iface $SOCK_REMOTE vlan0 857 1.25 yamaguch rump_server_add_iface $SOCK_REMOTE vlan1 858 1.25 yamaguch 859 1.25 yamaguch export RUMP_SERVER=$SOCK_LOCAL 860 1.25 yamaguch atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 861 1.25 yamaguch $atf_ifconfig shmif0 $l2tp_laddr/24 862 1.25 yamaguch $atf_ifconfig l2tp0 tunnel $l2tp_laddr $l2tp_raddr 863 1.25 yamaguch $atf_ifconfig l2tp0 session $l2tp_lsession $l2tp_rsession 864 1.25 yamaguch $atf_ifconfig l2tp0 up 865 1.25 yamaguch 866 1.25 yamaguch export RUMP_SERVER=$SOCK_REMOTE 867 1.25 yamaguch atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param 868 1.25 yamaguch $atf_ifconfig shmif0 $l2tp_raddr/24 869 1.25 yamaguch $atf_ifconfig l2tp0 tunnel $l2tp_raddr $l2tp_laddr 870 1.25 yamaguch $atf_ifconfig l2tp0 session $l2tp_rsession $l2tp_lsession 871 1.25 yamaguch $atf_ifconfig l2tp0 up 872 1.25 yamaguch 873 1.25 yamaguch # configure vlans on l2tp(4) 874 1.25 yamaguch export RUMP_SERVER=$SOCK_LOCAL 875 1.25 yamaguch $atf_ifconfig vlan0 vlan $vid0 vlanif l2tp0 876 1.25 yamaguch $atf_ifconfig vlan0 $af $local0/$pfx 877 1.25 yamaguch $atf_ifconfig vlan1 vlan $vid1 vlanif l2tp0 878 1.25 yamaguch $atf_ifconfig vlan1 $af $local1/$pfx 879 1.25 yamaguch export RUMP_SERVER=$SOCK_REMOTE 880 1.25 yamaguch $atf_ifconfig vlan0 vlan $vid0 vlanif l2tp0 881 1.25 yamaguch $atf_ifconfig vlan0 $af $remote0/$pfx 882 1.25 yamaguch $atf_ifconfig vlan1 vlan $vid1 vlanif l2tp0 883 1.25 yamaguch $atf_ifconfig vlan1 $af $remote1/$pfx 884 1.25 yamaguch 885 1.25 yamaguch # test for VLAN frame transfer 886 1.25 yamaguch export RUMP_SERVER=$SOCK_LOCAL 887 1.25 yamaguch atf_check -s exit:0 -o ignore $ping_cmd $remote0 888 1.25 yamaguch atf_check -s exit:0 -o ignore $ping_cmd $remote1 889 1.25 yamaguch 890 1.25 yamaguch # unconfig vlans 891 1.25 yamaguch export RUMP_SERVER=$SOCK_LOCAL 892 1.25 yamaguch $atf_ifconfig vlan0 -vlanif 893 1.25 yamaguch export RUMP_SERVER=$SOCK_REMOTE 894 1.25 yamaguch $atf_ifconfig vlan0 -vlanif 895 1.25 yamaguch 896 1.25 yamaguch # remove l2tp0 that has vlan1 897 1.25 yamaguch export RUMP_SERVER=$SOCK_LOCAL 898 1.25 yamaguch $atf_ifconfig l2tp0 destroy 899 1.25 yamaguch export RUMP_SERVER=$SOCK_REMOTE 900 1.25 yamaguch $atf_ifconfig l2tp0 destroy 901 1.25 yamaguch } 902 1.25 yamaguch 903 1.26 ozaki test_l2tp() 904 1.25 yamaguch { 905 1.25 yamaguch 906 1.25 yamaguch rump_server_start $SOCK_LOCAL vlan l2tp 907 1.25 yamaguch rump_server_start $SOCK_REMOTE vlan l2tp 908 1.25 yamaguch 909 1.25 yamaguch vlan_l2tp_body_common "inet" 910 1.25 yamaguch } 911 1.25 yamaguch 912 1.26 ozaki test_l2tp6() 913 1.25 yamaguch { 914 1.25 yamaguch 915 1.25 yamaguch rump_server_start $SOCK_LOCAL vlan l2tp netinet6 916 1.25 yamaguch rump_server_start $SOCK_REMOTE vlan l2tp netinet6 917 1.25 yamaguch 918 1.25 yamaguch vlan_l2tp_body_common "inet6" 919 1.25 yamaguch } 920 1.25 yamaguch 921 1.27 ozaki check_link_state() 922 1.27 ozaki { 923 1.27 ozaki local ifname=$1 924 1.27 ozaki local state=$2 925 1.27 ozaki 926 1.27 ozaki atf_check -s exit:0 -o match:"linkstate: $state" $HIJACKING rump.ifconfig -v $ifname 927 1.27 ozaki } 928 1.27 ozaki 929 1.27 ozaki create_interfaces() 930 1.27 ozaki { 931 1.27 ozaki 932 1.27 ozaki atf_check -s exit:0 rump.ifconfig vlan0 create 933 1.27 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 934 1.27 ozaki } 935 1.27 ozaki 936 1.27 ozaki destroy_interfaces() 937 1.27 ozaki { 938 1.27 ozaki 939 1.27 ozaki atf_check -s exit:0 rump.ifconfig vlan0 destroy 940 1.27 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy 941 1.27 ozaki } 942 1.27 ozaki 943 1.27 ozaki test_link_state_sync() 944 1.27 ozaki { 945 1.27 ozaki local ifconfig="atf_check -s exit:0 rump.ifconfig" 946 1.27 ozaki 947 1.27 ozaki rump_server_start $SOCK_LOCAL vlan 948 1.27 ozaki 949 1.27 ozaki export RUMP_SERVER=${SOCK_LOCAL} 950 1.27 ozaki 951 1.27 ozaki ## Alone 952 1.27 ozaki $ifconfig vlan0 create 953 1.27 ozaki # The default state is "down" 954 1.27 ozaki check_link_state vlan0 down 955 1.27 ozaki $ifconfig vlan0 up 956 1.27 ozaki check_link_state vlan0 down 957 1.27 ozaki $ifconfig vlan0 down 958 1.27 ozaki check_link_state vlan0 down 959 1.27 ozaki $ifconfig vlan0 destroy 960 1.27 ozaki 961 1.27 ozaki ## "unknown" parent 962 1.27 ozaki create_interfaces 963 1.27 ozaki # shmif0 is "unknown" until ifconfig linkstr 964 1.27 ozaki check_link_state shmif0 unknown 965 1.27 ozaki $ifconfig vlan0 vlan 1 vlanif shmif0 966 1.27 ozaki # vlan0 syncs with the parent 967 1.27 ozaki check_link_state vlan0 unknown 968 1.27 ozaki $ifconfig vlan0 up 969 1.27 ozaki check_link_state vlan0 unknown 970 1.27 ozaki $ifconfig vlan0 -vlanif 971 1.27 ozaki # Back to the default 972 1.27 ozaki check_link_state vlan0 down 973 1.27 ozaki destroy_interfaces 974 1.27 ozaki 975 1.27 ozaki ## "up" parent 976 1.27 ozaki create_interfaces 977 1.27 ozaki $ifconfig shmif0 linkstr $BUS 978 1.27 ozaki check_link_state shmif0 up 979 1.27 ozaki $ifconfig vlan0 vlan 1 vlanif shmif0 980 1.27 ozaki # vlan0 syncs with the parent 981 1.27 ozaki check_link_state vlan0 up 982 1.27 ozaki $ifconfig vlan0 -vlanif 983 1.27 ozaki # Back to the default 984 1.27 ozaki check_link_state vlan0 down 985 1.27 ozaki destroy_interfaces 986 1.27 ozaki 987 1.27 ozaki ## Change parent's link state to "up", "down", then "up" 988 1.27 ozaki create_interfaces 989 1.27 ozaki $ifconfig shmif0 linkstr $BUS 990 1.27 ozaki check_link_state shmif0 up 991 1.27 ozaki $ifconfig vlan0 vlan 1 vlanif shmif0 992 1.27 ozaki check_link_state vlan0 up 993 1.27 ozaki # Down the parent 994 1.27 ozaki $ifconfig shmif0 media none 995 1.27 ozaki check_link_state shmif0 down 996 1.27 ozaki # vlan0 syncs with the parent 997 1.27 ozaki check_link_state vlan0 down 998 1.27 ozaki # Up the parent again 999 1.27 ozaki $ifconfig shmif0 media auto 1000 1.27 ozaki # vlan0 syncs with the parent 1001 1.27 ozaki check_link_state vlan0 up 1002 1.27 ozaki $ifconfig vlan0 -vlanif 1003 1.27 ozaki # Back to the default 1004 1.27 ozaki check_link_state vlan0 down 1005 1.27 ozaki destroy_interfaces 1006 1.27 ozaki } 1007 1.27 ozaki 1008 1.26 ozaki add_test() 1009 1.25 yamaguch { 1010 1.26 ozaki local name=$1 1011 1.26 ozaki local desc="$2" 1012 1.25 yamaguch 1013 1.26 ozaki atf_test_case "vlan_${name}" cleanup 1014 1.26 ozaki eval "vlan_${name}_head() { 1015 1.26 ozaki atf_set descr \"${desc}\" 1016 1.26 ozaki atf_set require.progs rump_server 1017 1.26 ozaki } 1018 1.26 ozaki vlan_${name}_body() { 1019 1.26 ozaki test_${name} 1020 1.26 ozaki } 1021 1.26 ozaki vlan_${name}_cleanup() { 1022 1.26 ozaki \$DEBUG && dump 1023 1.26 ozaki cleanup 1024 1.26 ozaki }" 1025 1.26 ozaki atf_add_test_case "vlan_${name}" 1026 1.25 yamaguch } 1027 1.25 yamaguch 1028 1.1 ozaki atf_init_test_cases() 1029 1.1 ozaki { 1030 1.1 ozaki 1031 1.26 ozaki add_test create_destroy "tests of creation and deletion of vlan interface" 1032 1.26 ozaki add_test basic "tests of communications over vlan interfaces" 1033 1.26 ozaki add_test auto_follow_mtu "tests of setting vlan mtu using IPv4" 1034 1.26 ozaki add_test vlanid "tests of configuration for vlan id" 1035 1.26 ozaki add_test configs "tests of configuration except vlan id" 1036 1.26 ozaki add_test bridge "tests of vlan interfaces with bridges (IPv4)" 1037 1.26 ozaki add_test multicast "tests of multicast address adding and deleting" 1038 1.26 ozaki add_test l2tp "tests of vlan(IPv4) over l2tp(IPv4)" 1039 1.26 ozaki 1040 1.26 ozaki add_test create_destroy6 "tests of creation and deletion of vlan interface with IPv6" 1041 1.26 ozaki add_test basic6 "tests of communications over vlan interfaces using IPv6" 1042 1.26 ozaki add_test auto_follow_mtu6 "tests of setting vlan mtu using IPv6" 1043 1.26 ozaki add_test vlanid6 "tests of configuration for vlan id using IPv6" 1044 1.26 ozaki add_test configs6 "tests of configuration except vlan id using IPv6" 1045 1.26 ozaki add_test bridge6 "tests of vlan interfaces with bridges (IPv6)" 1046 1.26 ozaki add_test multicast6 "tests of multicast address adding and deleting with IPv6" 1047 1.26 ozaki add_test l2tp6 "tests of vlan(IPv6) over l2tp(IPv4)" 1048 1.26 ozaki 1049 1.26 ozaki add_test promisc "tests of IFF_PROMISC of vlan" 1050 1.27 ozaki add_test link_state_sync "tests of link state sync with its parent" 1051 1.1 ozaki } 1052