Home | History | Annotate | Line # | Download | only in if_vlan
t_vlan.sh revision 1.24
      1  1.24  yamaguch #	$NetBSD: t_vlan.sh,v 1.24 2021/08/19 03:27:05 yamaguchi Exp $
      2   1.1     ozaki #
      3   1.1     ozaki # Copyright (c) 2016 Internet Initiative Japan Inc.
      4   1.1     ozaki # All rights reserved.
      5   1.1     ozaki #
      6   1.1     ozaki # Redistribution and use in source and binary forms, with or without
      7   1.1     ozaki # modification, are permitted provided that the following conditions
      8   1.1     ozaki # are met:
      9   1.1     ozaki # 1. Redistributions of source code must retain the above copyright
     10   1.1     ozaki #    notice, this list of conditions and the following disclaimer.
     11   1.1     ozaki # 2. Redistributions in binary form must reproduce the above copyright
     12   1.1     ozaki #    notice, this list of conditions and the following disclaimer in the
     13   1.1     ozaki #    documentation and/or other materials provided with the distribution.
     14   1.1     ozaki #
     15   1.1     ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16   1.1     ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17   1.1     ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18   1.1     ozaki # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19   1.1     ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20   1.1     ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21   1.1     ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22   1.1     ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23   1.1     ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24   1.1     ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25   1.1     ozaki # POSSIBILITY OF SUCH DAMAGE.
     26   1.1     ozaki #
     27   1.1     ozaki 
     28   1.1     ozaki BUS=bus
     29   1.1     ozaki SOCK_LOCAL=unix://commsock1
     30   1.1     ozaki SOCK_REMOTE=unix://commsock2
     31   1.2     ozaki IP_LOCAL0=10.0.0.1
     32   1.2     ozaki IP_LOCAL1=10.0.1.1
     33   1.2     ozaki IP_REMOTE0=10.0.0.2
     34   1.2     ozaki IP_REMOTE1=10.0.1.2
     35  1.10  yamaguch IP_MCADDR0=224.0.0.10
     36  1.16  yamaguch IP6_LOCAL0=fc00::1
     37   1.2     ozaki IP6_LOCAL1=fc00:1::1
     38  1.16  yamaguch IP6_REMOTE0=fc00::2
     39   1.2     ozaki IP6_REMOTE1=fc00:1::2
     40  1.10  yamaguch IP6_MCADDR0=ff11::10
     41  1.10  yamaguch ETH_IP_MCADDR0=01:00:5e:00:00:0a
     42  1.10  yamaguch ETH_IP6_MCADDR0=33:33:00:00:00:10
     43   1.1     ozaki 
     44   1.1     ozaki DEBUG=${DEBUG:-false}
     45   1.1     ozaki 
     46   1.2     ozaki vlan_create_destroy_body_common()
     47   1.2     ozaki {
     48  1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
     49  1.13     ozaki 
     50   1.2     ozaki 	export RUMP_SERVER=${SOCK_LOCAL}
     51   1.2     ozaki 
     52  1.13     ozaki 	$atf_ifconfig vlan0 create
     53  1.13     ozaki 	$atf_ifconfig vlan0 destroy
     54   1.8     ozaki 
     55  1.13     ozaki 	$atf_ifconfig vlan0 create
     56  1.13     ozaki 	$atf_ifconfig vlan0 up
     57  1.13     ozaki 	$atf_ifconfig vlan0 down
     58  1.13     ozaki 	$atf_ifconfig vlan0 destroy
     59  1.13     ozaki 
     60  1.13     ozaki 	$atf_ifconfig shmif0 create
     61  1.13     ozaki 	$atf_ifconfig vlan0 create
     62  1.13     ozaki 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
     63  1.13     ozaki 	$atf_ifconfig vlan0 up
     64  1.13     ozaki 	$atf_ifconfig vlan0 destroy
     65   1.2     ozaki 
     66   1.2     ozaki 	# more than one vlan interface with a same parent interface
     67  1.13     ozaki 	$atf_ifconfig shmif1 create
     68  1.13     ozaki 	$atf_ifconfig vlan0 create
     69  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
     70  1.13     ozaki 	$atf_ifconfig vlan1 create
     71  1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
     72   1.2     ozaki 
     73   1.2     ozaki 	# more than one interface with another parent interface
     74  1.13     ozaki 	$atf_ifconfig vlan2 create
     75  1.13     ozaki 	$atf_ifconfig vlan2 vlan 12 vlanif shmif1
     76  1.13     ozaki 	$atf_ifconfig vlan3 create
     77  1.13     ozaki 	$atf_ifconfig vlan3 vlan 13 vlanif shmif1
     78  1.13     ozaki 	$atf_ifconfig shmif0 destroy
     79   1.2     ozaki 	atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan0
     80   1.2     ozaki 	atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig vlan1
     81   1.2     ozaki 	atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan2
     82   1.2     ozaki 	atf_check -s exit:0 -o match:'shmif1' rump.ifconfig vlan3
     83  1.13     ozaki 	$atf_ifconfig vlan0 destroy
     84  1.13     ozaki 	$atf_ifconfig vlan1 destroy
     85  1.13     ozaki 	$atf_ifconfig vlan2 destroy
     86  1.13     ozaki 	$atf_ifconfig vlan3 destroy
     87   1.2     ozaki 
     88   1.2     ozaki }
     89   1.2     ozaki 
     90   1.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.16  yamaguch vlan_auto_follow_mtu_body_common()
    259  1.16  yamaguch {
    260  1.16  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    261  1.16  yamaguch 	local outfile=./out
    262  1.16  yamaguch 	local af=inet
    263  1.16  yamaguch 	local prefix=24
    264  1.16  yamaguch 	local local0=$IP_LOCAL0
    265  1.16  yamaguch 	local remote0=$IP_REMOTE0
    266  1.16  yamaguch 	local ping_cmd="rump.ping -D -n -w 1 -c 1"
    267  1.16  yamaguch 	local mtu=1500
    268  1.16  yamaguch 	local vlan_mtu=`expr $mtu - 4`
    269  1.16  yamaguch 	# ipv4 header=20bytes, icmp header=8bytes
    270  1.16  yamaguch 	local padding=`expr $vlan_mtu - 20 - 8`
    271  1.16  yamaguch 	local over_padding=`expr $vlan_mtu - 20 - 8 + 1`
    272  1.16  yamaguch 	local nonfrag_msg="$local0 > $remote0: ICMP echo request"
    273  1.16  yamaguch 	# unused for ipv4
    274  1.16  yamaguch 	local frag_msg=""
    275  1.16  yamaguch 
    276  1.16  yamaguch 	if [ x"$1" = x"inet6" ]; then
    277  1.16  yamaguch 		af="inet6"
    278  1.16  yamaguch 		prefix=64
    279  1.16  yamaguch 		local0=$IP6_LOCAL0
    280  1.16  yamaguch 		remote0=$IP6_REMOTE0
    281  1.16  yamaguch 		# ipv6 header=40bytes, icmpv6 header=8bytes
    282  1.16  yamaguch 		padding=`expr $vlan_mtu - 40 - 8`
    283  1.16  yamaguch 		over_padding=`expr $vlan_mtu - 40 - 8 + 1`
    284  1.16  yamaguch 		ping_cmd="rump.ping6 -mm -n -c 1 -i 1"
    285  1.16  yamaguch 		nonfrag_msg="$local0 > $remote0: ICMP6, echo request"
    286  1.16  yamaguch 		frag_msg="$local0 > $remote0: frag .* ICMP6, echo request"
    287  1.16  yamaguch 	fi
    288  1.16  yamaguch 
    289  1.16  yamaguch 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    290  1.16  yamaguch 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    291  1.16  yamaguch 
    292  1.16  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    293  1.16  yamaguch 	$atf_ifconfig shmif0 up
    294  1.16  yamaguch 	export RUMP_SERVER=$SOCK_REMOTE
    295  1.16  yamaguch 	$atf_ifconfig shmif0 up
    296  1.16  yamaguch 
    297  1.16  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    298  1.16  yamaguch 	$atf_ifconfig vlan0 create
    299  1.16  yamaguch 
    300  1.16  yamaguch 	# since upper bound of shmif's mtu is 1500,
    301  1.16  yamaguch 	# so we lower vlan's mtu instead of raising shmif's.
    302  1.16  yamaguch 	# to do this, we change the interface's parameter
    303  1.16  yamaguch 	# such as ND_IFINFO(ifp)->maxmtu that is changed by SIOCSIFMTU.
    304  1.16  yamaguch 
    305  1.16  yamaguch 	# $atf_config shmif0 mtu 1600
    306  1.16  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    307  1.16  yamaguch 	$atf_ifconfig vlan0 mtu 1400
    308  1.16  yamaguch 	$atf_ifconfig vlan0 -vlanif shmif0
    309  1.16  yamaguch 
    310  1.16  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    311  1.16  yamaguch 	$atf_ifconfig vlan0 $af $local0/$prefix
    312  1.16  yamaguch 	$atf_ifconfig vlan0 up
    313  1.16  yamaguch 	$atf_ifconfig -w 10
    314  1.16  yamaguch 
    315  1.16  yamaguch 	export RUMP_SERVER=$SOCK_REMOTE
    316  1.16  yamaguch 	$atf_ifconfig vlan0 create
    317  1.16  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    318  1.16  yamaguch 	$atf_ifconfig vlan0 $af $remote0/$prefix
    319  1.16  yamaguch 	$atf_ifconfig vlan0 up
    320  1.16  yamaguch 	$atf_ifconfig -w 10
    321  1.16  yamaguch 
    322  1.16  yamaguch 	extract_new_packets $BUS > $outfile
    323  1.16  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    324  1.16  yamaguch 
    325  1.16  yamaguch 	atf_check -s exit:0 -o ignore $ping_cmd -s $padding $remote0
    326  1.16  yamaguch 	extract_new_packets $BUS > $outfile
    327  1.16  yamaguch 	atf_check -s exit:0 -o match:"$nonfrag_msg" cat $outfile
    328  1.16  yamaguch 
    329  1.16  yamaguch 	if [ x"$1" = x"inet6" ]; then
    330  1.16  yamaguch 		atf_check -s exit:0 -o ignore $ping_cmd -s $over_padding $remote0
    331  1.16  yamaguch 		extract_new_packets $BUS > $outfile
    332  1.16  yamaguch 		atf_check -s exit:0 -o match:"$frag_msg" cat $outfile
    333  1.16  yamaguch 	else
    334  1.16  yamaguch 		atf_check -s not-exit:0 -o ignore -e match:"Message too long" \
    335  1.16  yamaguch 				$ping_cmd -s $over_padding $remote0
    336  1.16  yamaguch 	fi
    337  1.16  yamaguch }
    338  1.16  yamaguch 
    339  1.16  yamaguch atf_test_case vlan_auto_follow_mtu cleanup
    340  1.16  yamaguch vlan_auto_follow_mtu_head()
    341  1.16  yamaguch {
    342  1.16  yamaguch 
    343  1.16  yamaguch 	atf_set "descr" "tests of setting vlan mtu using IPv4"
    344  1.16  yamaguch 	atf_set "require.progs" "rump_server"
    345  1.16  yamaguch }
    346  1.16  yamaguch 
    347  1.16  yamaguch vlan_auto_follow_mtu_body()
    348  1.16  yamaguch {
    349  1.16  yamaguch 	rump_server_start $SOCK_LOCAL vlan
    350  1.16  yamaguch 	rump_server_start $SOCK_REMOTE vlan
    351  1.16  yamaguch 
    352  1.16  yamaguch 	vlan_auto_follow_mtu_body_common inet
    353  1.16  yamaguch }
    354  1.16  yamaguch 
    355  1.16  yamaguch vlan_auto_follow_mtu_cleanup()
    356  1.16  yamaguch {
    357  1.16  yamaguch 
    358  1.16  yamaguch 	$DEBUG && dump
    359  1.16  yamaguch 	cleanup
    360  1.16  yamaguch }
    361  1.16  yamaguch 
    362  1.16  yamaguch atf_test_case vlan_auto_follow_mtu6 cleanup
    363  1.16  yamaguch vlan_auto_follow_mtu6_head()
    364  1.16  yamaguch {
    365  1.16  yamaguch 
    366  1.16  yamaguch 	atf_set "descr" "tests of setting vlan mtu using IPv6"
    367  1.16  yamaguch 	atf_set "require.progs" "rump_server"
    368  1.16  yamaguch }
    369  1.16  yamaguch 
    370  1.16  yamaguch vlan_auto_follow_mtu6_body()
    371  1.16  yamaguch {
    372  1.16  yamaguch 	rump_server_start $SOCK_LOCAL vlan netinet6
    373  1.16  yamaguch 	rump_server_start $SOCK_REMOTE vlan netinet6
    374  1.16  yamaguch 
    375  1.16  yamaguch 	vlan_auto_follow_mtu_body_common inet6
    376  1.16  yamaguch }
    377  1.16  yamaguch 
    378  1.16  yamaguch vlan_auto_follow_mtu6_cleanup()
    379  1.16  yamaguch {
    380  1.16  yamaguch 
    381  1.16  yamaguch 	$DEBUG && dump
    382  1.16  yamaguch 	cleanup
    383  1.16  yamaguch }
    384  1.16  yamaguch 
    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.19  yamaguch 	atf_check -s exit:0 -o match:'status: +down' \
    593  1.19  yamaguch 	    rump.ifconfig vlan0
    594  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    595  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    596  1.19  yamaguch 	atf_check -s exit:0 -o match:'status: +down' \
    597  1.19  yamaguch 	    rump.ifconfig vlan0
    598   1.2     ozaki 
    599  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    600  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    601   1.2     ozaki 
    602  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    603  1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif1
    604  1.14     ozaki 	atf_check -s exit:0 rump.ifconfig vlan0 -vlanif shmif2
    605   1.2     ozaki 
    606  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    607   1.2     ozaki 
    608  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    609   1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    610   1.2     ozaki 	    rump.ifconfig vlan0 mtu 1497
    611  1.13     ozaki 	$atf_ifconfig vlan0 mtu 1496
    612  1.13     ozaki 	$atf_ifconfig vlan0 mtu 42
    613   1.2     ozaki 	atf_check -s exit:0 -e match:'Invalid argument' \
    614   1.2     ozaki 	    rump.ifconfig vlan0 mtu 41
    615  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif
    616   1.4   msaitoh 
    617  1.13     ozaki 	$atf_ifconfig vlan1 create
    618  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    619   1.4   msaitoh 	atf_check -s not-exit:0 -e match:'File exists' \
    620   1.4   msaitoh 	    rump.ifconfig vlan1 vlan 10 vlanif shmif0
    621  1.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    622   1.5   msaitoh 
    623  1.13     ozaki 	$atf_ifconfig vlan1 -vlanif shmif1
    624  1.13     ozaki 	$atf_ifconfig vlan1 vlan 10 vlanif shmif1
    625   1.5   msaitoh 
    626  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    627  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    628   1.2     ozaki }
    629   1.2     ozaki 
    630   1.2     ozaki atf_test_case vlan_configs cleanup
    631   1.2     ozaki vlan_configs_head()
    632   1.2     ozaki {
    633   1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id"
    634   1.2     ozaki 	atf_set "require.progs" "rump_server"
    635   1.2     ozaki }
    636   1.2     ozaki 
    637   1.2     ozaki vlan_configs_body()
    638   1.2     ozaki {
    639   1.2     ozaki 
    640   1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan
    641   1.2     ozaki 
    642   1.2     ozaki 	vlan_configs_body_common
    643   1.2     ozaki 
    644   1.2     ozaki }
    645   1.2     ozaki 
    646   1.2     ozaki vlan_configs_cleanup()
    647   1.2     ozaki {
    648   1.2     ozaki 
    649   1.2     ozaki 	$DEBUG && dump
    650   1.2     ozaki 	cleanup
    651   1.2     ozaki }
    652   1.2     ozaki 
    653   1.2     ozaki atf_test_case vlan_configs6 cleanup
    654   1.2     ozaki vlan_configs6_head()
    655   1.2     ozaki {
    656   1.2     ozaki 	atf_set "descr" "tests of configuration except vlan id using IPv6"
    657   1.2     ozaki 	atf_set "require.progs" "rump_server"
    658   1.2     ozaki }
    659   1.2     ozaki 
    660   1.2     ozaki vlan_configs6_body()
    661   1.2     ozaki {
    662   1.2     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6
    663   1.2     ozaki 
    664   1.2     ozaki 	vlan_configs_body_common
    665   1.2     ozaki }
    666   1.2     ozaki 
    667   1.2     ozaki vlan_configs6_cleanup()
    668   1.2     ozaki {
    669   1.2     ozaki 	$DEBUG && dump
    670   1.2     ozaki 	cleanup
    671   1.2     ozaki }
    672   1.2     ozaki 
    673   1.9     ozaki vlan_bridge_body_common()
    674   1.9     ozaki {
    675  1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    676  1.18  yamaguch 	local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig"
    677   1.9     ozaki 
    678   1.9     ozaki 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    679   1.9     ozaki 
    680   1.9     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    681  1.13     ozaki 	$atf_ifconfig shmif0 up
    682   1.9     ozaki 
    683  1.13     ozaki 	$atf_ifconfig vlan0 create
    684   1.9     ozaki 	$DEBUG && rump.ifconfig vlan0
    685   1.9     ozaki 
    686  1.13     ozaki 	$atf_ifconfig bridge0 create
    687  1.18  yamaguch 	$atf_ifconfig bridge0 up
    688  1.18  yamaguch 
    689  1.18  yamaguch 	#
    690  1.18  yamaguch 	# Add vlan to bridge member
    691  1.18  yamaguch 	#
    692  1.18  yamaguch 	$atf_ifconfig bridge0 mtu 1496
    693  1.22  yamaguch 
    694  1.22  yamaguch 	# vlan0 can not add to bridge member
    695  1.22  yamaguch 	# because it is not an ethernet device
    696  1.22  yamaguch 	atf_check -s not-exit:0 -e match:'Invalid argument' \
    697  1.22  yamaguch 	    $HIJACKING /sbin/brconfig bridge0 add vlan0
    698  1.22  yamaguch 
    699  1.22  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    700  1.22  yamaguch 	$atf_ifconfig vlan0 up
    701  1.18  yamaguch 	atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0
    702  1.18  yamaguch 
    703  1.22  yamaguch 	# vlan0 becomes an ethernet device
    704  1.22  yamaguch 	# after attaching the parent interface
    705  1.18  yamaguch 	$atf_brconfig bridge0 add vlan0
    706  1.22  yamaguch 	$DEBUG && $HIJACKING /sbin/brconfig bridge0
    707  1.22  yamaguch 
    708  1.18  yamaguch 	$atf_brconfig bridge0 delete vlan0
    709  1.18  yamaguch 
    710  1.22  yamaguch 	$atf_brconfig bridge0 add vlan0
    711  1.22  yamaguch 	$atf_ifconfig vlan0 -vlanif
    712  1.22  yamaguch 	atf_check -s exit:0 -o not-match:'vlan0' \
    713  1.22  yamaguch 	    $HIJACKING /sbin/brconfig bridge0
    714  1.22  yamaguch 	atf_check -s not-exit:0 -e match:'No such' \
    715  1.22  yamaguch 	    $HIJACKING /sbin/brconfig bridge0 delete vlan0
    716  1.22  yamaguch 
    717  1.18  yamaguch 	#
    718  1.18  yamaguch 	# decrease MTU on adding to bridge member
    719  1.18  yamaguch 	#
    720  1.18  yamaguch 	$atf_ifconfig bridge0 mtu 1495
    721  1.22  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    722  1.22  yamaguch 	$atf_ifconfig vlan0 up
    723  1.18  yamaguch 	atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0
    724  1.18  yamaguch 
    725  1.18  yamaguch 	$atf_brconfig bridge0 add vlan0
    726  1.23  yamaguch 	$DEBUG && $HIJACKING /sbin/brconfig bridge0
    727  1.18  yamaguch 	atf_check -s exit:0 -o match:'mtu 1495' rump.ifconfig vlan0
    728  1.18  yamaguch 	$atf_brconfig bridge0 delete vlan0
    729  1.18  yamaguch 
    730  1.18  yamaguch 	#
    731  1.18  yamaguch 	# increase MTU on adding to bridge member
    732  1.18  yamaguch 	#
    733  1.13     ozaki 	$atf_ifconfig bridge0 mtu 1496
    734  1.18  yamaguch 	$atf_ifconfig vlan0 mtu 1495
    735  1.18  yamaguch 	$atf_brconfig bridge0 add vlan0
    736  1.18  yamaguch 
    737  1.23  yamaguch 	$DEBUG && $HIJACKING /sbin/brconfig bridge0
    738  1.18  yamaguch 	atf_check -s exit:0 -o match:'mtu 1496' rump.ifconfig vlan0
    739  1.18  yamaguch 	$atf_brconfig bridge0 delete vlan0
    740   1.9     ozaki 
    741  1.18  yamaguch 	$atf_ifconfig bridge0 mtu 1497
    742  1.18  yamaguch 	atf_check -s not-exit:0 -o ignore -e ignore \
    743  1.23  yamaguch 	    $HIJACKING /sbin/brconfig bridge0 add vlan0
    744  1.18  yamaguch 
    745  1.18  yamaguch 	#
    746  1.18  yamaguch 	# Destroy a vlan interface that is bridge member
    747  1.18  yamaguch 	#
    748  1.18  yamaguch 	$atf_ifconfig bridge0 mtu 1496
    749  1.18  yamaguch 	$atf_brconfig bridge0 add vlan0
    750  1.13     ozaki 	$atf_ifconfig vlan0 destroy
    751   1.9     ozaki 
    752   1.9     ozaki 	rump_server_destroy_ifaces
    753   1.9     ozaki }
    754   1.9     ozaki 
    755   1.9     ozaki atf_test_case vlan_bridge cleanup
    756   1.9     ozaki vlan_bridge_head()
    757   1.9     ozaki {
    758   1.9     ozaki 
    759   1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv4)"
    760   1.9     ozaki 	atf_set "require.progs" "rump_server"
    761   1.9     ozaki }
    762   1.9     ozaki 
    763   1.9     ozaki vlan_bridge_body()
    764   1.9     ozaki {
    765   1.9     ozaki 
    766   1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan bridge
    767   1.9     ozaki 	vlan_bridge_body_common
    768   1.9     ozaki }
    769   1.9     ozaki 
    770   1.9     ozaki vlan_bridge_cleanup()
    771   1.9     ozaki {
    772   1.9     ozaki 
    773   1.9     ozaki 	$DEBUG && dump
    774   1.9     ozaki 	cleanup
    775   1.9     ozaki }
    776   1.9     ozaki 
    777   1.9     ozaki atf_test_case vlan_bridge6 cleanup
    778   1.9     ozaki vlan_bridge6_head()
    779   1.9     ozaki {
    780   1.9     ozaki 
    781   1.9     ozaki 	atf_set "descr" "tests of vlan interfaces with bridges (IPv6)"
    782   1.9     ozaki 	atf_set "require.progs" "rump_server"
    783   1.9     ozaki }
    784   1.9     ozaki 
    785   1.9     ozaki vlan_bridge6_body()
    786   1.9     ozaki {
    787   1.9     ozaki 
    788   1.9     ozaki 	rump_server_start $SOCK_LOCAL vlan netinet6 bridge
    789   1.9     ozaki 	vlan_bridge_body_common
    790   1.9     ozaki }
    791   1.9     ozaki 
    792   1.9     ozaki vlan_bridge6_cleanup()
    793   1.9     ozaki {
    794   1.9     ozaki 
    795   1.9     ozaki 	$DEBUG && dump
    796   1.9     ozaki 	cleanup
    797   1.9     ozaki }
    798   1.9     ozaki 
    799  1.10  yamaguch vlan_multicast_body_common()
    800  1.10  yamaguch {
    801  1.13     ozaki 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    802  1.10  yamaguch 	local af="inet"
    803  1.10  yamaguch 	local local0=$IP_LOCAL0
    804  1.10  yamaguch 	local local1=$IP_LOCAL1
    805  1.10  yamaguch 	local mcaddr=$IP_MCADDR0
    806  1.10  yamaguch 	local eth_mcaddr=$ETH_IP_MCADDR0
    807  1.10  yamaguch 	local prefix=24
    808  1.10  yamaguch 	local siocXmulti="$(atf_get_srcdir)/siocXmulti"
    809  1.13     ozaki 	local atf_siocXmulti="atf_check -s exit:0 $HIJACKING $siocXmulti"
    810  1.10  yamaguch 
    811  1.10  yamaguch 	if [ x"$1" =  x"inet6" ]; then
    812  1.10  yamaguch 		af="inet6"
    813  1.10  yamaguch 		prefix=64
    814  1.10  yamaguch 		local0=$IP6_LOCAL0
    815  1.10  yamaguch 		local1=$IP6_LOCAL1
    816  1.10  yamaguch 		mcaddr=$IP6_MCADDR0
    817  1.10  yamaguch 		eth_mcaddr=$ETH_IP6_MCADDR0
    818  1.10  yamaguch 	fi
    819  1.10  yamaguch 
    820  1.10  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    821  1.10  yamaguch 
    822  1.13     ozaki 	$atf_ifconfig shmif0 create
    823  1.13     ozaki 	$atf_ifconfig shmif0 linkstr net0 up
    824  1.13     ozaki 	$atf_ifconfig vlan0 create
    825  1.13     ozaki 	$atf_ifconfig vlan0 vlan 10 vlanif shmif0
    826  1.13     ozaki 	$atf_ifconfig vlan0 $af $local0/$prefix up
    827  1.13     ozaki 	$atf_ifconfig vlan1 create
    828  1.13     ozaki 	$atf_ifconfig vlan1 vlan 11 vlanif shmif0
    829  1.13     ozaki 	$atf_ifconfig vlan1 $af $local1/$prefix up
    830  1.13     ozaki 	$atf_ifconfig -w 10
    831  1.10  yamaguch 
    832  1.10  yamaguch 	# check the initial state
    833  1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    834  1.10  yamaguch 
    835  1.10  yamaguch 	# add a multicast address
    836  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    837  1.10  yamaguch 	atf_check -s exit:0 -o match:"$eth_mcaddr" $HIJACKING ifmcstat
    838  1.10  yamaguch 
    839  1.10  yamaguch 	# delete the address
    840  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    841  1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    842  1.10  yamaguch 
    843  1.10  yamaguch 	# delete a non-existing address
    844  1.14     ozaki 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    845  1.14     ozaki 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    846  1.10  yamaguch 
    847  1.10  yamaguch 	# add an address to different interfaces
    848  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    849  1.13     ozaki 	$atf_siocXmulti add vlan1 $mcaddr
    850  1.17  nisimura 	atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 2" $HIJACKING ifmcstat
    851  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    852  1.10  yamaguch 
    853  1.10  yamaguch 	# delete the address with invalid interface
    854  1.11  yamaguch 	atf_check -s not-exit:0 -e match:"Invalid argument" \
    855  1.10  yamaguch 	    $HIJACKING $siocXmulti del vlan0 $mcaddr
    856  1.10  yamaguch 
    857  1.13     ozaki 	$atf_siocXmulti del vlan1 $mcaddr
    858  1.10  yamaguch 
    859  1.10  yamaguch 	# add and delete a same address more than once
    860  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    861  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    862  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    863  1.17  nisimura 	atf_check -s exit:0 -o match:"${eth_mcaddr} refcount 3" $HIJACKING ifmcstat
    864  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    865  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    866  1.13     ozaki 	$atf_siocXmulti del vlan0 $mcaddr
    867  1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    868  1.10  yamaguch 
    869  1.10  yamaguch 	# delete all address added to parent device when remove
    870  1.10  yamaguch 	# the config of parent interface
    871  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    872  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    873  1.13     ozaki 	$atf_siocXmulti add vlan0 $mcaddr
    874  1.13     ozaki 	$atf_ifconfig vlan0 -vlanif shmif0
    875  1.10  yamaguch 	atf_check -s exit:0 -o not-match:"$eth_mcaddr" $HIJACKING ifmcstat
    876  1.10  yamaguch }
    877  1.10  yamaguch 
    878  1.10  yamaguch atf_test_case vlan_multicast cleanup
    879  1.10  yamaguch vlan_multicast_head()
    880  1.10  yamaguch {
    881  1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting"
    882  1.10  yamaguch 	atf_set "require.progs" "rump_server"
    883  1.10  yamaguch }
    884  1.10  yamaguch 
    885  1.10  yamaguch vlan_multicast_body()
    886  1.10  yamaguch {
    887  1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan
    888  1.10  yamaguch 
    889  1.10  yamaguch 	vlan_multicast_body_common inet
    890  1.10  yamaguch }
    891  1.10  yamaguch 
    892  1.10  yamaguch vlan_multicast_cleanup()
    893  1.10  yamaguch {
    894  1.10  yamaguch 	$DEBUG && dump
    895  1.10  yamaguch 	cleanup
    896  1.10  yamaguch }
    897  1.10  yamaguch 
    898  1.10  yamaguch atf_test_case vlan_multicast6 cleanup
    899  1.10  yamaguch vlan_multicast6_head()
    900  1.10  yamaguch {
    901  1.10  yamaguch 	atf_set "descr" "tests of multicast address adding and deleting with IPv6"
    902  1.10  yamaguch 	atf_set "require.progs" "rump_server"
    903  1.10  yamaguch }
    904  1.10  yamaguch 
    905  1.10  yamaguch vlan_multicast6_body()
    906  1.10  yamaguch {
    907  1.10  yamaguch 	rump_server_start $SOCK_LOCAL vlan netinet6
    908  1.10  yamaguch 
    909  1.10  yamaguch 	vlan_multicast_body_common inet6
    910  1.10  yamaguch }
    911  1.10  yamaguch 
    912  1.10  yamaguch vlan_multicast6_cleanup()
    913  1.10  yamaguch {
    914  1.10  yamaguch 	$DEBUG && dump
    915  1.10  yamaguch 	cleanup
    916  1.10  yamaguch }
    917  1.10  yamaguch 
    918  1.20  yamaguch atf_test_case vlan_promisc cleanup
    919  1.20  yamaguch vlan_promisc_head()
    920  1.20  yamaguch {
    921  1.20  yamaguch 
    922  1.20  yamaguch 	atf_set "descr" "tests of IFF_PROMISC of vlan"
    923  1.20  yamaguch 	atf_set "require.progs" "rump_server"
    924  1.20  yamaguch }
    925  1.20  yamaguch 
    926  1.20  yamaguch vlan_promisc_body()
    927  1.20  yamaguch {
    928  1.20  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    929  1.20  yamaguch 	local atf_brconfig="atf_check -s exit:0 $HIJACKING /sbin/brconfig"
    930  1.20  yamaguch 	local atf_arp="atf_check -s exit:0 rump.arp"
    931  1.20  yamaguch 	local bpfopen="$HIJACKING $(atf_get_srcdir)/bpfopen"
    932  1.24  yamaguch 	bpfopen="$bpfopen -dv -b /rump/dev/bpf"
    933  1.24  yamaguch 	local pidfile="./bpfopen.pid"
    934  1.20  yamaguch 	local macaddr=""
    935  1.20  yamaguch 
    936  1.20  yamaguch 	rump_server_bpf_start $SOCK_LOCAL vlan bridge
    937  1.20  yamaguch 	rump_server_start $SOCK_REMOTE vlan
    938  1.20  yamaguch 
    939  1.20  yamaguch 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
    940  1.20  yamaguch 	rump_server_add_iface $SOCK_LOCAL shmif1
    941  1.20  yamaguch 	rump_server_add_iface $SOCK_LOCAL vlan0
    942  1.20  yamaguch 	rump_server_add_iface $SOCK_LOCAL vlan1
    943  1.20  yamaguch 	rump_server_add_iface $SOCK_LOCAL bridge0
    944  1.20  yamaguch 
    945  1.20  yamaguch 	rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
    946  1.20  yamaguch 	rump_server_add_iface $SOCK_REMOTE vlan0
    947  1.20  yamaguch 
    948  1.20  yamaguch 	macaddr=$(get_macaddr $SOCK_LOCAL shmif1)
    949  1.20  yamaguch 
    950  1.20  yamaguch 	export RUMP_SERVER=$SOCK_REMOTE
    951  1.20  yamaguch 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    952  1.20  yamaguch 	$atf_ifconfig shmif0 up
    953  1.20  yamaguch 	$atf_ifconfig vlan0 inet $IP_REMOTE0/24
    954  1.20  yamaguch 	$atf_ifconfig vlan0 up
    955  1.20  yamaguch 	$atf_ifconfig -w 10
    956  1.20  yamaguch 	$atf_arp -s $IP_LOCAL0 $macaddr
    957  1.20  yamaguch 
    958  1.20  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
    959  1.20  yamaguch 	$atf_ifconfig bridge0 mtu 1496
    960  1.20  yamaguch 	#
    961  1.20  yamaguch 	# When vlan IF is PROMISC, the parent is also PROMISC
    962  1.20  yamaguch 	#
    963  1.20  yamaguch 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    964  1.20  yamaguch 	$atf_ifconfig shmif0 up
    965  1.20  yamaguch 	$atf_ifconfig vlan0 up
    966  1.20  yamaguch 
    967  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
    968  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0
    969  1.20  yamaguch 
    970  1.20  yamaguch 	$atf_brconfig bridge0 add vlan0
    971  1.20  yamaguch 	$atf_ifconfig bridge0 up
    972  1.20  yamaguch 	atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0
    973  1.20  yamaguch 	atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0
    974  1.20  yamaguch 
    975  1.20  yamaguch 	$atf_ifconfig bridge0 down
    976  1.20  yamaguch 	$atf_brconfig bridge0 delete vlan0
    977  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
    978  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0
    979  1.20  yamaguch 	$atf_ifconfig vlan0 -vlanif
    980  1.20  yamaguch 
    981  1.20  yamaguch 	#
    982  1.20  yamaguch 	# drop unicast packets that is not for the host
    983  1.20  yamaguch 	#
    984  1.20  yamaguch 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
    985  1.20  yamaguch 	$atf_ifconfig -w 10
    986  1.20  yamaguch 
    987  1.24  yamaguch 	atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile shmif0
    988  1.20  yamaguch 
    989  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
    990  1.20  yamaguch 	atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0
    991  1.20  yamaguch 	atf_check -s exit:0 -o ignore rump.ifconfig -z vlan0
    992  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'input:.*errors' \
    993  1.20  yamaguch 	    rump.ifconfig -v vlan0
    994  1.20  yamaguch 
    995  1.20  yamaguch 	export RUMP_SERVER=$SOCK_REMOTE
    996  1.20  yamaguch 	atf_check -s not-exit:0 -o ignore -e ignore \
    997  1.20  yamaguch 	    rump.ping -c 3 -i 0.2 $IP_LOCAL0
    998  1.20  yamaguch 
    999  1.20  yamaguch 	export RUMP_SERVER=$SOCK_LOCAL
   1000  1.20  yamaguch 	atf_check -s exit:0 -o match:'input:.*errors' \
   1001  1.20  yamaguch 	    rump.ifconfig -v vlan0
   1002  1.20  yamaguch 
   1003  1.24  yamaguch 	atf_check -s exit:0 kill -TERM $(cat $pidfile)
   1004  1.20  yamaguch 	sleep 2
   1005  1.20  yamaguch 
   1006  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
   1007  1.20  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0
   1008  1.21  yamaguch 	$atf_ifconfig vlan0 -vlanif
   1009  1.21  yamaguch 
   1010  1.21  yamaguch 	#
   1011  1.21  yamaguch 	# clear IFF_PROMISC after bpf_detach called from ether_ifdetach
   1012  1.21  yamaguch 	#
   1013  1.21  yamaguch 	$atf_ifconfig vlan0 vlan 1 vlanif shmif0
   1014  1.21  yamaguch 	$atf_ifconfig vlan0 up
   1015  1.21  yamaguch 
   1016  1.24  yamaguch 	atf_check -s exit:0 -e match:'bpf opened' $bpfopen -p $pidfile vlan0
   1017  1.21  yamaguch 
   1018  1.21  yamaguch 	atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig vlan0
   1019  1.21  yamaguch 	atf_check -s exit:0 -o match:'PROMISC' rump.ifconfig shmif0
   1020  1.21  yamaguch 
   1021  1.21  yamaguch 	$atf_ifconfig vlan0 -vlanif
   1022  1.21  yamaguch 
   1023  1.21  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
   1024  1.21  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig shmif0
   1025  1.21  yamaguch 
   1026  1.24  yamaguch 	atf_check -s exit:0 kill -TERM $(cat $pidfile)
   1027  1.24  yamaguch 	sleep 2
   1028  1.21  yamaguch 	atf_check -s exit:0 -o not-match:'PROMISC' rump.ifconfig vlan0
   1029  1.20  yamaguch }
   1030  1.20  yamaguch 
   1031  1.20  yamaguch vlan_promisc_cleanup()
   1032  1.20  yamaguch {
   1033  1.20  yamaguch 
   1034  1.20  yamaguch 	$DEBUG && dump
   1035  1.20  yamaguch 	cleanup
   1036  1.20  yamaguch }
   1037  1.20  yamaguch 
   1038   1.1     ozaki atf_init_test_cases()
   1039   1.1     ozaki {
   1040   1.1     ozaki 
   1041   1.1     ozaki 	atf_add_test_case vlan_create_destroy
   1042   1.1     ozaki 	atf_add_test_case vlan_basic
   1043  1.16  yamaguch 	atf_add_test_case vlan_auto_follow_mtu
   1044   1.2     ozaki 	atf_add_test_case vlan_vlanid
   1045   1.2     ozaki 	atf_add_test_case vlan_configs
   1046   1.9     ozaki 	atf_add_test_case vlan_bridge
   1047  1.10  yamaguch 	atf_add_test_case vlan_multicast
   1048  1.20  yamaguch 	atf_add_test_case vlan_promisc
   1049   1.2     ozaki 
   1050   1.2     ozaki 	atf_add_test_case vlan_create_destroy6
   1051   1.2     ozaki 	atf_add_test_case vlan_basic6
   1052  1.16  yamaguch 	atf_add_test_case vlan_auto_follow_mtu6
   1053   1.2     ozaki 	atf_add_test_case vlan_vlanid6
   1054   1.2     ozaki 	atf_add_test_case vlan_configs6
   1055   1.9     ozaki 	atf_add_test_case vlan_bridge6
   1056  1.10  yamaguch 	atf_add_test_case vlan_multicast6
   1057   1.1     ozaki }
   1058