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