Home | History | Annotate | Line # | Download | only in if_vlan
t_vlan.sh revision 1.15
      1  1.15     ozaki #	$NetBSD: t_vlan.sh,v 1.15 2018/12/11 03:47:51 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.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.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.2     ozaki vlanid_config_and_ping()
    259   1.2     ozaki {
    260  1.13     ozaki 	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.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    266  1.13     ozaki 	$atf_ifconfig vlan0 $IP_LOCAL0/24
    267  1.13     ozaki 	$atf_ifconfig vlan0 up
    268   1.2     ozaki 
    269   1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    270  1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    271  1.13     ozaki 	$atf_ifconfig vlan0 $IP_REMOTE0/24
    272  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    277   1.2     ozaki 
    278   1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    279  1.13     ozaki 	$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.13     ozaki 	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.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    290  1.13     ozaki 	$atf_ifconfig vlan0 inet6 $IP6_LOCAL0/64
    291  1.13     ozaki 	$atf_ifconfig vlan0 up
    292   1.2     ozaki 
    293   1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    294  1.13     ozaki 	$atf_ifconfig vlan0 vlan $vlanid vlanif shmif0
    295  1.13     ozaki 	$atf_ifconfig vlan0 inet6 $IP6_REMOTE0/64
    296  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    301   1.2     ozaki 
    302   1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    303  1.13     ozaki 	$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.13     ozaki 	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.13     ozaki 	$atf_ifconfig shmif0 up
    337  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig shmif0 up
    342  1.13     ozaki 	$atf_ifconfig vlan0 create
    343   1.2     ozaki 
    344   1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    345  1.14     ozaki 	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.13     ozaki 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    371  1.14     ozaki 	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.14     ozaki 	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.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    378  1.14     ozaki 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    379  1.15     ozaki 	    rump.ifconfig vlan0 $af $local0/$prefix
    380   1.2     ozaki 
    381   1.2     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    382  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    383  1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix
    384  1.13     ozaki 	$atf_ifconfig vlan0 up
    385  1.13     ozaki 	$atf_ifconfig vlan1 create
    386  1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    387  1.13     ozaki 	$atf_ifconfig vlan1 $af $local1/$prefix
    388  1.13     ozaki 	$atf_ifconfig vlan1 up
    389   1.2     ozaki 
    390   1.2     ozaki 	export RUMP_SERVER=$SOCK_REMOTE
    391  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    392  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    393  1.13     ozaki 	$atf_ifconfig vlan0 $af $remote0/$prefix
    394  1.13     ozaki 	$atf_ifconfig vlan0 up
    395  1.13     ozaki 	$atf_ifconfig vlan1 create
    396  1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    397  1.13     ozaki 	$atf_ifconfig vlan1 $af $remote1/$prefix
    398  1.13     ozaki 	$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.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    455  1.13     ozaki 
    456   1.2     ozaki 	export RUMP_SERVER=${SOCK_LOCAL}
    457   1.2     ozaki 
    458  1.13     ozaki 	$atf_ifconfig shmif0 create
    459  1.13     ozaki 	$atf_ifconfig shmif1 create
    460  1.12  knakahar 	# unset U/L bit to detect a bug fixed by if_vlan.c:r1.132
    461  1.13     ozaki 	$atf_ifconfig shmif0 link b0:a0:75:00:01:00 active
    462  1.13     ozaki 	$atf_ifconfig shmif1 link b0:a0:75:00:01:01 active
    463  1.13     ozaki 	$atf_ifconfig vlan0 create
    464   1.2     ozaki 
    465  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    466  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    467   1.2     ozaki 
    468  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    469  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    470   1.2     ozaki 
    471  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    472  1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1
    473  1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2
    474   1.2     ozaki 
    475  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    476   1.2     ozaki 
    477  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig vlan0 mtu 1496
    481  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    485   1.4   msaitoh 
    486  1.13     ozaki 	$atf_ifconfig vlan1 create
    487  1.13     ozaki 	$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.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    491   1.5   msaitoh 
    492  1.13     ozaki 	$atf_ifconfig vlan1 -vlanif shmif1
    493  1.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    494   1.5   msaitoh 
    495  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    496  1.13     ozaki 	$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.13     ozaki 	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.13     ozaki 	$atf_ifconfig shmif0 up
    550   1.9     ozaki 
    551  1.13     ozaki 	$atf_ifconfig vlan0 create
    552  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    553  1.13     ozaki 	$atf_ifconfig vlan0 up
    554   1.9     ozaki 	$DEBUG && rump.ifconfig vlan0
    555   1.9     ozaki 
    556  1.13     ozaki 	$atf_ifconfig bridge0 create
    557   1.9     ozaki 	# Adjust to the MTU of a vlan on a shmif
    558  1.13     ozaki 	$atf_ifconfig bridge0 mtu 1496
    559  1.13     ozaki 	$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.13     ozaki 	$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.13     ozaki 	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.13     ozaki 	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.13     ozaki 	$atf_ifconfig shmif0 create
    641  1.13     ozaki 	$atf_ifconfig shmif0 linkstr net0 up
    642  1.13     ozaki 	$atf_ifconfig vlan0 create
    643  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    644  1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix up
    645  1.13     ozaki 	$atf_ifconfig vlan1 create
    646  1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    647  1.13     ozaki 	$atf_ifconfig vlan1 $af $local1/$prefix up
    648  1.13     ozaki 	$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.13     ozaki 	$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.13     ozaki 	$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.14     ozaki 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    663  1.14     ozaki 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    664  1.10  yamaguch 
    665  1.10  yamaguch 	# add an address to different interfaces
    666  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    667  1.13     ozaki 	$atf_siocXmulti add vlan1 $mcaddr
    668  1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 2" $HIJACKING ifmcstat
    669  1.13     ozaki 	$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.13     ozaki 	$atf_siocXmulti del vlan1 $mcaddr
    676  1.10  yamaguch 
    677  1.10  yamaguch 	# add and delete a same address more than once
    678  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    679  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    680  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    681  1.10  yamaguch 	atf_check -s exit:0 -o match:"${eth_mcaddr}: 3" $HIJACKING ifmcstat
    682  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    683  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    684  1.13     ozaki 	$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.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    690  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    691  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    692  1.13     ozaki 	$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