Home | History | Annotate | Line # | Download | only in if_vlan
t_vlan.sh revision 1.11.2.1
      1  1.11.2.1  christos #	$NetBSD: t_vlan.sh,v 1.11.2.1 2019/06/10 22:10:10 christos 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.2     ozaki IP6_LOCAL0=fc00:0::1
     37       1.2     ozaki IP6_LOCAL1=fc00:1::1
     38       1.2     ozaki IP6_REMOTE0=fc00:0::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.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
     49  1.11.2.1  christos 
     50       1.2     ozaki 	export RUMP_SERVER=${SOCK_LOCAL}
     51       1.2     ozaki 
     52  1.11.2.1  christos 	$atf_ifconfig vlan0 create
     53  1.11.2.1  christos 	$atf_ifconfig vlan0 destroy
     54       1.8     ozaki 
     55  1.11.2.1  christos 	$atf_ifconfig vlan0 create
     56  1.11.2.1  christos 	$atf_ifconfig vlan0 up
     57  1.11.2.1  christos 	$atf_ifconfig vlan0 down
     58  1.11.2.1  christos 	$atf_ifconfig vlan0 destroy
     59  1.11.2.1  christos 
     60  1.11.2.1  christos 	$atf_ifconfig shmif0 create
     61  1.11.2.1  christos 	$atf_ifconfig vlan0 create
     62  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
     63  1.11.2.1  christos 	$atf_ifconfig vlan0 up
     64  1.11.2.1  christos 	$atf_ifconfig vlan0 destroy
     65       1.2     ozaki 
     66       1.2     ozaki 	# more than one vlan interface with a same parent interface
     67  1.11.2.1  christos 	$atf_ifconfig shmif1 create
     68  1.11.2.1  christos 	$atf_ifconfig vlan0 create
     69  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
     70  1.11.2.1  christos 	$atf_ifconfig vlan1 create
     71  1.11.2.1  christos 	$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.11.2.1  christos 	$atf_ifconfig vlan2 create
     75  1.11.2.1  christos 	$atf_ifconfig vlan2 vlan 12 vlanif shmif1
     76  1.11.2.1  christos 	$atf_ifconfig vlan3 create
     77  1.11.2.1  christos 	$atf_ifconfig vlan3 vlan 13 vlanif shmif1
     78  1.11.2.1  christos 	$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.11.2.1  christos 	$atf_ifconfig vlan0 destroy
     84  1.11.2.1  christos 	$atf_ifconfig vlan1 destroy
     85  1.11.2.1  christos 	$atf_ifconfig vlan2 destroy
     86  1.11.2.1  christos 	$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.11.2.1  christos 	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.11.2.1  christos 	$atf_ifconfig shmif0 up
    159       1.1     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    160  1.11.2.1  christos 	$atf_ifconfig shmif0 up
    161       1.1     ozaki 
    162       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    163  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    164  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    165  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $local0/$prefix
    166  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    167  1.11.2.1  christos 	$atf_ifconfig -w 10
    168       1.1     ozaki 
    169       1.1     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    170  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    171  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    172  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $remote0/$prefix
    173  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    174  1.11.2.1  christos 	$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.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    185  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 20 vlanif shmif0
    186  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $local0/$prefix
    187  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    188  1.11.2.1  christos 	$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.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    198  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    199  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $local0/$prefix
    200  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    201  1.11.2.1  christos 	$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.2     ozaki vlanid_config_and_ping()
    259       1.2     ozaki {
    260  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    261       1.2     ozaki 	local vlanid=$1
    262       1.2     ozaki 	shift
    263       1.2     ozaki 
    264       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    265  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    266  1.11.2.1  christos 	$atf_ifconfig vlan0 $IP_LOCAL0/24
    267  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    268       1.2     ozaki 
    269       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    270  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    271  1.11.2.1  christos 	$atf_ifconfig vlan0 $IP_REMOTE0/24
    272  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    273       1.2     ozaki 
    274       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    275       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 $IP_REMOTE0
    276  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    277       1.2     ozaki 
    278       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    279  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    280       1.2     ozaki }
    281       1.2     ozaki 
    282       1.2     ozaki vlanid_config_and_ping6()
    283       1.2     ozaki {
    284  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    285       1.2     ozaki 	local vlanid=$1
    286       1.2     ozaki 	shift
    287       1.2     ozaki 
    288       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    289  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    290  1.11.2.1  christos 	$atf_ifconfig vlan0 inet6 $IP6_LOCAL0/64
    291  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    292       1.2     ozaki 
    293       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    294  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    295  1.11.2.1  christos 	$atf_ifconfig vlan0 inet6 $IP6_REMOTE0/64
    296  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    297       1.2     ozaki 
    298       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    299       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 $IP6_REMOTE0
    300  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    301       1.2     ozaki 
    302       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    303  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    304       1.2     ozaki }
    305       1.2     ozaki 
    306       1.2     ozaki vlan_vlanid_body_common()
    307       1.2     ozaki {
    308  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    309       1.2     ozaki 	local af=inet
    310       1.2     ozaki 	local prefix=24
    311       1.2     ozaki 	local sysctl_param="net.inet.ip.dad_count=0"
    312       1.2     ozaki 	local ping_cmd="rump.ping -n -w 1 -c 1"
    313       1.2     ozaki 	local config_and_ping=vlanid_config_and_ping
    314       1.2     ozaki 	local local0=$IP_LOCAL0
    315       1.2     ozaki 	local local1=$IP_LOCAL1
    316       1.2     ozaki 	local remote0=$IP_REMOTE0
    317       1.2     ozaki 	local remote1=$IP_REMOTE1
    318       1.2     ozaki 
    319       1.2     ozaki 	if [ x"$1" = x"inet6" ]; then
    320       1.2     ozaki 		af=inet6
    321       1.2     ozaki 		prefix=64
    322       1.2     ozaki 		sysctl_param="net.inet6.ip6.dad_count=0"
    323       1.2     ozaki 		ping_cmd="rump.ping6 -n -c 1"
    324       1.2     ozaki 		config_and_ping=vlanid_config_and_ping6
    325       1.2     ozaki 		local0=$IP6_LOCAL0
    326       1.2     ozaki 		local1=$IP6_LOCAL1
    327       1.2     ozaki 		remote0=$IP6_REMOTE0
    328       1.2     ozaki 		remote1=$IP6_REMOTE1
    329       1.2     ozaki 	fi
    330       1.2     ozaki 
    331       1.2     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    332       1.2     ozaki 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    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.sysctl -w $sysctl_param
    336  1.11.2.1  christos 	$atf_ifconfig shmif0 up
    337  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    338       1.2     ozaki 
    339       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    340       1.2     ozaki 	atf_check -s exit:0 -o ignore rump.sysctl -w $sysctl_param
    341  1.11.2.1  christos 	$atf_ifconfig shmif0 up
    342  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    343       1.2     ozaki 
    344       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    345  1.11.2.1  christos 	atf_check -s not-exit:0 -e match:"^usage: rump.ifconfig" \
    346       1.2     ozaki 	    rump.ifconfig vlan0 vlan -1 vlanif shmif0
    347       1.2     ozaki 
    348       1.6       kre 	# $config_and_ping 0 # reserved vlan id
    349       1.2     ozaki 	$config_and_ping 1
    350       1.2     ozaki 	$config_and_ping 4094
    351       1.6       kre 	# $config_and_ping 4095 #reserved vlan id
    352       1.2     ozaki 
    353       1.7       kre 	if [ "${RANDOM:-0}" != "${RANDOM:-0}" ]
    354       1.7       kre 	then
    355       1.7       kre 		for TAG in $(( ${RANDOM:-0} % 4092 + 2 )) \
    356       1.7       kre 			   $(( ${RANDOM:-0} % 4092 + 2 )) \
    357       1.7       kre 			   $(( ${RANDOM:-0} % 4092 + 2 ))
    358       1.7       kre 		do
    359       1.7       kre 			$config_and_ping "${TAG}"
    360       1.7       kre 		done
    361       1.7       kre 	fi
    362       1.7       kre 
    363       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    364       1.7       kre 	for TAG in 0 4095 4096 $((4096*4 + 1)) 65536 65537 $((65536 + 4095))
    365       1.7       kre 	do
    366       1.7       kre 		atf_check -s not-exit:0 -e not-empty \
    367       1.7       kre 		    rump.ifconfig vlan0 vlan "${TAG}" vlanif shmif0
    368       1.7       kre 	done
    369       1.2     ozaki 
    370  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    371  1.11.2.1  christos 	atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \
    372       1.2     ozaki 	    rump.ifconfig vlan0 vlan 2 vlanif shmif0
    373       1.2     ozaki 
    374  1.11.2.1  christos 	atf_check -s not-exit:0 -e match:"SIOCSETVLAN: Device busy" \
    375       1.2     ozaki 	    rump.ifconfig vlan0 vlan 1 vlanif shmif1
    376       1.2     ozaki 
    377  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    378  1.11.2.1  christos 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    379  1.11.2.1  christos 	    rump.ifconfig vlan0 $af $local0/$prefix
    380       1.2     ozaki 
    381       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    382  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    383  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $local0/$prefix
    384  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    385  1.11.2.1  christos 	$atf_ifconfig vlan1 create
    386  1.11.2.1  christos 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    387  1.11.2.1  christos 	$atf_ifconfig vlan1 $af $local1/$prefix
    388  1.11.2.1  christos 	$atf_ifconfig vlan1 up
    389       1.2     ozaki 
    390       1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    391  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    392  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    393  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $remote0/$prefix
    394  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    395  1.11.2.1  christos 	$atf_ifconfig vlan1 create
    396  1.11.2.1  christos 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    397  1.11.2.1  christos 	$atf_ifconfig vlan1 $af $remote1/$prefix
    398  1.11.2.1  christos 	$atf_ifconfig vlan1 up
    399       1.2     ozaki 
    400       1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    401       1.2     ozaki 	atf_check -s exit:0 -o ignore $ping_cmd $remote0
    402       1.2     ozaki 	atf_check -s exit:0 -o ignore $ping_cmd $remote1
    403       1.2     ozaki }
    404       1.2     ozaki 
    405       1.2     ozaki atf_test_case vlan_vlanid cleanup
    406       1.2     ozaki vlan_vlanid_head()
    407       1.2     ozaki {
    408       1.2     ozaki 
    409       1.2     ozaki 	atf_set "descr" "tests of configuration for vlan id"
    410       1.2     ozaki 	atf_set "require.progs" "rump_server"
    411       1.2     ozaki }
    412       1.2     ozaki 
    413       1.2     ozaki vlan_vlanid_body()
    414       1.2     ozaki {
    415       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    416       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan
    417       1.2     ozaki 
    418       1.2     ozaki 	vlan_vlanid_body_common inet
    419       1.2     ozaki }
    420       1.2     ozaki 
    421       1.2     ozaki vlan_vlanid_cleanup()
    422       1.2     ozaki {
    423       1.2     ozaki 
    424       1.2     ozaki 	$DEBUG && dump
    425       1.2     ozaki 	cleanup
    426       1.2     ozaki }
    427       1.2     ozaki 
    428       1.2     ozaki atf_test_case vlan_vlanid6 cleanup
    429       1.2     ozaki vlan_vlanid6_head()
    430       1.2     ozaki {
    431       1.2     ozaki 
    432       1.2     ozaki 	atf_set "descr" "tests of configuration for vlan id using IPv6"
    433       1.2     ozaki 	atf_set "require.progs" "rump_server"
    434       1.2     ozaki }
    435       1.2     ozaki 
    436       1.2     ozaki 
    437       1.2     ozaki vlan_vlanid6_body()
    438       1.2     ozaki {
    439       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    440       1.2     ozaki 	rump_server_start $SOCK_REMOTE vlan netinet6
    441       1.2     ozaki 
    442       1.2     ozaki 	vlan_vlanid_body_common inet6
    443       1.2     ozaki }
    444       1.2     ozaki 
    445       1.2     ozaki vlan_vlanid6_cleanup()
    446       1.2     ozaki {
    447       1.2     ozaki 
    448       1.2     ozaki 	$DEBUG && dump
    449       1.2     ozaki 	cleanup
    450       1.2     ozaki }
    451       1.2     ozaki 
    452       1.2     ozaki vlan_configs_body_common()
    453       1.2     ozaki {
    454  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    455       1.2     ozaki 
    456  1.11.2.1  christos 	export RUMP_SERVER=${SOCK_LOCAL}
    457       1.2     ozaki 
    458  1.11.2.1  christos 	$atf_ifconfig shmif0 create
    459  1.11.2.1  christos 	$atf_ifconfig shmif1 create
    460  1.11.2.1  christos 	# unset U/L bit to detect a bug fixed by if_vlan.c:r1.132
    461  1.11.2.1  christos 	$atf_ifconfig shmif0 link b0:a0:75:00:01:00 active
    462  1.11.2.1  christos 	$atf_ifconfig shmif1 link b0:a0:75:00:01:01 active
    463  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    464  1.11.2.1  christos 
    465  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    466  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    467  1.11.2.1  christos 
    468  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    469  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif shmif0
    470  1.11.2.1  christos 
    471  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    472  1.11.2.1  christos 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1
    473  1.11.2.1  christos 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2
    474       1.2     ozaki 
    475  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    476       1.2     ozaki 
    477  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    478       1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    479       1.2     ozaki 	    rump.ifconfig vlan0 mtu 1497
    480  1.11.2.1  christos 	$atf_ifconfig vlan0 mtu 1496
    481  1.11.2.1  christos 	$atf_ifconfig vlan0 mtu 42
    482       1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    483       1.2     ozaki 	    rump.ifconfig vlan0 mtu 41
    484  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif
    485       1.4   msaitoh 
    486  1.11.2.1  christos 	$atf_ifconfig vlan1 create
    487  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    488       1.4   msaitoh 	atf_check -s not-exit:0 -e match:'File exists' \
    489       1.4   msaitoh 	    rump.ifconfig vlan1 vlan 10 vlanif shmif0
    490  1.11.2.1  christos 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    491       1.5   msaitoh 
    492  1.11.2.1  christos 	$atf_ifconfig vlan1 -vlanif shmif1
    493  1.11.2.1  christos 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    494       1.5   msaitoh 
    495  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif shmif0
    496  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    497       1.2     ozaki }
    498       1.2     ozaki 
    499       1.2     ozaki atf_test_case vlan_configs cleanup
    500       1.2     ozaki vlan_configs_head()
    501       1.2     ozaki {
    502       1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id"
    503       1.2     ozaki 	atf_set "require.progs" "rump_server"
    504       1.2     ozaki }
    505       1.2     ozaki 
    506       1.2     ozaki vlan_configs_body()
    507       1.2     ozaki {
    508       1.2     ozaki 
    509       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    510       1.2     ozaki 
    511       1.2     ozaki 	vlan_configs_body_common
    512       1.2     ozaki 
    513       1.2     ozaki }
    514       1.2     ozaki 
    515       1.2     ozaki vlan_configs_cleanup()
    516       1.2     ozaki {
    517       1.2     ozaki 
    518       1.2     ozaki 	$DEBUG && dump
    519       1.2     ozaki 	cleanup
    520       1.2     ozaki }
    521       1.2     ozaki 
    522       1.2     ozaki atf_test_case vlan_configs6 cleanup
    523       1.2     ozaki vlan_configs6_head()
    524       1.2     ozaki {
    525       1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id using IPv6"
    526       1.2     ozaki 	atf_set "require.progs" "rump_server"
    527       1.2     ozaki }
    528       1.2     ozaki 
    529       1.2     ozaki vlan_configs6_body()
    530       1.2     ozaki {
    531       1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    532       1.2     ozaki 
    533       1.2     ozaki 	vlan_configs_body_common
    534       1.2     ozaki }
    535       1.2     ozaki 
    536       1.2     ozaki vlan_configs6_cleanup()
    537       1.2     ozaki {
    538       1.2     ozaki 	$DEBUG && dump
    539       1.2     ozaki 	cleanup
    540       1.2     ozaki }
    541       1.2     ozaki 
    542       1.9     ozaki vlan_bridge_body_common()
    543       1.9     ozaki {
    544  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    545       1.9     ozaki 
    546       1.9     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    547       1.9     ozaki 
    548       1.9     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    549  1.11.2.1  christos 	$atf_ifconfig shmif0 up
    550       1.9     ozaki 
    551  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    552  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    553  1.11.2.1  christos 	$atf_ifconfig vlan0 up
    554       1.9     ozaki 	$DEBUG && rump.ifconfig vlan0
    555       1.9     ozaki 
    556  1.11.2.1  christos 	$atf_ifconfig bridge0 create
    557       1.9     ozaki 	# Adjust to the MTU of a vlan on a shmif
    558  1.11.2.1  christos 	$atf_ifconfig bridge0 mtu 1496
    559  1.11.2.1  christos 	$atf_ifconfig bridge0 up
    560       1.9     ozaki 	# Test brconfig add
    561       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 add vlan0
    562       1.9     ozaki 	$DEBUG && brconfig bridge0
    563       1.9     ozaki 	# Test brconfig delete
    564       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 delete vlan0
    565       1.9     ozaki 
    566       1.9     ozaki 	atf_check -s exit:0 $HIJACKING brconfig bridge0 add vlan0
    567       1.9     ozaki 	# Test vlan destruction with bridge
    568  1.11.2.1  christos 	$atf_ifconfig vlan0 destroy
    569       1.9     ozaki 
    570       1.9     ozaki 	rump_server_destroy_ifaces
    571       1.9     ozaki }
    572       1.9     ozaki 
    573       1.9     ozaki atf_test_case vlan_bridge cleanup
    574       1.9     ozaki vlan_bridge_head()
    575       1.9     ozaki {
    576       1.9     ozaki 
    577       1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv4)"
    578       1.9     ozaki 	atf_set "require.progs" "rump_server"
    579       1.9     ozaki }
    580       1.9     ozaki 
    581       1.9     ozaki vlan_bridge_body()
    582       1.9     ozaki {
    583       1.9     ozaki 
    584       1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan bridge
    585       1.9     ozaki 	vlan_bridge_body_common
    586       1.9     ozaki }
    587       1.9     ozaki 
    588       1.9     ozaki vlan_bridge_cleanup()
    589       1.9     ozaki {
    590       1.9     ozaki 
    591       1.9     ozaki 	$DEBUG && dump
    592       1.9     ozaki 	cleanup
    593       1.9     ozaki }
    594       1.9     ozaki 
    595       1.9     ozaki atf_test_case vlan_bridge6 cleanup
    596       1.9     ozaki vlan_bridge6_head()
    597       1.9     ozaki {
    598       1.9     ozaki 
    599       1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv6)"
    600       1.9     ozaki 	atf_set "require.progs" "rump_server"
    601       1.9     ozaki }
    602       1.9     ozaki 
    603       1.9     ozaki vlan_bridge6_body()
    604       1.9     ozaki {
    605       1.9     ozaki 
    606       1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6 bridge
    607       1.9     ozaki 	vlan_bridge_body_common
    608       1.9     ozaki }
    609       1.9     ozaki 
    610       1.9     ozaki vlan_bridge6_cleanup()
    611       1.9     ozaki {
    612       1.9     ozaki 
    613       1.9     ozaki 	$DEBUG && dump
    614       1.9     ozaki 	cleanup
    615       1.9     ozaki }
    616       1.9     ozaki 
    617      1.10  yamaguch vlan_multicast_body_common()
    618      1.10  yamaguch {
    619  1.11.2.1  christos 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    620      1.10  yamaguch 	local af="inet"
    621      1.10  yamaguch 	local local0=$IP_LOCAL0
    622      1.10  yamaguch 	local local1=$IP_LOCAL1
    623      1.10  yamaguch 	local mcaddr=$IP_MCADDR0
    624      1.10  yamaguch 	local eth_mcaddr=$ETH_IP_MCADDR0
    625      1.10  yamaguch 	local prefix=24
    626      1.10  yamaguch 	local siocXmulti="$(atf_get_srcdir)/siocXmulti"
    627  1.11.2.1  christos 	local atf_siocXmulti="atf_check -s exit:0 $HIJACKING $siocXmulti"
    628      1.10  yamaguch 
    629      1.10  yamaguch 	if [ x"$1" =  x"inet6" ]; then
    630      1.10  yamaguch 		af="inet6"
    631      1.10  yamaguch 		prefix=64
    632      1.10  yamaguch 		local0=$IP6_LOCAL0
    633      1.10  yamaguch 		local1=$IP6_LOCAL1
    634      1.10  yamaguch 		mcaddr=$IP6_MCADDR0
    635      1.10  yamaguch 		eth_mcaddr=$ETH_IP6_MCADDR0
    636      1.10  yamaguch 	fi
    637      1.10  yamaguch 
    638      1.10  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    639      1.10  yamaguch 
    640  1.11.2.1  christos 	$atf_ifconfig shmif0 create
    641  1.11.2.1  christos 	$atf_ifconfig shmif0 linkstr net0 up
    642  1.11.2.1  christos 	$atf_ifconfig vlan0 create
    643  1.11.2.1  christos 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    644  1.11.2.1  christos 	$atf_ifconfig vlan0 $af $local0/$prefix up
    645  1.11.2.1  christos 	$atf_ifconfig vlan1 create
    646  1.11.2.1  christos 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    647  1.11.2.1  christos 	$atf_ifconfig vlan1 $af $local1/$prefix up
    648  1.11.2.1  christos 	$atf_ifconfig -w 10
    649      1.10  yamaguch 
    650      1.10  yamaguch 	# check the initial state
    651      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    652      1.10  yamaguch 
    653      1.10  yamaguch 	# add a multicast address
    654  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    655      1.10  yamaguch 	atf_check -s exit:0 -o match:"$eth_mcaddr" $HIJACKING ifmcstat
    656      1.10  yamaguch 
    657      1.10  yamaguch 	# delete the address
    658  1.11.2.1  christos 	$atf_siocXmulti del vlan0 $mcaddr
    659      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    660      1.10  yamaguch 
    661      1.10  yamaguch 	# delete a non-existing address
    662  1.11.2.1  christos 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    663  1.11.2.1  christos 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    664      1.10  yamaguch 
    665      1.10  yamaguch 	# add an address to different interfaces
    666  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    667  1.11.2.1  christos 	$atf_siocXmulti add vlan1 $mcaddr
    668      1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 2" $HIJACKING ifmcstat
    669  1.11.2.1  christos 	$atf_siocXmulti del vlan0 $mcaddr
    670      1.10  yamaguch 
    671      1.10  yamaguch 	# delete the address with invalid interface
    672      1.11  yamaguch 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    673      1.10  yamaguch 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    674      1.10  yamaguch 
    675  1.11.2.1  christos 	$atf_siocXmulti del vlan1 $mcaddr
    676      1.10  yamaguch 
    677      1.10  yamaguch 	# add and delete a same address more than once
    678  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    679  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    680  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    681      1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 3" $HIJACKING ifmcstat
    682  1.11.2.1  christos 	$atf_siocXmulti del vlan0 $mcaddr
    683  1.11.2.1  christos 	$atf_siocXmulti del vlan0 $mcaddr
    684  1.11.2.1  christos 	$atf_siocXmulti del vlan0 $mcaddr
    685      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    686      1.10  yamaguch 
    687      1.10  yamaguch 	# delete all address added to parent device when remove
    688      1.10  yamaguch 	# the config of parent interface
    689  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    690  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    691  1.11.2.1  christos 	$atf_siocXmulti add vlan0 $mcaddr
    692  1.11.2.1  christos 	$atf_ifconfig vlan0 -vlanif shmif0
    693      1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    694      1.10  yamaguch }
    695      1.10  yamaguch 
    696      1.10  yamaguch atf_test_case vlan_multicast cleanup
    697      1.10  yamaguch vlan_multicast_head()
    698      1.10  yamaguch {
    699      1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting"
    700      1.10  yamaguch 	atf_set "require.progs" "rump_server"
    701      1.10  yamaguch }
    702      1.10  yamaguch 
    703      1.10  yamaguch vlan_multicast_body()
    704      1.10  yamaguch {
    705      1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan
    706      1.10  yamaguch 
    707      1.10  yamaguch 	vlan_multicast_body_common inet
    708      1.10  yamaguch }
    709      1.10  yamaguch 
    710      1.10  yamaguch vlan_multicast_cleanup()
    711      1.10  yamaguch {
    712      1.10  yamaguch 	$DEBUG && dump
    713      1.10  yamaguch 	cleanup
    714      1.10  yamaguch }
    715      1.10  yamaguch 
    716      1.10  yamaguch atf_test_case vlan_multicast6 cleanup
    717      1.10  yamaguch vlan_multicast6_head()
    718      1.10  yamaguch {
    719      1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting with IPv6"
    720      1.10  yamaguch 	atf_set "require.progs" "rump_server"
    721      1.10  yamaguch }
    722      1.10  yamaguch 
    723      1.10  yamaguch vlan_multicast6_body()
    724      1.10  yamaguch {
    725      1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan netinet6
    726      1.10  yamaguch 
    727      1.10  yamaguch 	vlan_multicast_body_common inet6
    728      1.10  yamaguch }
    729      1.10  yamaguch 
    730      1.10  yamaguch vlan_multicast6_cleanup()
    731      1.10  yamaguch {
    732      1.10  yamaguch 	$DEBUG && dump
    733      1.10  yamaguch 	cleanup
    734      1.10  yamaguch }
    735      1.10  yamaguch 
    736       1.1     ozaki atf_init_test_cases()
    737       1.1     ozaki {
    738       1.1     ozaki 
    739       1.1     ozaki 	atf_add_test_case vlan_create_destroy
    740       1.1     ozaki 	atf_add_test_case vlan_basic
    741       1.2     ozaki 	atf_add_test_case vlan_vlanid
    742       1.2     ozaki 	atf_add_test_case vlan_configs
    743       1.9     ozaki 	atf_add_test_case vlan_bridge
    744      1.10  yamaguch 	atf_add_test_case vlan_multicast
    745       1.2     ozaki 
    746       1.2     ozaki 	atf_add_test_case vlan_create_destroy6
    747       1.2     ozaki 	atf_add_test_case vlan_basic6
    748       1.2     ozaki 	atf_add_test_case vlan_vlanid6
    749       1.2     ozaki 	atf_add_test_case vlan_configs6
    750       1.9     ozaki 	atf_add_test_case vlan_bridge6
    751      1.10  yamaguch 	atf_add_test_case vlan_multicast6
    752       1.1     ozaki }
    753