Home | History | Annotate | Line # | Download | only in if_vlan
t_vlan.sh revision 1.15.2.1
      1  1.15.2.1    martin #	$NetBSD: t_vlan.sh,v 1.15.2.1 2019/11/13 12:50:30 martin 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.15.2.1    martin IP6_LOCAL0=fc00::1
     37       1.2     ozaki IP6_LOCAL1=fc00:1::1
     38  1.15.2.1    martin 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.1     ozaki atf_test_case vlan_create_destroy cleanup
     91       1.1     ozaki vlan_create_destroy_head()
     92       1.1     ozaki {
     93       1.1     ozaki 
     94       1.1     ozaki 	atf_set "descr" "tests of creation and deletion of vlan interface"
     95       1.1     ozaki 	atf_set "require.progs" "rump_server"
     96       1.1     ozaki }
     97       1.1     ozaki 
     98       1.1     ozaki vlan_create_destroy_body()
     99       1.1     ozaki {
    100       1.1     ozaki 	rump_server_start $SOCK_LOCAL vlan
    101       1.1     ozaki 
    102       1.2     ozaki 	vlan_create_destroy_body_common
    103       1.2     ozaki }
    104       1.1     ozaki 
    105       1.1     ozaki 
    106       1.1     ozaki vlan_create_destroy_cleanup()
    107       1.1     ozaki {
    108       1.1     ozaki 
    109       1.1     ozaki 	$DEBUG && dump
    110       1.1     ozaki 	cleanup
    111       1.1     ozaki }
    112       1.1     ozaki 
    113       1.2     ozaki atf_test_case vlan_create_destroy6 cleanup
    114       1.2     ozaki vlan_create_destroy6_head()
    115       1.1     ozaki {
    116       1.1     ozaki 
    117       1.2     ozaki 	atf_set "descr" "tests of creation and deletion of vlan interface with IPv6"
    118       1.1     ozaki 	atf_set "require.progs" "rump_server"
    119       1.1     ozaki }
    120       1.1     ozaki 
    121       1.2     ozaki vlan_create_destroy6_body()
    122       1.2     ozaki {
    123       1.2     ozaki 
    124       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    125       1.2     ozaki 
    126       1.2     ozaki 	vlan_create_destroy_body_common
    127       1.2     ozaki }
    128       1.2     ozaki 
    129       1.2     ozaki vlan_create_destroy6_cleanup()
    130       1.2     ozaki {
    131       1.2     ozaki 
    132       1.2     ozaki 	$DEBUG && dump
    133       1.2     ozaki 	cleanup
    134       1.2     ozaki }
    135       1.2     ozaki 
    136       1.2     ozaki vlan_basic_body_common()
    137       1.1     ozaki {
    138      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    139       1.2     ozaki 	local outfile=./out
    140       1.2     ozaki 	local af=inet
    141       1.2     ozaki 	local prefix=24
    142       1.2     ozaki 	local local0=$IP_LOCAL0
    143       1.2     ozaki 	local remote0=$IP_REMOTE0
    144       1.2     ozaki 	local ping_cmd="rump.ping -n -w 1 -c 1"
    145       1.2     ozaki 
    146       1.2     ozaki 	if [ x"$1" = x"inet6" ]; then
    147       1.2     ozaki 		af="inet6"
    148       1.2     ozaki 		prefix=64
    149       1.2     ozaki 		local0=$IP6_LOCAL0
    150       1.2     ozaki 		remote0=$IP6_REMOTE0
    151       1.2     ozaki 		ping_cmd="rump.ping6 -n -c 1"
    152       1.2     ozaki 	fi
    153       1.1     ozaki 
    154       1.1     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    155       1.1     ozaki 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    156       1.1     ozaki 
    157       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    158      1.13     ozaki 	$atf_ifconfig shmif0 up
    159       1.1     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    160      1.13     ozaki 	$atf_ifconfig shmif0 up
    161       1.1     ozaki 
    162       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    163      1.13     ozaki 	$atf_ifconfig vlan0 create
    164      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    165      1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix
    166      1.13     ozaki 	$atf_ifconfig vlan0 up
    167      1.13     ozaki 	$atf_ifconfig -w 10
    168       1.1     ozaki 
    169       1.1     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    170      1.13     ozaki 	$atf_ifconfig vlan0 create
    171      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    172      1.13     ozaki 	$atf_ifconfig vlan0 $af $remote0/$prefix
    173      1.13     ozaki 	$atf_ifconfig vlan0 up
    174      1.13     ozaki 	$atf_ifconfig -w 10
    175       1.1     ozaki 
    176       1.2     ozaki 	extract_new_packets $BUS > $outfile
    177       1.2     ozaki 
    178       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    179       1.2     ozaki 	atf_check -s exit:0 -o ignore $ping_cmd $remote0
    180       1.2     ozaki 
    181       1.2     ozaki 	extract_new_packets $BUS > $outfile
    182       1.2     ozaki 	atf_check -s exit:0 -o match:'vlan 10' cat $outfile
    183       1.2     ozaki 
    184      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    185      1.13     ozaki 	$atf_ifconfig vlan0 vlan 20 vlanif shmif0
    186      1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix
    187      1.13     ozaki 	$atf_ifconfig vlan0 up
    188      1.13     ozaki 	$atf_ifconfig -w 10
    189       1.2     ozaki 
    190       1.2     ozaki 	extract_new_packets $BUS > $outfile
    191       1.2     ozaki 	atf_check -s not-exit:0 -o ignore $ping_cmd $remote0
    192       1.2     ozaki 
    193       1.2     ozaki 	extract_new_packets $BUS > $outfile
    194       1.2     ozaki 	atf_check -s exit:0 -o match:'vlan 20' cat $outfile
    195       1.3  knakahar 
    196       1.3  knakahar 	export RUMP_SERVER=$SOCK_LOCAL
    197      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    198      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    199      1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix
    200      1.13     ozaki 	$atf_ifconfig vlan0 up
    201      1.13     ozaki 	$atf_ifconfig -w 10
    202       1.3  knakahar 
    203       1.3  knakahar 	atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0
    204       1.3  knakahar 	atf_check -s exit:0 -o ignore $ping_cmd $remote0
    205       1.3  knakahar 	rump.ifconfig -v vlan0 > $outfile
    206       1.3  knakahar 
    207       1.3  knakahar 	atf_check -s exit:0 -o not-match:' 0 packets' cat $outfile
    208       1.3  knakahar 	atf_check -s exit:0 -o not-match:' 0 bytes' cat $outfile
    209       1.2     ozaki }
    210       1.2     ozaki 
    211       1.2     ozaki atf_test_case vlan_basic cleanup
    212       1.2     ozaki vlan_basic_head()
    213       1.2     ozaki {
    214       1.2     ozaki 
    215       1.2     ozaki 	atf_set "descr" "tests of communications over vlan interfaces"
    216       1.2     ozaki 	atf_set "require.progs" "rump_server"
    217       1.2     ozaki }
    218       1.2     ozaki 
    219       1.2     ozaki vlan_basic_body()
    220       1.2     ozaki {
    221       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    222       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan
    223       1.2     ozaki 
    224       1.2     ozaki 	vlan_basic_body_common inet
    225       1.2     ozaki 
    226       1.1     ozaki }
    227       1.1     ozaki 
    228       1.1     ozaki vlan_basic_cleanup()
    229       1.1     ozaki {
    230       1.1     ozaki 
    231       1.1     ozaki 	$DEBUG && dump
    232       1.1     ozaki 	cleanup
    233       1.1     ozaki }
    234       1.1     ozaki 
    235       1.2     ozaki atf_test_case vlan_basic6 cleanup
    236       1.2     ozaki vlan_basic6_head()
    237       1.2     ozaki {
    238       1.2     ozaki 
    239       1.2     ozaki 	atf_set "descr" "tests of communications over vlan interfaces using IPv6"
    240       1.2     ozaki 	atf_set "require.progs" "rump_server"
    241       1.2     ozaki }
    242       1.2     ozaki 
    243       1.2     ozaki vlan_basic6_body()
    244       1.2     ozaki {
    245       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    246       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan netinet6
    247       1.2     ozaki 
    248       1.2     ozaki 	vlan_basic_body_common inet6
    249       1.2     ozaki }
    250       1.2     ozaki 
    251       1.2     ozaki vlan_basic6_cleanup()
    252       1.2     ozaki {
    253       1.2     ozaki 
    254       1.2     ozaki 	$DEBUG && dump
    255       1.2     ozaki 	cleanup
    256       1.2     ozaki }
    257       1.2     ozaki 
    258  1.15.2.1    martin vlan_auto_follow_mtu_body_common()
    259  1.15.2.1    martin {
    260  1.15.2.1    martin 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    261  1.15.2.1    martin 	local outfile=./out
    262  1.15.2.1    martin 	local af=inet
    263  1.15.2.1    martin 	local prefix=24
    264  1.15.2.1    martin 	local local0=$IP_LOCAL0
    265  1.15.2.1    martin 	local remote0=$IP_REMOTE0
    266  1.15.2.1    martin 	local ping_cmd="rump.ping -D -n -w 1 -c 1"
    267  1.15.2.1    martin 	local mtu=1500
    268  1.15.2.1    martin 	local vlan_mtu=`expr $mtu - 4`
    269  1.15.2.1    martin 	# ipv4 header=20bytes, icmp header=8bytes
    270  1.15.2.1    martin 	local padding=`expr $vlan_mtu - 20 - 8`
    271  1.15.2.1    martin 	local over_padding=`expr $vlan_mtu - 20 - 8 + 1`
    272  1.15.2.1    martin 	local nonfrag_msg="$local0 > $remote0: ICMP echo request"
    273  1.15.2.1    martin 	# unused for ipv4
    274  1.15.2.1    martin 	local frag_msg=""
    275  1.15.2.1    martin 
    276  1.15.2.1    martin 	if [ x"$1" = x"inet6" ]; then
    277  1.15.2.1    martin 		af="inet6"
    278  1.15.2.1    martin 		prefix=64
    279  1.15.2.1    martin 		local0=$IP6_LOCAL0
    280  1.15.2.1    martin 		remote0=$IP6_REMOTE0
    281  1.15.2.1    martin 		# ipv6 header=40bytes, icmpv6 header=8bytes
    282  1.15.2.1    martin 		padding=`expr $vlan_mtu - 40 - 8`
    283  1.15.2.1    martin 		over_padding=`expr $vlan_mtu - 40 - 8 + 1`
    284  1.15.2.1    martin 		ping_cmd="rump.ping6 -mm -n -c 1 -i 1"
    285  1.15.2.1    martin 		nonfrag_msg="$local0 > $remote0: ICMP6, echo request"
    286  1.15.2.1    martin 		frag_msg="$local0 > $remote0: frag .* ICMP6, echo request"
    287  1.15.2.1    martin 	fi
    288  1.15.2.1    martin 
    289  1.15.2.1    martin 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    290  1.15.2.1    martin 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    291  1.15.2.1    martin 
    292  1.15.2.1    martin 	export RUMP_SERVER=$SOCK_LOCAL
    293  1.15.2.1    martin 	$atf_ifconfig shmif0 up
    294  1.15.2.1    martin 	export RUMP_SERVER=$SOCK_REMOTE
    295  1.15.2.1    martin 	$atf_ifconfig shmif0 up
    296  1.15.2.1    martin 
    297  1.15.2.1    martin 	export RUMP_SERVER=$SOCK_LOCAL
    298  1.15.2.1    martin 	$atf_ifconfig vlan0 create
    299  1.15.2.1    martin 
    300  1.15.2.1    martin 	# since upper bound of shmif's mtu is 1500,
    301  1.15.2.1    martin 	# so we lower vlan's mtu instead of raising shmif's.
    302  1.15.2.1    martin 	# to do this, we change the interface's parameter
    303  1.15.2.1    martin 	# such as ND_IFINFO(ifp)->maxmtu that is changed by SIOCSIFMTU.
    304  1.15.2.1    martin 
    305  1.15.2.1    martin 	# $atf_config shmif0 mtu 1600
    306  1.15.2.1    martin 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    307  1.15.2.1    martin 	$atf_ifconfig vlan0 mtu 1400
    308  1.15.2.1    martin 	$atf_ifconfig vlan0 -vlanif shmif0
    309  1.15.2.1    martin 
    310  1.15.2.1    martin 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    311  1.15.2.1    martin 	$atf_ifconfig vlan0 $af $local0/$prefix
    312  1.15.2.1    martin 	$atf_ifconfig vlan0 up
    313  1.15.2.1    martin 	$atf_ifconfig -w 10
    314  1.15.2.1    martin 
    315  1.15.2.1    martin 	export RUMP_SERVER=$SOCK_REMOTE
    316  1.15.2.1    martin 	$atf_ifconfig vlan0 create
    317  1.15.2.1    martin 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    318  1.15.2.1    martin 	$atf_ifconfig vlan0 $af $remote0/$prefix
    319  1.15.2.1    martin 	$atf_ifconfig vlan0 up
    320  1.15.2.1    martin 	$atf_ifconfig -w 10
    321  1.15.2.1    martin 
    322  1.15.2.1    martin 	extract_new_packets $BUS > $outfile
    323  1.15.2.1    martin 	export RUMP_SERVER=$SOCK_LOCAL
    324  1.15.2.1    martin 
    325  1.15.2.1    martin 	atf_check -s exit:0 -o ignore $ping_cmd -s $padding $remote0
    326  1.15.2.1    martin 	extract_new_packets $BUS > $outfile
    327  1.15.2.1    martin 	atf_check -s exit:0 -o match:"$nonfrag_msg" cat $outfile
    328  1.15.2.1    martin 
    329  1.15.2.1    martin 	if [ x"$1" = x"inet6" ]; then
    330  1.15.2.1    martin 		atf_check -s exit:0 -o ignore $ping_cmd -s $over_padding $remote0
    331  1.15.2.1    martin 		extract_new_packets $BUS > $outfile
    332  1.15.2.1    martin 		atf_check -s exit:0 -o match:"$frag_msg" cat $outfile
    333  1.15.2.1    martin 	else
    334  1.15.2.1    martin 		atf_check -s not-exit:0 -o ignore -e match:"Message too long" \
    335  1.15.2.1    martin 				$ping_cmd -s $over_padding $remote0
    336  1.15.2.1    martin 	fi
    337  1.15.2.1    martin }
    338  1.15.2.1    martin 
    339  1.15.2.1    martin atf_test_case vlan_auto_follow_mtu cleanup
    340  1.15.2.1    martin vlan_auto_follow_mtu_head()
    341  1.15.2.1    martin {
    342  1.15.2.1    martin 
    343  1.15.2.1    martin 	atf_set "descr" "tests of setting vlan mtu using IPv4"
    344  1.15.2.1    martin 	atf_set "require.progs" "rump_server"
    345  1.15.2.1    martin }
    346  1.15.2.1    martin 
    347  1.15.2.1    martin vlan_auto_follow_mtu_body()
    348  1.15.2.1    martin {
    349  1.15.2.1    martin 	rump_server_start $SOCK_LOCAL vlan
    350  1.15.2.1    martin 	rump_server_start $SOCK_REMOTE vlan
    351  1.15.2.1    martin 
    352  1.15.2.1    martin 	vlan_auto_follow_mtu_body_common inet
    353  1.15.2.1    martin }
    354  1.15.2.1    martin 
    355  1.15.2.1    martin vlan_auto_follow_mtu_cleanup()
    356  1.15.2.1    martin {
    357  1.15.2.1    martin 
    358  1.15.2.1    martin 	$DEBUG && dump
    359  1.15.2.1    martin 	cleanup
    360  1.15.2.1    martin }
    361  1.15.2.1    martin 
    362  1.15.2.1    martin atf_test_case vlan_auto_follow_mtu6 cleanup
    363  1.15.2.1    martin vlan_auto_follow_mtu6_head()
    364  1.15.2.1    martin {
    365  1.15.2.1    martin 
    366  1.15.2.1    martin 	atf_set "descr" "tests of setting vlan mtu using IPv6"
    367  1.15.2.1    martin 	atf_set "require.progs" "rump_server"
    368  1.15.2.1    martin }
    369  1.15.2.1    martin 
    370  1.15.2.1    martin vlan_auto_follow_mtu6_body()
    371  1.15.2.1    martin {
    372  1.15.2.1    martin 	rump_server_start $SOCK_LOCAL vlan netinet6
    373  1.15.2.1    martin 	rump_server_start $SOCK_REMOTE vlan netinet6
    374  1.15.2.1    martin 
    375  1.15.2.1    martin 	vlan_auto_follow_mtu_body_common inet6
    376  1.15.2.1    martin }
    377  1.15.2.1    martin 
    378  1.15.2.1    martin vlan_auto_follow_mtu6_cleanup()
    379  1.15.2.1    martin {
    380  1.15.2.1    martin 
    381  1.15.2.1    martin 	$DEBUG && dump
    382  1.15.2.1    martin 	cleanup
    383  1.15.2.1    martin }
    384  1.15.2.1    martin 
    385       1.2     ozaki vlanid_config_and_ping()
    386       1.2     ozaki {
    387      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    388       1.2     ozaki 	local vlanid=$1
    389       1.2     ozaki 	shift
    390       1.2     ozaki 
    391       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    392      1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    393      1.13     ozaki 	$atf_ifconfig vlan0 $IP_LOCAL0/24
    394      1.13     ozaki 	$atf_ifconfig vlan0 up
    395       1.2     ozaki 
    396       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    397      1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    398      1.13     ozaki 	$atf_ifconfig vlan0 $IP_REMOTE0/24
    399      1.13     ozaki 	$atf_ifconfig vlan0 up
    400       1.2     ozaki 
    401       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    402       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 $IP_REMOTE0
    403      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    404       1.2     ozaki 
    405       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    406      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    407       1.2     ozaki }
    408       1.2     ozaki 
    409       1.2     ozaki vlanid_config_and_ping6()
    410       1.2     ozaki {
    411      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    412       1.2     ozaki 	local vlanid=$1
    413       1.2     ozaki 	shift
    414       1.2     ozaki 
    415       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    416      1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    417      1.13     ozaki 	$atf_ifconfig vlan0 inet6 $IP6_LOCAL0/64
    418      1.13     ozaki 	$atf_ifconfig vlan0 up
    419       1.2     ozaki 
    420       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    421      1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    422      1.13     ozaki 	$atf_ifconfig vlan0 inet6 $IP6_REMOTE0/64
    423      1.13     ozaki 	$atf_ifconfig vlan0 up
    424       1.2     ozaki 
    425       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    426       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 $IP6_REMOTE0
    427      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    428       1.2     ozaki 
    429       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    430      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    431       1.2     ozaki }
    432       1.2     ozaki 
    433       1.2     ozaki vlan_vlanid_body_common()
    434       1.2     ozaki {
    435      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    436       1.2     ozaki 	local af=inet
    437       1.2     ozaki 	local prefix=24
    438       1.2     ozaki 	local sysctl_param="net.inet.ip.dad_count=0"
    439       1.2     ozaki 	local ping_cmd="rump.ping -n -w 1 -c 1"
    440       1.2     ozaki 	local config_and_ping=vlanid_config_and_ping
    441       1.2     ozaki 	local local0=$IP_LOCAL0
    442       1.2     ozaki 	local local1=$IP_LOCAL1
    443       1.2     ozaki 	local remote0=$IP_REMOTE0
    444       1.2     ozaki 	local remote1=$IP_REMOTE1
    445       1.2     ozaki 
    446       1.2     ozaki 	if [ x"$1" = x"inet6" ]; then
    447       1.2     ozaki 		af=inet6
    448       1.2     ozaki 		prefix=64
    449       1.2     ozaki 		sysctl_param="net.inet6.ip6.dad_count=0"
    450       1.2     ozaki 		ping_cmd="rump.ping6 -n -c 1"
    451       1.2     ozaki 		config_and_ping=vlanid_config_and_ping6
    452       1.2     ozaki 		local0=$IP6_LOCAL0
    453       1.2     ozaki 		local1=$IP6_LOCAL1
    454       1.2     ozaki 		remote0=$IP6_REMOTE0
    455       1.2     ozaki 		remote1=$IP6_REMOTE1
    456       1.2     ozaki 	fi
    457       1.2     ozaki 
    458       1.2     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    459       1.2     ozaki 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    460       1.2     ozaki 
    461       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    462       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param
    463      1.13     ozaki 	$atf_ifconfig shmif0 up
    464      1.13     ozaki 	$atf_ifconfig vlan0 create
    465       1.2     ozaki 
    466       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    467       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param
    468      1.13     ozaki 	$atf_ifconfig shmif0 up
    469      1.13     ozaki 	$atf_ifconfig vlan0 create
    470       1.2     ozaki 
    471       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    472      1.14     ozaki 	atf_check -s not-exit:0 -e match:"^usage: rump.ifconfig" \
    473       1.2     ozaki 	    rump.ifconfig vlan0 vlan -1 vlanif shmif0
    474       1.2     ozaki 
    475       1.6       kre 	# $config_and_ping 0 # reserved vlan id
    476       1.2     ozaki 	$config_and_ping 1
    477       1.2     ozaki 	$config_and_ping 4094
    478       1.6       kre 	# $config_and_ping 4095 #reserved vlan id
    479       1.2     ozaki 
    480       1.7       kre 	if [ "${RANDOM:-0}" != "${RANDOM:-0}" ]
    481       1.7       kre 	then
    482       1.7       kre 		for TAG in $(( ${RANDOM:-0} % 4092 + 2 )) \
    483       1.7       kre 			   $(( ${RANDOM:-0} % 4092 + 2 )) \
    484       1.7       kre 			   $(( ${RANDOM:-0} % 4092 + 2 ))
    485       1.7       kre 		do
    486       1.7       kre 			$config_and_ping "${TAG}"
    487       1.7       kre 		done
    488       1.7       kre 	fi
    489       1.7       kre 
    490       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    491       1.7       kre 	for TAG in 0 4095 4096 $((4096*4 + 1)) 65536 65537 $((65536 + 4095))
    492       1.7       kre 	do
    493       1.7       kre 		atf_check -s not-exit:0 -e not-empty \
    494       1.7       kre 		    rump.ifconfig vlan0 vlan "${TAG}" vlanif shmif0
    495       1.7       kre 	done
    496       1.2     ozaki 
    497      1.13     ozaki 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    498      1.14     ozaki 	atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \
    499       1.2     ozaki 	    rump.ifconfig vlan0 vlan 2 vlanif shmif0
    500       1.2     ozaki 
    501      1.14     ozaki 	atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \
    502       1.2     ozaki 	    rump.ifconfig vlan0 vlan 1 vlanif shmif1
    503       1.2     ozaki 
    504      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    505      1.14     ozaki 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    506      1.15     ozaki 	    rump.ifconfig vlan0 $af $local0/$prefix
    507       1.2     ozaki 
    508       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    509      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    510      1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix
    511      1.13     ozaki 	$atf_ifconfig vlan0 up
    512      1.13     ozaki 	$atf_ifconfig vlan1 create
    513      1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    514      1.13     ozaki 	$atf_ifconfig vlan1 $af $local1/$prefix
    515      1.13     ozaki 	$atf_ifconfig vlan1 up
    516       1.2     ozaki 
    517       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    518      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    519      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    520      1.13     ozaki 	$atf_ifconfig vlan0 $af $remote0/$prefix
    521      1.13     ozaki 	$atf_ifconfig vlan0 up
    522      1.13     ozaki 	$atf_ifconfig vlan1 create
    523      1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    524      1.13     ozaki 	$atf_ifconfig vlan1 $af $remote1/$prefix
    525      1.13     ozaki 	$atf_ifconfig vlan1 up
    526       1.2     ozaki 
    527       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    528       1.2     ozaki 	atf_check -s exit:0 -o ignore $ping_cmd $remote0
    529       1.2     ozaki 	atf_check -s exit:0 -o ignore $ping_cmd $remote1
    530       1.2     ozaki }
    531       1.2     ozaki 
    532       1.2     ozaki atf_test_case vlan_vlanid cleanup
    533       1.2     ozaki vlan_vlanid_head()
    534       1.2     ozaki {
    535       1.2     ozaki 
    536       1.2     ozaki 	atf_set "descr" "tests of configuration for vlan id"
    537       1.2     ozaki 	atf_set "require.progs" "rump_server"
    538       1.2     ozaki }
    539       1.2     ozaki 
    540       1.2     ozaki vlan_vlanid_body()
    541       1.2     ozaki {
    542       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    543       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan
    544       1.2     ozaki 
    545       1.2     ozaki 	vlan_vlanid_body_common inet
    546       1.2     ozaki }
    547       1.2     ozaki 
    548       1.2     ozaki vlan_vlanid_cleanup()
    549       1.2     ozaki {
    550       1.2     ozaki 
    551       1.2     ozaki 	$DEBUG && dump
    552       1.2     ozaki 	cleanup
    553       1.2     ozaki }
    554       1.2     ozaki 
    555       1.2     ozaki atf_test_case vlan_vlanid6 cleanup
    556       1.2     ozaki vlan_vlanid6_head()
    557       1.2     ozaki {
    558       1.2     ozaki 
    559       1.2     ozaki 	atf_set "descr" "tests of configuration for vlan id using IPv6"
    560       1.2     ozaki 	atf_set "require.progs" "rump_server"
    561       1.2     ozaki }
    562       1.2     ozaki 
    563       1.2     ozaki 
    564       1.2     ozaki vlan_vlanid6_body()
    565       1.2     ozaki {
    566       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    567       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan netinet6
    568       1.2     ozaki 
    569       1.2     ozaki 	vlan_vlanid_body_common inet6
    570       1.2     ozaki }
    571       1.2     ozaki 
    572       1.2     ozaki vlan_vlanid6_cleanup()
    573       1.2     ozaki {
    574       1.2     ozaki 
    575       1.2     ozaki 	$DEBUG && dump
    576       1.2     ozaki 	cleanup
    577       1.2     ozaki }
    578       1.2     ozaki 
    579       1.2     ozaki vlan_configs_body_common()
    580       1.2     ozaki {
    581      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    582      1.13     ozaki 
    583       1.2     ozaki 	export RUMP_SERVER=${SOCK_LOCAL}
    584       1.2     ozaki 
    585      1.13     ozaki 	$atf_ifconfig shmif0 create
    586      1.13     ozaki 	$atf_ifconfig shmif1 create
    587      1.12  knakahar 	# unset U/L bit to detect a bug fixed by if_vlan.c:r1.132
    588      1.13     ozaki 	$atf_ifconfig shmif0 link b0:a0:75:00:01:00 active
    589      1.13     ozaki 	$atf_ifconfig shmif1 link b0:a0:75:00:01:01 active
    590      1.13     ozaki 	$atf_ifconfig vlan0 create
    591       1.2     ozaki 
    592      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    593      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    594       1.2     ozaki 
    595      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    596      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    597       1.2     ozaki 
    598      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    599      1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1
    600      1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2
    601       1.2     ozaki 
    602      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    603       1.2     ozaki 
    604      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    605       1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    606       1.2     ozaki 	    rump.ifconfig vlan0 mtu 1497
    607      1.13     ozaki 	$atf_ifconfig vlan0 mtu 1496
    608      1.13     ozaki 	$atf_ifconfig vlan0 mtu 42
    609       1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    610       1.2     ozaki 	    rump.ifconfig vlan0 mtu 41
    611      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    612       1.4   msaitoh 
    613      1.13     ozaki 	$atf_ifconfig vlan1 create
    614      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    615       1.4   msaitoh 	atf_check -s not-exit:0 -e match:'File exists' \
    616       1.4   msaitoh 	    rump.ifconfig vlan1 vlan 10 vlanif shmif0
    617      1.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    618       1.5   msaitoh 
    619      1.13     ozaki 	$atf_ifconfig vlan1 -vlanif shmif1
    620      1.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    621       1.5   msaitoh 
    622      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    623      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    624       1.2     ozaki }
    625       1.2     ozaki 
    626       1.2     ozaki atf_test_case vlan_configs cleanup
    627       1.2     ozaki vlan_configs_head()
    628       1.2     ozaki {
    629       1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id"
    630       1.2     ozaki 	atf_set "require.progs" "rump_server"
    631       1.2     ozaki }
    632       1.2     ozaki 
    633       1.2     ozaki vlan_configs_body()
    634       1.2     ozaki {
    635       1.2     ozaki 
    636       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    637       1.2     ozaki 
    638       1.2     ozaki 	vlan_configs_body_common
    639       1.2     ozaki 
    640       1.2     ozaki }
    641       1.2     ozaki 
    642       1.2     ozaki vlan_configs_cleanup()
    643       1.2     ozaki {
    644       1.2     ozaki 
    645       1.2     ozaki 	$DEBUG && dump
    646       1.2     ozaki 	cleanup
    647       1.2     ozaki }
    648       1.2     ozaki 
    649       1.2     ozaki atf_test_case vlan_configs6 cleanup
    650       1.2     ozaki vlan_configs6_head()
    651       1.2     ozaki {
    652       1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id using IPv6"
    653       1.2     ozaki 	atf_set "require.progs" "rump_server"
    654       1.2     ozaki }
    655       1.2     ozaki 
    656       1.2     ozaki vlan_configs6_body()
    657       1.2     ozaki {
    658       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    659       1.2     ozaki 
    660       1.2     ozaki 	vlan_configs_body_common
    661       1.2     ozaki }
    662       1.2     ozaki 
    663       1.2     ozaki vlan_configs6_cleanup()
    664       1.2     ozaki {
    665       1.2     ozaki 	$DEBUG && dump
    666       1.2     ozaki 	cleanup
    667       1.2     ozaki }
    668       1.2     ozaki 
    669       1.9     ozaki vlan_bridge_body_common()
    670       1.9     ozaki {
    671      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    672       1.9     ozaki 
    673       1.9     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    674       1.9     ozaki 
    675       1.9     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    676      1.13     ozaki 	$atf_ifconfig shmif0 up
    677       1.9     ozaki 
    678      1.13     ozaki 	$atf_ifconfig vlan0 create
    679      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    680      1.13     ozaki 	$atf_ifconfig vlan0 up
    681       1.9     ozaki 	$DEBUG && rump.ifconfig vlan0
    682       1.9     ozaki 
    683      1.13     ozaki 	$atf_ifconfig bridge0 create
    684       1.9     ozaki 	# Adjust to the MTU of a vlan on a shmif
    685      1.13     ozaki 	$atf_ifconfig bridge0 mtu 1496
    686      1.13     ozaki 	$atf_ifconfig bridge0 up
    687       1.9     ozaki 	# Test brconfig add
    688       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 add vlan0
    689       1.9     ozaki 	$DEBUG && brconfig bridge0
    690       1.9     ozaki 	# Test brconfig delete
    691       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 delete vlan0
    692       1.9     ozaki 
    693       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 add vlan0
    694       1.9     ozaki 	# Test vlan destruction with bridge
    695      1.13     ozaki 	$atf_ifconfig vlan0 destroy
    696       1.9     ozaki 
    697       1.9     ozaki 	rump_server_destroy_ifaces
    698       1.9     ozaki }
    699       1.9     ozaki 
    700       1.9     ozaki atf_test_case vlan_bridge cleanup
    701       1.9     ozaki vlan_bridge_head()
    702       1.9     ozaki {
    703       1.9     ozaki 
    704       1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv4)"
    705       1.9     ozaki 	atf_set "require.progs" "rump_server"
    706       1.9     ozaki }
    707       1.9     ozaki 
    708       1.9     ozaki vlan_bridge_body()
    709       1.9     ozaki {
    710       1.9     ozaki 
    711       1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan bridge
    712       1.9     ozaki 	vlan_bridge_body_common
    713       1.9     ozaki }
    714       1.9     ozaki 
    715       1.9     ozaki vlan_bridge_cleanup()
    716       1.9     ozaki {
    717       1.9     ozaki 
    718       1.9     ozaki 	$DEBUG && dump
    719       1.9     ozaki 	cleanup
    720       1.9     ozaki }
    721       1.9     ozaki 
    722       1.9     ozaki atf_test_case vlan_bridge6 cleanup
    723       1.9     ozaki vlan_bridge6_head()
    724       1.9     ozaki {
    725       1.9     ozaki 
    726       1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv6)"
    727       1.9     ozaki 	atf_set "require.progs" "rump_server"
    728       1.9     ozaki }
    729       1.9     ozaki 
    730       1.9     ozaki vlan_bridge6_body()
    731       1.9     ozaki {
    732       1.9     ozaki 
    733       1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6 bridge
    734       1.9     ozaki 	vlan_bridge_body_common
    735       1.9     ozaki }
    736       1.9     ozaki 
    737       1.9     ozaki vlan_bridge6_cleanup()
    738       1.9     ozaki {
    739       1.9     ozaki 
    740       1.9     ozaki 	$DEBUG && dump
    741       1.9     ozaki 	cleanup
    742       1.9     ozaki }
    743       1.9     ozaki 
    744      1.10  yamaguch vlan_multicast_body_common()
    745      1.10  yamaguch {
    746      1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    747      1.10  yamaguch 	local af="inet"
    748      1.10  yamaguch 	local local0=$IP_LOCAL0
    749      1.10  yamaguch 	local local1=$IP_LOCAL1
    750      1.10  yamaguch 	local mcaddr=$IP_MCADDR0
    751      1.10  yamaguch 	local eth_mcaddr=$ETH_IP_MCADDR0
    752      1.10  yamaguch 	local prefix=24
    753      1.10  yamaguch 	local siocXmulti="$(atf_get_srcdir)/siocXmulti"
    754      1.13     ozaki 	local atf_siocXmulti="atf_check -s exit:0 $HIJACKING $siocXmulti"
    755      1.10  yamaguch 
    756      1.10  yamaguch 	if [ x"$1" =  x"inet6" ]; then
    757      1.10  yamaguch 		af="inet6"
    758      1.10  yamaguch 		prefix=64
    759      1.10  yamaguch 		local0=$IP6_LOCAL0
    760      1.10  yamaguch 		local1=$IP6_LOCAL1
    761      1.10  yamaguch 		mcaddr=$IP6_MCADDR0
    762      1.10  yamaguch 		eth_mcaddr=$ETH_IP6_MCADDR0
    763      1.10  yamaguch 	fi
    764      1.10  yamaguch 
    765      1.10  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    766      1.10  yamaguch 
    767      1.13     ozaki 	$atf_ifconfig shmif0 create
    768      1.13     ozaki 	$atf_ifconfig shmif0 linkstr net0 up
    769      1.13     ozaki 	$atf_ifconfig vlan0 create
    770      1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    771      1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix up
    772      1.13     ozaki 	$atf_ifconfig vlan1 create
    773      1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    774      1.13     ozaki 	$atf_ifconfig vlan1 $af $local1/$prefix up
    775      1.13     ozaki 	$atf_ifconfig -w 10
    776      1.10  yamaguch 
    777      1.10  yamaguch 	# check the initial state
    778      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    779      1.10  yamaguch 
    780      1.10  yamaguch 	# add a multicast address
    781      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    782      1.10  yamaguch 	atf_check -s exit:0 -o match:"$eth_mcaddr" $HIJACKING ifmcstat
    783      1.10  yamaguch 
    784      1.10  yamaguch 	# delete the address
    785      1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    786      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    787      1.10  yamaguch 
    788      1.10  yamaguch 	# delete a non-existing address
    789      1.14     ozaki 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    790      1.14     ozaki 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    791      1.10  yamaguch 
    792      1.10  yamaguch 	# add an address to different interfaces
    793      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    794      1.13     ozaki 	$atf_siocXmulti add vlan1 $mcaddr
    795      1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 2" $HIJACKING ifmcstat
    796      1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    797      1.10  yamaguch 
    798      1.10  yamaguch 	# delete the address with invalid interface
    799      1.11  yamaguch 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    800      1.10  yamaguch 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    801      1.10  yamaguch 
    802      1.13     ozaki 	$atf_siocXmulti del vlan1 $mcaddr
    803      1.10  yamaguch 
    804      1.10  yamaguch 	# add and delete a same address more than once
    805      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    806      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    807      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    808      1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 3" $HIJACKING ifmcstat
    809      1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    810      1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    811      1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    812      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    813      1.10  yamaguch 
    814      1.10  yamaguch 	# delete all address added to parent device when remove
    815      1.10  yamaguch 	# the config of parent interface
    816      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    817      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    818      1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    819      1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    820      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    821      1.10  yamaguch }
    822      1.10  yamaguch 
    823      1.10  yamaguch atf_test_case vlan_multicast cleanup
    824      1.10  yamaguch vlan_multicast_head()
    825      1.10  yamaguch {
    826      1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting"
    827      1.10  yamaguch 	atf_set "require.progs" "rump_server"
    828      1.10  yamaguch }
    829      1.10  yamaguch 
    830      1.10  yamaguch vlan_multicast_body()
    831      1.10  yamaguch {
    832      1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan
    833      1.10  yamaguch 
    834      1.10  yamaguch 	vlan_multicast_body_common inet
    835      1.10  yamaguch }
    836      1.10  yamaguch 
    837      1.10  yamaguch vlan_multicast_cleanup()
    838      1.10  yamaguch {
    839      1.10  yamaguch 	$DEBUG && dump
    840      1.10  yamaguch 	cleanup
    841      1.10  yamaguch }
    842      1.10  yamaguch 
    843      1.10  yamaguch atf_test_case vlan_multicast6 cleanup
    844      1.10  yamaguch vlan_multicast6_head()
    845      1.10  yamaguch {
    846      1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting with IPv6"
    847      1.10  yamaguch 	atf_set "require.progs" "rump_server"
    848      1.10  yamaguch }
    849      1.10  yamaguch 
    850      1.10  yamaguch vlan_multicast6_body()
    851      1.10  yamaguch {
    852      1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan netinet6
    853      1.10  yamaguch 
    854      1.10  yamaguch 	vlan_multicast_body_common inet6
    855      1.10  yamaguch }
    856      1.10  yamaguch 
    857      1.10  yamaguch vlan_multicast6_cleanup()
    858      1.10  yamaguch {
    859      1.10  yamaguch 	$DEBUG && dump
    860      1.10  yamaguch 	cleanup
    861      1.10  yamaguch }
    862      1.10  yamaguch 
    863       1.1     ozaki atf_init_test_cases()
    864       1.1     ozaki {
    865       1.1     ozaki 
    866       1.1     ozaki 	atf_add_test_case vlan_create_destroy
    867       1.1     ozaki 	atf_add_test_case vlan_basic
    868  1.15.2.1    martin 	atf_add_test_case vlan_auto_follow_mtu
    869       1.2     ozaki 	atf_add_test_case vlan_vlanid
    870       1.2     ozaki 	atf_add_test_case vlan_configs
    871       1.9     ozaki 	atf_add_test_case vlan_bridge
    872      1.10  yamaguch 	atf_add_test_case vlan_multicast
    873       1.2     ozaki 
    874       1.2     ozaki 	atf_add_test_case vlan_create_destroy6
    875       1.2     ozaki 	atf_add_test_case vlan_basic6
    876  1.15.2.1    martin 	atf_add_test_case vlan_auto_follow_mtu6
    877       1.2     ozaki 	atf_add_test_case vlan_vlanid6
    878       1.2     ozaki 	atf_add_test_case vlan_configs6
    879       1.9     ozaki 	atf_add_test_case vlan_bridge6
    880      1.10  yamaguch 	atf_add_test_case vlan_multicast6
    881       1.1     ozaki }
    882