Home | History | Annotate | Line # | Download | only in if_lagg
t_lagg.sh revision 1.6
      1  1.6  yamaguch #	$NetBSD: t_lagg.sh,v 1.6 2021/11/08 06:24:11 yamaguchi Exp $
      2  1.1  yamaguch #
      3  1.1  yamaguch # Copyright (c) 2021 Internet Initiative Japan Inc.
      4  1.1  yamaguch # All rights reserved.
      5  1.1  yamaguch #
      6  1.1  yamaguch # Redistribution and use in source and binary forms, with or without
      7  1.1  yamaguch # modification, are permitted provided that the following conditions
      8  1.1  yamaguch # are met:
      9  1.1  yamaguch # 1. Redistributions of source code must retain the above copyright
     10  1.1  yamaguch #    notice, this list of conditions and the following disclaimer.
     11  1.1  yamaguch # 2. Redistributions in binary form must reproduce the above copyright
     12  1.1  yamaguch #    notice, this list of conditions and the following disclaimer in the
     13  1.1  yamaguch #    documentation and/or other materials provided with the distribution.
     14  1.1  yamaguch #
     15  1.1  yamaguch # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16  1.1  yamaguch # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17  1.1  yamaguch # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18  1.1  yamaguch # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19  1.1  yamaguch # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20  1.1  yamaguch # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21  1.1  yamaguch # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22  1.1  yamaguch # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23  1.1  yamaguch # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24  1.1  yamaguch # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25  1.1  yamaguch # POSSIBILITY OF SUCH DAMAGE.
     26  1.1  yamaguch #
     27  1.1  yamaguch 
     28  1.1  yamaguch SOCK_HOST0=unix://commsock0
     29  1.1  yamaguch SOCK_HOST1=unix://commsock1
     30  1.1  yamaguch SOCK_HOST2=unix://commsock2
     31  1.1  yamaguch BUS0=bus0
     32  1.1  yamaguch BUS1=bus1
     33  1.1  yamaguch BUS2=bus2
     34  1.1  yamaguch IP4ADDR0=192.168.0.1
     35  1.1  yamaguch IP4ADDR1=192.168.0.2
     36  1.1  yamaguch IP4ADDR2=192.168.1.1
     37  1.1  yamaguch IP4ADDR3=192.168.1.2
     38  1.1  yamaguch IP6ADDR0=fc00::1
     39  1.1  yamaguch IP6ADDR1=fc00::2
     40  1.1  yamaguch IP6ADDR2=fc00:1::1
     41  1.1  yamaguch IP6ADDR3=fc00:1::2
     42  1.1  yamaguch WAITTIME=20
     43  1.1  yamaguch 
     44  1.1  yamaguch DEBUG=${DEBUG:-false}
     45  1.1  yamaguch 
     46  1.1  yamaguch wait_state()
     47  1.1  yamaguch {
     48  1.1  yamaguch 	local state=$1
     49  1.1  yamaguch 	local if_lagg=$2
     50  1.1  yamaguch 	local if_port=$3
     51  1.1  yamaguch 
     52  1.1  yamaguch 	local n=$WAITTIME
     53  1.1  yamaguch 	local cmd_grep="grep -q ${state}"
     54  1.1  yamaguch 
     55  1.1  yamaguch 	if [ x"$if_port" != x"" ]; then
     56  1.1  yamaguch 		cmd_grep="grep $if_port | $cmd_grep"
     57  1.1  yamaguch 	fi
     58  1.1  yamaguch 
     59  1.1  yamaguch 	for i in $(seq $n); do
     60  1.1  yamaguch 		rump.ifconfig $if_lagg | eval $cmd_grep
     61  1.1  yamaguch 		if [ $? = 0 ] ; then
     62  1.1  yamaguch 			$DEBUG && echo "wait for $i seconds."
     63  1.1  yamaguch 			return 0
     64  1.1  yamaguch 		fi
     65  1.1  yamaguch 
     66  1.1  yamaguch 		sleep 1
     67  1.1  yamaguch 	done
     68  1.1  yamaguch 
     69  1.1  yamaguch 	$DEBUG && rump.ifconfig -v $if_lagg
     70  1.1  yamaguch 	atf_fail "Couldn't be ${state} for $n seconds."
     71  1.1  yamaguch }
     72  1.1  yamaguch wait_for_distributing()
     73  1.1  yamaguch {
     74  1.1  yamaguch 
     75  1.1  yamaguch 	wait_state "DISTRIBUTING" $*
     76  1.1  yamaguch }
     77  1.1  yamaguch 
     78  1.1  yamaguch expected_inactive()
     79  1.1  yamaguch {
     80  1.1  yamaguch 	local if_lagg=$1
     81  1.1  yamaguch 	local if_port=$2
     82  1.1  yamaguch 
     83  1.1  yamaguch 	sleep 3 # wait a little
     84  1.1  yamaguch 	atf_check -s exit:0 -o not-match:"${if_port}.*ACTIVE" \
     85  1.1  yamaguch 	    rump.ifconfig ${if_lagg}
     86  1.1  yamaguch }
     87  1.1  yamaguch 
     88  1.3  yamaguch setup_l2tp_ipv4tunnel()
     89  1.3  yamaguch {
     90  1.3  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
     91  1.3  yamaguch 
     92  1.3  yamaguch 	local a_addr0=10.0.0.1
     93  1.3  yamaguch 	local a_addr1=10.0.0.2
     94  1.3  yamaguch 	local b_addr0=10.0.1.1
     95  1.3  yamaguch 	local b_addr1=10.0.1.2
     96  1.3  yamaguch 	local c_addr0=10.0.2.1
     97  1.3  yamaguch 	local c_addr1=10.0.2.2
     98  1.3  yamaguch 
     99  1.3  yamaguch 	local a_session0=1001
    100  1.3  yamaguch 	local a_session1=1002
    101  1.3  yamaguch 	local b_session0=1011
    102  1.3  yamaguch 	local b_session1=1012
    103  1.3  yamaguch 	local c_session0=1021
    104  1.3  yamaguch 	local c_session1=1022
    105  1.3  yamaguch 
    106  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST0 l2tp0
    107  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST0 l2tp1
    108  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST0 l2tp2
    109  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST1 l2tp0
    110  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST1 l2tp1
    111  1.3  yamaguch 	rump_server_add_iface $SOCK_HOST1 l2tp2
    112  1.3  yamaguch 
    113  1.3  yamaguch 
    114  1.3  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    115  1.3  yamaguch 	$atf_ifconfig shmif0 $a_addr0/24
    116  1.3  yamaguch 	$atf_ifconfig l2tp0  tunnel  $a_addr0    $a_addr1
    117  1.3  yamaguch 	$atf_ifconfig l2tp0  session $a_session0 $a_session1
    118  1.3  yamaguch 
    119  1.3  yamaguch 	$atf_ifconfig shmif1 $b_addr0/24
    120  1.3  yamaguch 	$atf_ifconfig l2tp1  tunnel  $b_addr0    $b_addr1
    121  1.3  yamaguch 	$atf_ifconfig l2tp1  session $b_session0 $b_session1
    122  1.3  yamaguch 
    123  1.3  yamaguch 	$atf_ifconfig shmif2 $c_addr0/24
    124  1.3  yamaguch 	$atf_ifconfig l2tp2  tunnel  $c_addr0    $c_addr1
    125  1.3  yamaguch 	$atf_ifconfig l2tp2  session $c_session0 $c_session1
    126  1.3  yamaguch 
    127  1.3  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    128  1.3  yamaguch 	$atf_ifconfig shmif0 $a_addr1/24
    129  1.3  yamaguch 	$atf_ifconfig l2tp0  tunnel  $a_addr1    $a_addr0
    130  1.3  yamaguch 	$atf_ifconfig l2tp0  session $a_session1 $a_session0
    131  1.3  yamaguch 
    132  1.3  yamaguch 	$atf_ifconfig shmif1 $b_addr1/24
    133  1.3  yamaguch 	$atf_ifconfig l2tp1  tunnel  $b_addr1    $b_addr0
    134  1.3  yamaguch 	$atf_ifconfig l2tp1  session $b_session1 $b_session0
    135  1.3  yamaguch 
    136  1.3  yamaguch 	$atf_ifconfig shmif2 $c_addr1/24
    137  1.3  yamaguch 	$atf_ifconfig l2tp2  tunnel  $c_addr1    $c_addr0
    138  1.3  yamaguch 	$atf_ifconfig l2tp2  session $c_session1 $c_session0
    139  1.3  yamaguch }
    140  1.3  yamaguch 
    141  1.1  yamaguch atf_test_case lagg_ifconfig cleanup
    142  1.1  yamaguch lagg_ifconfig_head()
    143  1.1  yamaguch {
    144  1.1  yamaguch 
    145  1.1  yamaguch 	atf_set "descr" "tests for create, destroy, and ioctl of lagg(4)"
    146  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    147  1.1  yamaguch }
    148  1.1  yamaguch 
    149  1.1  yamaguch lagg_ifconfig_body()
    150  1.1  yamaguch {
    151  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    152  1.1  yamaguch 
    153  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    154  1.1  yamaguch 
    155  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    156  1.1  yamaguch 	$atf_ifconfig lagg0 create
    157  1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    158  1.1  yamaguch 
    159  1.1  yamaguch 	$atf_ifconfig lagg0 create
    160  1.1  yamaguch 	$atf_ifconfig shmif0 create
    161  1.1  yamaguch 
    162  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto none
    163  1.1  yamaguch 	atf_check -s exit:0 -o match:'laggproto none' \
    164  1.1  yamaguch 	    rump.ifconfig lagg0
    165  1.1  yamaguch 
    166  1.1  yamaguch 	# cannot add a port while protocol is none
    167  1.1  yamaguch 	atf_check -s not-exit:0 -e ignore \
    168  1.1  yamaguch 	    rump.ifconfig lagg0 laggport shmif0
    169  1.1  yamaguch 
    170  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    171  1.1  yamaguch 	atf_check -s exit:0 -o match:'laggproto lacp' \
    172  1.1  yamaguch 	    rump.ifconfig lagg0
    173  1.1  yamaguch 
    174  1.1  yamaguch 	# add a port and an added port
    175  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    176  1.1  yamaguch 	atf_check -s not-exit:0 -e ignore \
    177  1.1  yamaguch 	    rump.ifconfig lagg0 laggport shmif0
    178  1.1  yamaguch 
    179  1.1  yamaguch 	# remove an added port and a removed port
    180  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    181  1.1  yamaguch 	atf_check -s not-exit:0 -e ignore \
    182  1.1  yamaguch 	    rump.ifconfig lagg0 -laggport shmif0
    183  1.1  yamaguch 
    184  1.1  yamaguch 	# re-add a removed port
    185  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    186  1.1  yamaguch 
    187  1.1  yamaguch 	# detach protocol even if the I/F has ports
    188  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto none
    189  1.1  yamaguch 
    190  1.1  yamaguch 	# destroy the interface while grouping ports
    191  1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    192  1.1  yamaguch 
    193  1.1  yamaguch 	$atf_ifconfig lagg0 create
    194  1.1  yamaguch 	$atf_ifconfig shmif1 create
    195  1.1  yamaguch 
    196  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    197  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    198  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    199  1.1  yamaguch 
    200  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    201  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    202  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    203  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    204  1.1  yamaguch 
    205  1.1  yamaguch 	# destroy a LAGed port
    206  1.1  yamaguch 	atf_check -s exit:0 -o match:shmif0 rump.ifconfig lagg0
    207  1.1  yamaguch 	atf_check -s exit:0 -o match:shmif1 rump.ifconfig lagg0
    208  1.1  yamaguch 	$atf_ifconfig shmif0 destroy
    209  1.1  yamaguch 	$atf_ifconfig shmif1 destroy
    210  1.1  yamaguch 
    211  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto none
    212  1.1  yamaguch 	atf_check -s exit:0 -o ignore rump.ifconfig lagg0
    213  1.1  yamaguch }
    214  1.1  yamaguch 
    215  1.1  yamaguch lagg_ifconfig_cleanup()
    216  1.1  yamaguch {
    217  1.1  yamaguch 	$DEBG && dump
    218  1.1  yamaguch 	cleanup
    219  1.1  yamaguch }
    220  1.1  yamaguch 
    221  1.1  yamaguch atf_test_case lagg_macaddr cleanup
    222  1.1  yamaguch lagg_macaddr_head()
    223  1.1  yamaguch {
    224  1.1  yamaguch 	atf_set "descr" "tests for a MAC address to assign to lagg(4)"
    225  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    226  1.1  yamaguch }
    227  1.1  yamaguch 
    228  1.1  yamaguch lagg_macaddr_body()
    229  1.1  yamaguch {
    230  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    231  1.6  yamaguch 	local lnkaddr0="02:00:00:00:00:01" # 02: I/G = 0, G/L = 1
    232  1.1  yamaguch 
    233  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    234  1.1  yamaguch 
    235  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    236  1.1  yamaguch 	$atf_ifconfig lagg0 create
    237  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    238  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    239  1.1  yamaguch 
    240  1.1  yamaguch 	maddr=$(get_macaddr $SOCK_HOST0 lagg0)
    241  1.1  yamaguch 	maddr0=$(get_macaddr $SOCK_HOST0 shmif0)
    242  1.1  yamaguch 	maddr1=$(get_macaddr $SOCK_HOST0 shmif1)
    243  1.1  yamaguch 
    244  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    245  1.1  yamaguch 
    246  1.6  yamaguch 	#
    247  1.6  yamaguch 	# Copy MAC address from shmif0 that is
    248  1.6  yamaguch 	# the first port to lagg.
    249  1.6  yamaguch 	# (laggport: (none) => shmif0)
    250  1.6  yamaguch 	#
    251  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    252  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
    253  1.6  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
    254  1.1  yamaguch 
    255  1.6  yamaguch 	#
    256  1.6  yamaguch 	# Copy MAC address assigned to lagg0 to shmif1
    257  1.6  yamaguch 	# (laggport: shmif0 => shmif0, shmif1)
    258  1.6  yamaguch 	#
    259  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    260  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
    261  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif1
    262  1.1  yamaguch 
    263  1.6  yamaguch 	#
    264  1.6  yamaguch 	# Change MAC address on the detaching
    265  1.6  yamaguch 	# the first port (shmif0) from lagg0
    266  1.6  yamaguch 	# (laggport: shmif0, shmif1 => shmif1)
    267  1.6  yamaguch 	#
    268  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    269  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
    270  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
    271  1.6  yamaguch 	atf_check -s exit:0 -o match:$maddr1 rump.ifconfig shmif1
    272  1.1  yamaguch 
    273  1.6  yamaguch 	#
    274  1.6  yamaguch 	# Copy lagg0's MAC address to shmif0 even if
    275  1.6  yamaguch 	# lagg0 had used shmif0's MAC address
    276  1.6  yamaguch 	# (laggport: shmif1 => shmif1, shmif0)
    277  1.6  yamaguch 	#
    278  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    279  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
    280  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr1 rump.ifconfig shmif0
    281  1.1  yamaguch 
    282  1.6  yamaguch 	#
    283  1.6  yamaguch 	# should not change MAC address of lagg0 on detaching
    284  1.6  yamaguch 	# shmif0 that copied mac address from lagg0
    285  1.6  yamaguch 	# (laggport: shmif1, shmif0 => shmif1)
    286  1.6  yamaguch 	#
    287  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    288  1.6  yamaguch 	atf_check -s exit:0 -o match:$maddr1 rump.ifconfig lagg0
    289  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
    290  1.1  yamaguch 
    291  1.6  yamaguch 	#
    292  1.6  yamaguch 	# Use the generated MAC address
    293  1.6  yamaguch 	# when all port detached from lagg0
    294  1.6  yamaguch 	# (laggport: shmif1 => (none))
    295  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    296  1.1  yamaguch 	atf_check -s exit:0 -o match:$maddr rump.ifconfig lagg0
    297  1.6  yamaguch 
    298  1.6  yamaguch 	#
    299  1.6  yamaguch 	# Copy the active MAC address from shmif0 to lagg0
    300  1.6  yamaguch 	# when shmif0 has two MAC addresses
    301  1.6  yamaguch 	#
    302  1.6  yamaguch 	$atf_ifconfig shmif0 link $lnkaddr0
    303  1.6  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    304  1.6  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig lagg0
    305  1.6  yamaguch 	atf_check -s exit:0 -o not-match:$lnkaddr0 rump.ifconfig lagg0
    306  1.6  yamaguch 	atf_check -s exit:0 -o match:$maddr0 rump.ifconfig shmif0
    307  1.6  yamaguch 	atf_check -s exit:0 -o match:$lnkaddr0 rump.ifconfig shmif0
    308  1.1  yamaguch }
    309  1.1  yamaguch 
    310  1.1  yamaguch lagg_macaddr_cleanup()
    311  1.1  yamaguch {
    312  1.1  yamaguch 	$DEBUG && dump
    313  1.1  yamaguch 	cleanup
    314  1.1  yamaguch }
    315  1.1  yamaguch 
    316  1.1  yamaguch atf_test_case lagg_ipv6lla cleanup
    317  1.1  yamaguch lagg_ipv6lla_head()
    318  1.1  yamaguch {
    319  1.1  yamaguch 	atf_set "descr" "tests for a IPV6 LLA to assign to lagg(4)"
    320  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    321  1.1  yamaguch }
    322  1.1  yamaguch 
    323  1.1  yamaguch lagg_ipv6lla_body()
    324  1.1  yamaguch {
    325  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    326  1.1  yamaguch 
    327  1.1  yamaguch 	rump_server_start $SOCK_HOST0 netinet6 lagg
    328  1.1  yamaguch 
    329  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    330  1.1  yamaguch 	$atf_ifconfig lagg0 create
    331  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    332  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    333  1.1  yamaguch 
    334  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    335  1.1  yamaguch 
    336  1.1  yamaguch 	$atf_ifconfig shmif0 up
    337  1.1  yamaguch 	atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
    338  1.1  yamaguch 
    339  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport shmif0
    340  1.1  yamaguch 	atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif0
    341  1.1  yamaguch 
    342  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    343  1.1  yamaguch 	$atf_ifconfig shmif1 up
    344  1.1  yamaguch 	atf_check -s exit:0 -o not-match:'inet6 fe80:' rump.ifconfig shmif1
    345  1.1  yamaguch 
    346  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    347  1.1  yamaguch 	atf_check -s exit:0 -o match:'inet6 fe80:' rump.ifconfig shmif0
    348  1.1  yamaguch 
    349  1.1  yamaguch 	$atf_ifconfig shmif1 down
    350  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    351  1.1  yamaguch 	atf_check -s exit:0 -o not-match:'inet fe80:' rump.ifconfig shmif1
    352  1.1  yamaguch }
    353  1.1  yamaguch 
    354  1.1  yamaguch lagg_ipv6lla_cleanup()
    355  1.1  yamaguch {
    356  1.1  yamaguch 	$DEBUG && dump
    357  1.1  yamaguch 	cleanup
    358  1.1  yamaguch }
    359  1.1  yamaguch 
    360  1.1  yamaguch atf_test_case lagg_lacp_basic cleanup
    361  1.1  yamaguch lagg_lacp_basic_head()
    362  1.1  yamaguch {
    363  1.1  yamaguch 
    364  1.1  yamaguch 	atf_set "descr" "tests for LACP basic functions"
    365  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    366  1.1  yamaguch }
    367  1.1  yamaguch 
    368  1.1  yamaguch lagg_lacp_basic_body()
    369  1.1  yamaguch {
    370  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    371  1.1  yamaguch 
    372  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    373  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg
    374  1.1  yamaguch 	rump_server_start $SOCK_HOST2 lagg
    375  1.1  yamaguch 
    376  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    377  1.1  yamaguch 
    378  1.1  yamaguch 	# added running interface
    379  1.1  yamaguch 	$atf_ifconfig shmif0 create
    380  1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    381  1.1  yamaguch 
    382  1.1  yamaguch 	$atf_ifconfig shmif1 create
    383  1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    384  1.1  yamaguch 
    385  1.1  yamaguch 	$atf_ifconfig lagg0 create
    386  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    387  1.1  yamaguch 
    388  1.1  yamaguch 	$atf_ifconfig shmif0 up
    389  1.1  yamaguch 	$atf_ifconfig shmif1 up
    390  1.1  yamaguch 	$atf_ifconfig lagg0 up
    391  1.1  yamaguch 
    392  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    393  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    394  1.1  yamaguch 	$atf_ifconfig -w 10
    395  1.1  yamaguch 
    396  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    397  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    398  1.1  yamaguch 	$atf_ifconfig lagg0 down
    399  1.1  yamaguch 
    400  1.1  yamaguch 	# add the same interfaces again
    401  1.1  yamaguch 	$atf_ifconfig lagg0 up
    402  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    403  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    404  1.1  yamaguch 
    405  1.1  yamaguch 	# detach and re-attach protocol
    406  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto none
    407  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp \
    408  1.1  yamaguch 	    laggport shmif0 laggport shmif1
    409  1.1  yamaguch 
    410  1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0 -laggport shmif1
    411  1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    412  1.1  yamaguch 	$atf_ifconfig shmif0 destroy
    413  1.1  yamaguch 	$atf_ifconfig shmif1 destroy
    414  1.1  yamaguch 
    415  1.1  yamaguch 	# tests for a loopback condition
    416  1.1  yamaguch 	$atf_ifconfig shmif0 create
    417  1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    418  1.1  yamaguch 	$atf_ifconfig shmif1 create
    419  1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS0
    420  1.1  yamaguch 	$atf_ifconfig lagg0 create
    421  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp \
    422  1.1  yamaguch 	    laggport shmif0 laggport shmif1
    423  1.1  yamaguch 	$atf_ifconfig shmif0 up
    424  1.1  yamaguch 	$atf_ifconfig shmif1 up
    425  1.1  yamaguch 	$atf_ifconfig lagg0 up
    426  1.1  yamaguch 
    427  1.1  yamaguch 	expected_inactive lagg0
    428  1.1  yamaguch 
    429  1.1  yamaguch 	$atf_ifconfig shmif0 down
    430  1.1  yamaguch 	$atf_ifconfig shmif0 destroy
    431  1.1  yamaguch 	$atf_ifconfig shmif1 down
    432  1.1  yamaguch 	$atf_ifconfig shmif1 destroy
    433  1.1  yamaguch 	$atf_ifconfig lagg0 down
    434  1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    435  1.1  yamaguch 
    436  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    437  1.1  yamaguch 	$atf_ifconfig shmif0 create
    438  1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    439  1.1  yamaguch 	$atf_ifconfig shmif0 up
    440  1.1  yamaguch 
    441  1.1  yamaguch 	$atf_ifconfig shmif1 create
    442  1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    443  1.1  yamaguch 	$atf_ifconfig shmif1 up
    444  1.1  yamaguch 
    445  1.1  yamaguch 	$atf_ifconfig shmif2 create
    446  1.1  yamaguch 	$atf_ifconfig shmif2 linkstr $BUS2
    447  1.1  yamaguch 	$atf_ifconfig shmif2 up
    448  1.1  yamaguch 
    449  1.1  yamaguch 	$atf_ifconfig lagg0 create
    450  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport shmif0 \
    451  1.1  yamaguch 	    laggport shmif1 laggport shmif2
    452  1.1  yamaguch 	$atf_ifconfig lagg0 up
    453  1.1  yamaguch 
    454  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    455  1.1  yamaguch 	$atf_ifconfig shmif0 create
    456  1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    457  1.1  yamaguch 	$atf_ifconfig shmif0 up
    458  1.1  yamaguch 
    459  1.1  yamaguch 	$atf_ifconfig shmif1 create
    460  1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    461  1.1  yamaguch 	$atf_ifconfig shmif1 up
    462  1.1  yamaguch 
    463  1.1  yamaguch 	$atf_ifconfig lagg0 create
    464  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    465  1.1  yamaguch 	$atf_ifconfig lagg1 create
    466  1.1  yamaguch 	$atf_ifconfig lagg1 laggproto lacp
    467  1.1  yamaguch 
    468  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    469  1.1  yamaguch 	$atf_ifconfig lagg0 up
    470  1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    471  1.1  yamaguch 
    472  1.1  yamaguch 	$atf_ifconfig lagg1 laggport shmif1
    473  1.1  yamaguch 	$atf_ifconfig lagg1 up
    474  1.1  yamaguch 
    475  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST2
    476  1.1  yamaguch 	$atf_ifconfig shmif0 create
    477  1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS2
    478  1.1  yamaguch 	$atf_ifconfig shmif0 up
    479  1.1  yamaguch 
    480  1.1  yamaguch 	$atf_ifconfig lagg0 create
    481  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport shmif0
    482  1.1  yamaguch 	$atf_ifconfig lagg0 up
    483  1.1  yamaguch 
    484  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    485  1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    486  1.1  yamaguch 	expected_inactive lagg0 shmif1
    487  1.1  yamaguch 	expected_inactive lagg0 shmif2
    488  1.1  yamaguch }
    489  1.1  yamaguch 
    490  1.1  yamaguch lagg_lacp_basic_cleanup()
    491  1.1  yamaguch {
    492  1.1  yamaguch 
    493  1.1  yamaguch 	$DEBUG && dump
    494  1.1  yamaguch 	cleanup
    495  1.1  yamaguch }
    496  1.1  yamaguch 
    497  1.1  yamaguch lagg_lacp_ping()
    498  1.1  yamaguch {
    499  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    500  1.1  yamaguch 
    501  1.1  yamaguch 	local af=$1
    502  1.3  yamaguch 	local l2proto=$2
    503  1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
    504  1.1  yamaguch 	local ping=rump.ping
    505  1.1  yamaguch 	local rumplib=""
    506  1.1  yamaguch 	local pfx=24
    507  1.1  yamaguch 	local addr_host0=$IP4ADDR0
    508  1.1  yamaguch 	local addr_host1=$IP4ADDR1
    509  1.1  yamaguch 
    510  1.1  yamaguch 	case $af in
    511  1.1  yamaguch 	"inet")
    512  1.1  yamaguch 		# do nothing
    513  1.1  yamaguch 		;;
    514  1.1  yamaguch 	"inet6")
    515  1.1  yamaguch 		atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
    516  1.1  yamaguch 		rumplib="netinet6"
    517  1.1  yamaguch 		pfx=64
    518  1.1  yamaguch 		addr_host0=$IP6ADDR0
    519  1.1  yamaguch 		addr_host1=$IP6ADDR1
    520  1.1  yamaguch 		;;
    521  1.1  yamaguch 	esac
    522  1.1  yamaguch 
    523  1.3  yamaguch 	case $l2proto in
    524  1.3  yamaguch 	"ether")
    525  1.3  yamaguch 		iface0=shmif0
    526  1.3  yamaguch 		iface1=shmif1
    527  1.3  yamaguch 		iface2=shmif2
    528  1.3  yamaguch 		;;
    529  1.3  yamaguch 	"l2tp")
    530  1.3  yamaguch 		rumplib="$rumplib l2tp"
    531  1.3  yamaguch 		iface0=l2tp0
    532  1.3  yamaguch 		iface1=l2tp1
    533  1.3  yamaguch 		iface2=l2tp2
    534  1.3  yamaguch 		;;
    535  1.3  yamaguch 	esac
    536  1.3  yamaguch 
    537  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
    538  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
    539  1.1  yamaguch 
    540  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    541  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    542  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    543  1.1  yamaguch 
    544  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    545  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    546  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    547  1.1  yamaguch 
    548  1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ];then
    549  1.3  yamaguch 		setup_l2tp_ipv4tunnel
    550  1.3  yamaguch 	fi
    551  1.3  yamaguch 
    552  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    553  1.1  yamaguch 	$atf_ifconfig lagg0 create
    554  1.3  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    555  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
    556  1.3  yamaguch 	$atf_ifconfig $iface0 up
    557  1.1  yamaguch 	$atf_ifconfig lagg0 up
    558  1.1  yamaguch 
    559  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    560  1.1  yamaguch 	$atf_ifconfig lagg0 create
    561  1.3  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    562  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
    563  1.3  yamaguch 	$atf_ifconfig $iface0 up
    564  1.1  yamaguch 	$atf_ifconfig lagg0 up
    565  1.1  yamaguch 
    566  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    567  1.1  yamaguch 	wait_for_distributing lagg0
    568  1.1  yamaguch 	$atf_ifconfig -w 10
    569  1.1  yamaguch 
    570  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    571  1.1  yamaguch 	wait_for_distributing lagg0
    572  1.1  yamaguch 	$atf_ifconfig -w 10
    573  1.1  yamaguch 
    574  1.1  yamaguch 	$atf_ping $addr_host0
    575  1.1  yamaguch 
    576  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    577  1.3  yamaguch 	$atf_ifconfig $iface1 up
    578  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 laggport $iface2
    579  1.3  yamaguch 	$atf_ifconfig $iface2 up
    580  1.1  yamaguch 
    581  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    582  1.3  yamaguch 	$atf_ifconfig $iface1 up
    583  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 laggport $iface2
    584  1.3  yamaguch 	$atf_ifconfig $iface2 up
    585  1.1  yamaguch 
    586  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    587  1.3  yamaguch 	wait_for_distributing lagg0 $iface1
    588  1.3  yamaguch 	wait_for_distributing lagg0 $iface2
    589  1.1  yamaguch 
    590  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    591  1.3  yamaguch 	wait_for_distributing lagg0 $iface1
    592  1.3  yamaguch 	wait_for_distributing lagg0 $iface2
    593  1.1  yamaguch 
    594  1.1  yamaguch 	$atf_ping $addr_host0
    595  1.1  yamaguch }
    596  1.1  yamaguch 
    597  1.1  yamaguch atf_test_case lagg_lacp_ipv4 cleanup
    598  1.1  yamaguch lagg_lacp_ipv4_head()
    599  1.1  yamaguch {
    600  1.1  yamaguch 
    601  1.1  yamaguch 	atf_set "descr" "tests for IPv4 with LACP"
    602  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    603  1.1  yamaguch }
    604  1.1  yamaguch 
    605  1.1  yamaguch lagg_lacp_ipv4_body()
    606  1.1  yamaguch {
    607  1.1  yamaguch 
    608  1.3  yamaguch 	lagg_lacp_ping "inet" "ether"
    609  1.1  yamaguch }
    610  1.1  yamaguch 
    611  1.1  yamaguch lagg_lacp_ipv4_cleanup()
    612  1.1  yamaguch {
    613  1.1  yamaguch 
    614  1.1  yamaguch 	$DEBUG && dump
    615  1.1  yamaguch 	cleanup
    616  1.1  yamaguch }
    617  1.1  yamaguch 
    618  1.2  yamaguch atf_test_case lagg_lacp_ipv6 cleanup
    619  1.1  yamaguch lagg_lacp_ipv6_head()
    620  1.1  yamaguch {
    621  1.1  yamaguch 
    622  1.1  yamaguch 	atf_set "descr" "tests for IPv6 with LACP"
    623  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    624  1.1  yamaguch }
    625  1.1  yamaguch 
    626  1.1  yamaguch lagg_lacp_ipv6_body()
    627  1.1  yamaguch {
    628  1.1  yamaguch 
    629  1.3  yamaguch 	lagg_lacp_ping "inet6" "ether"
    630  1.1  yamaguch }
    631  1.1  yamaguch 
    632  1.1  yamaguch lagg_lacp_ipv6_cleanup()
    633  1.1  yamaguch {
    634  1.1  yamaguch 
    635  1.1  yamaguch 	$DEBUG && dump
    636  1.1  yamaguch 	cleanup
    637  1.1  yamaguch }
    638  1.1  yamaguch 
    639  1.3  yamaguch atf_test_case lagg_lacp_l2tp_ipv4 cleanup
    640  1.3  yamaguch lagg_lacp_l2tp_ipv4_head()
    641  1.3  yamaguch {
    642  1.3  yamaguch 
    643  1.3  yamaguch 	atf_set "descr" "tests for LACP over l2tp by using IPv4"
    644  1.3  yamaguch 	atf_set "require.progs" "rump_server"
    645  1.3  yamaguch }
    646  1.3  yamaguch 
    647  1.3  yamaguch lagg_lacp_l2tp_ipv4_body()
    648  1.3  yamaguch {
    649  1.3  yamaguch 
    650  1.3  yamaguch 	lagg_lacp_ping "inet" "l2tp"
    651  1.3  yamaguch }
    652  1.3  yamaguch 
    653  1.3  yamaguch lagg_lacp_l2tp_ipv4_cleanup()
    654  1.3  yamaguch {
    655  1.3  yamaguch 
    656  1.3  yamaguch 	$DEBUG && dump
    657  1.3  yamaguch 	cleanup
    658  1.3  yamaguch }
    659  1.3  yamaguch 
    660  1.3  yamaguch atf_test_case lagg_lacp_l2tp_ipv6 cleanup
    661  1.3  yamaguch lagg_lacp_l2tp_ipv6_head()
    662  1.3  yamaguch {
    663  1.3  yamaguch 
    664  1.3  yamaguch 	atf_set "descr" "tests for LACP over l2tp using IPv6"
    665  1.3  yamaguch 	atf_set "require.progs" "rump_server"
    666  1.3  yamaguch }
    667  1.3  yamaguch 
    668  1.3  yamaguch lagg_lacp_l2tp_ipv6_body()
    669  1.3  yamaguch {
    670  1.3  yamaguch 
    671  1.3  yamaguch 	lagg_lacp_ping "inet6" "l2tp"
    672  1.3  yamaguch }
    673  1.3  yamaguch 
    674  1.3  yamaguch lagg_lacp_l2tp_ipv6_cleanup()
    675  1.3  yamaguch {
    676  1.3  yamaguch 
    677  1.3  yamaguch 	$DEBUG && dump
    678  1.3  yamaguch 	cleanup
    679  1.3  yamaguch }
    680  1.3  yamaguch 
    681  1.1  yamaguch lagg_lacp_vlan()
    682  1.1  yamaguch {
    683  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    684  1.1  yamaguch 
    685  1.1  yamaguch 	local af=$1
    686  1.5  yamaguch 	local l2proto=$2
    687  1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
    688  1.1  yamaguch 	local rumplib="vlan"
    689  1.1  yamaguch 	local pfx=24
    690  1.1  yamaguch 	local vlan0_addr_host0=$IP4ADDR0
    691  1.1  yamaguch 	local host0addr0=$IP4ADDR0
    692  1.1  yamaguch 	local host1addr0=$IP4ADDR1
    693  1.1  yamaguch 	local host0addr1=$IP4ADDR2
    694  1.1  yamaguch 	local host1addr1=$IP4ADDR3
    695  1.1  yamaguch 
    696  1.1  yamaguch 	case $af in
    697  1.1  yamaguch 	"inet")
    698  1.1  yamaguch 		# do nothing
    699  1.1  yamaguch 		;;
    700  1.1  yamaguch 	"inet6")
    701  1.1  yamaguch 		atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
    702  1.4  yamaguch 		rumplib="$rumplib netinet6"
    703  1.1  yamaguch 		pfx=64
    704  1.1  yamaguch 		host0addr0=$IP6ADDR0
    705  1.1  yamaguch 		host1addr0=$IP6ADDR1
    706  1.1  yamaguch 		host0addr1=$IP6ADDR2
    707  1.1  yamaguch 		host1addr1=$IP6ADDR3
    708  1.1  yamaguch 		;;
    709  1.1  yamaguch 	esac
    710  1.1  yamaguch 
    711  1.5  yamaguch 	case $l2proto in
    712  1.5  yamaguch 	"ether")
    713  1.5  yamaguch 		iface0=shmif0
    714  1.5  yamaguch 		iface1=shmif1
    715  1.5  yamaguch 		iface2=shmif2
    716  1.5  yamaguch 		;;
    717  1.5  yamaguch 	"l2tp")
    718  1.5  yamaguch 		rumplib="$rumplib l2tp"
    719  1.5  yamaguch 		iface0=l2tp0
    720  1.5  yamaguch 		iface1=l2tp1
    721  1.5  yamaguch 		iface2=l2tp2
    722  1.5  yamaguch 	esac
    723  1.5  yamaguch 
    724  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
    725  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
    726  1.1  yamaguch 
    727  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    728  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    729  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    730  1.1  yamaguch 
    731  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    732  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    733  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    734  1.1  yamaguch 
    735  1.5  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
    736  1.5  yamaguch 		setup_l2tp_ipv4tunnel
    737  1.5  yamaguch 	fi
    738  1.5  yamaguch 
    739  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    740  1.1  yamaguch 	$atf_ifconfig lagg0 create
    741  1.5  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    742  1.5  yamaguch 	$atf_ifconfig $iface0 up
    743  1.1  yamaguch 	$atf_ifconfig lagg0 up
    744  1.1  yamaguch 
    745  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    746  1.1  yamaguch 	$atf_ifconfig lagg0 create
    747  1.5  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    748  1.5  yamaguch 	$atf_ifconfig $iface0 up
    749  1.1  yamaguch 	$atf_ifconfig lagg0 up
    750  1.1  yamaguch 
    751  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    752  1.1  yamaguch 	wait_for_distributing lagg0
    753  1.1  yamaguch 
    754  1.1  yamaguch 	$atf_ifconfig vlan0 create
    755  1.1  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif lagg0
    756  1.1  yamaguch 	$atf_ifconfig vlan0 $af $host0addr0/$pfx
    757  1.1  yamaguch 	$atf_ifconfig vlan0 up
    758  1.1  yamaguch 
    759  1.1  yamaguch 	$atf_ifconfig vlan1 create
    760  1.1  yamaguch 	$atf_ifconfig vlan1 vlan 11 vlanif lagg0
    761  1.1  yamaguch 	$atf_ifconfig vlan1 $af $host0addr1/$pfx
    762  1.1  yamaguch 	$atf_ifconfig vlan1 up
    763  1.1  yamaguch 
    764  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    765  1.1  yamaguch 	$atf_ifconfig vlan0 create
    766  1.1  yamaguch 	$atf_ifconfig vlan0 vlan 10 vlanif lagg0
    767  1.1  yamaguch 	$atf_ifconfig vlan0 $af $host1addr0/$pfx
    768  1.1  yamaguch 	$atf_ifconfig vlan0 up
    769  1.1  yamaguch 
    770  1.1  yamaguch 	$atf_ifconfig vlan1 create
    771  1.1  yamaguch 	$atf_ifconfig vlan1 vlan 11 vlanif lagg0
    772  1.1  yamaguch 	$atf_ifconfig vlan1 $af $host1addr1/$pfx
    773  1.1  yamaguch 	$atf_ifconfig vlan1 up
    774  1.1  yamaguch 
    775  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    776  1.1  yamaguch 	$atf_ifconfig -w 10
    777  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    778  1.1  yamaguch 	$atf_ifconfig -w 10
    779  1.1  yamaguch 
    780  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    781  1.1  yamaguch 	$atf_ping $host1addr0
    782  1.1  yamaguch 	$atf_ping $host1addr1
    783  1.1  yamaguch 
    784  1.5  yamaguch 	$atf_ifconfig lagg0 laggport $iface1
    785  1.5  yamaguch 	$atf_ifconfig $iface1 up
    786  1.1  yamaguch 
    787  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    788  1.5  yamaguch 	$atf_ifconfig lagg0 laggport $iface1
    789  1.5  yamaguch 	$atf_ifconfig $iface1 up
    790  1.1  yamaguch 
    791  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    792  1.5  yamaguch 	wait_for_distributing lagg0 $iface1
    793  1.1  yamaguch 
    794  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    795  1.5  yamaguch 	wait_for_distributing lagg0 $iface1
    796  1.1  yamaguch 
    797  1.1  yamaguch 	$atf_ping $host0addr0
    798  1.1  yamaguch 	$atf_ping $host0addr1
    799  1.1  yamaguch }
    800  1.1  yamaguch 
    801  1.1  yamaguch atf_test_case lagg_lacp_vlan_ipv4 cleanup
    802  1.1  yamaguch lagg_lacp_vlan_ipv4_head()
    803  1.1  yamaguch {
    804  1.1  yamaguch 
    805  1.1  yamaguch 	atf_set "descr" "tests for IPv4 VLAN frames over LACP LAG"
    806  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    807  1.1  yamaguch }
    808  1.1  yamaguch 
    809  1.1  yamaguch lagg_lacp_vlan_ipv4_body()
    810  1.1  yamaguch {
    811  1.1  yamaguch 
    812  1.5  yamaguch 	lagg_lacp_vlan "inet" "ether"
    813  1.1  yamaguch }
    814  1.1  yamaguch 
    815  1.1  yamaguch lagg_lacp_vlan_ipv4_cleanup()
    816  1.1  yamaguch {
    817  1.1  yamaguch 	$DEBUG && dump
    818  1.1  yamaguch 	cleanup
    819  1.1  yamaguch }
    820  1.1  yamaguch 
    821  1.1  yamaguch atf_test_case lagg_lacp_vlan_ipv6 cleanup
    822  1.1  yamaguch lagg_lacp_vlan_ipv6_head()
    823  1.1  yamaguch {
    824  1.1  yamaguch 
    825  1.1  yamaguch 	atf_set "descr" "tests for IPv6 VLAN frames over LACP LAG"
    826  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    827  1.1  yamaguch }
    828  1.1  yamaguch 
    829  1.1  yamaguch lagg_lacp_vlan_ipv6_body()
    830  1.1  yamaguch {
    831  1.1  yamaguch 
    832  1.5  yamaguch 	lagg_lacp_vlan "inet6" "ether"
    833  1.1  yamaguch }
    834  1.1  yamaguch 
    835  1.1  yamaguch lagg_lacp_vlan_ipv6_cleanup()
    836  1.1  yamaguch {
    837  1.1  yamaguch 	$DEBUG && dump
    838  1.1  yamaguch 	cleanup
    839  1.1  yamaguch }
    840  1.1  yamaguch 
    841  1.5  yamaguch atf_test_case lagg_lacp_vlanl2tp_ipv4 cleanup
    842  1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_head()
    843  1.5  yamaguch {
    844  1.5  yamaguch 
    845  1.5  yamaguch 	atf_set "descr" "tests for IPv4 VLAN frames over LACP L2TP LAG"
    846  1.5  yamaguch 	atf_set "require.progs" "rump_server"
    847  1.5  yamaguch }
    848  1.5  yamaguch 
    849  1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_body()
    850  1.5  yamaguch {
    851  1.5  yamaguch 
    852  1.5  yamaguch 	lagg_lacp_vlan "inet" "l2tp"
    853  1.5  yamaguch }
    854  1.5  yamaguch 
    855  1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_cleanup()
    856  1.5  yamaguch {
    857  1.5  yamaguch 
    858  1.5  yamaguch 	$DEBUG && dump
    859  1.5  yamaguch 	cleanup
    860  1.5  yamaguch }
    861  1.5  yamaguch 
    862  1.5  yamaguch atf_test_case lagg_lacp_vlanl2tp_ipv6 cleanup
    863  1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_head()
    864  1.5  yamaguch {
    865  1.5  yamaguch 
    866  1.5  yamaguch 	atf_set "descr" "tests for IPv6 VLAN frames over LACP L2TP LAG"
    867  1.5  yamaguch 	atf_set "require.progs" "rump_server"
    868  1.5  yamaguch }
    869  1.5  yamaguch 
    870  1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_body()
    871  1.5  yamaguch {
    872  1.5  yamaguch 
    873  1.5  yamaguch 	lagg_lacp_vlan "inet6" "l2tp"
    874  1.5  yamaguch }
    875  1.5  yamaguch 
    876  1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_cleanup()
    877  1.5  yamaguch {
    878  1.5  yamaguch 
    879  1.5  yamaguch 	$DEBUG && dump
    880  1.5  yamaguch 	cleanup
    881  1.5  yamaguch }
    882  1.5  yamaguch 
    883  1.1  yamaguch atf_test_case lagg_lacp_portpri cleanup
    884  1.1  yamaguch lagg_lacp_portpri_head()
    885  1.1  yamaguch {
    886  1.1  yamaguch 
    887  1.1  yamaguch 	atf_set "descr" "tests for LACP port priority"
    888  1.1  yamaguch 	atf_set "require.progs" "rump_server"
    889  1.1  yamaguch }
    890  1.1  yamaguch 
    891  1.1  yamaguch lagg_lacp_portpri_body()
    892  1.1  yamaguch {
    893  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    894  1.1  yamaguch 
    895  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    896  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg
    897  1.1  yamaguch 
    898  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    899  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    900  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    901  1.1  yamaguch 
    902  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    903  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    904  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    905  1.1  yamaguch 
    906  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    907  1.1  yamaguch 	$atf_ifconfig lagg0 create
    908  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    909  1.1  yamaguch 	$atf_ifconfig lagg0 lagglacp maxports 2
    910  1.1  yamaguch 
    911  1.1  yamaguch 	$atf_ifconfig shmif0 up
    912  1.1  yamaguch 	$atf_ifconfig shmif1 up
    913  1.1  yamaguch 	$atf_ifconfig shmif2 up
    914  1.1  yamaguch 
    915  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0 pri 1000
    916  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1 pri 2000
    917  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif2 pri 3000
    918  1.1  yamaguch 	$atf_ifconfig lagg0 up
    919  1.1  yamaguch 
    920  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=1000' rump.ifconfig lagg0
    921  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=2000' rump.ifconfig lagg0
    922  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=3000' rump.ifconfig lagg0
    923  1.1  yamaguch 
    924  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    925  1.1  yamaguch 	$atf_ifconfig lagg0 create
    926  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    927  1.1  yamaguch 
    928  1.1  yamaguch 	$atf_ifconfig shmif0 up
    929  1.1  yamaguch 	$atf_ifconfig shmif1 up
    930  1.1  yamaguch 	$atf_ifconfig shmif2 up
    931  1.1  yamaguch 
    932  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0 pri 300
    933  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1 pri 200
    934  1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif2 pri 100
    935  1.1  yamaguch 	$atf_ifconfig lagg0 up
    936  1.1  yamaguch 
    937  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=300' rump.ifconfig lagg0
    938  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=200' rump.ifconfig lagg0
    939  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=100' rump.ifconfig lagg0
    940  1.1  yamaguch 
    941  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    942  1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    943  1.1  yamaguch 	wait_for_distributing lagg0 shmif1
    944  1.1  yamaguch 	wait_state "STANDBY" lagg0 shmif2
    945  1.1  yamaguch 
    946  1.1  yamaguch 	$atf_ifconfig shmif0 down
    947  1.1  yamaguch 	wait_for_distributing lagg0 shmif2
    948  1.1  yamaguch 
    949  1.1  yamaguch 	$atf_ifconfig shmif0 up
    950  1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    951  1.1  yamaguch 
    952  1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif0 5000
    953  1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif1 5000
    954  1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif2 5000
    955  1.1  yamaguch 
    956  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=5000' rump.ifconfig lagg0
    957  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=5000' rump.ifconfig lagg0
    958  1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=5000' rump.ifconfig lagg0
    959  1.1  yamaguch 
    960  1.1  yamaguch 	wait_state "STANDBY" lagg0 shmif0
    961  1.1  yamaguch 	wait_for_distributing lagg0 shmif1
    962  1.1  yamaguch 	wait_for_distributing lagg0 shmif2
    963  1.1  yamaguch }
    964  1.1  yamaguch 
    965  1.1  yamaguch lagg_lacp_portpri_cleanup()
    966  1.1  yamaguch {
    967  1.1  yamaguch 
    968  1.1  yamaguch 	$DEBUG && dump
    969  1.1  yamaguch 	cleanup
    970  1.1  yamaguch }
    971  1.1  yamaguch 
    972  1.1  yamaguch lagg_failover()
    973  1.1  yamaguch {
    974  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    975  1.1  yamaguch 
    976  1.1  yamaguch 	local af=$1
    977  1.3  yamaguch 	local l2proto=$2
    978  1.1  yamaguch 	local ping="rump.ping -c 1"
    979  1.1  yamaguch 	local rumplib=""
    980  1.1  yamaguch 	local pfx=24
    981  1.1  yamaguch 	local addr_host0=$IP4ADDR0
    982  1.1  yamaguch 	local addr_host1=$IP4ADDR1
    983  1.1  yamaguch 
    984  1.1  yamaguch 	case $af in
    985  1.1  yamaguch 	"inet")
    986  1.1  yamaguch 		# do nothing
    987  1.1  yamaguch 		;;
    988  1.1  yamaguch 	"inet6")
    989  1.1  yamaguch 		ping="rump.ping6 -c 1"
    990  1.1  yamaguch 		rumplib="netinet6"
    991  1.1  yamaguch 		pfx=64
    992  1.1  yamaguch 		addr_host0=$IP6ADDR0
    993  1.1  yamaguch 		addr_host1=$IP6ADDR1
    994  1.1  yamaguch 		;;
    995  1.1  yamaguch 	esac
    996  1.1  yamaguch 
    997  1.3  yamaguch 	case $l2proto in
    998  1.3  yamaguch 	"ether")
    999  1.3  yamaguch 		iface0="shmif0"
   1000  1.3  yamaguch 		iface1="shmif1"
   1001  1.3  yamaguch 		iface2="shmif2"
   1002  1.3  yamaguch 		;;
   1003  1.3  yamaguch 	"l2tp")
   1004  1.3  yamaguch 		rumplib="$rumplib l2tp"
   1005  1.3  yamaguch 		iface0="l2tp0"
   1006  1.3  yamaguch 		iface1="l2tp1"
   1007  1.3  yamaguch 		iface2="l2tp2"
   1008  1.3  yamaguch 		;;
   1009  1.3  yamaguch 	esac
   1010  1.3  yamaguch 
   1011  1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
   1012  1.1  yamaguch 
   1013  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
   1014  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
   1015  1.1  yamaguch 
   1016  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
   1017  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
   1018  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
   1019  1.1  yamaguch 
   1020  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
   1021  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
   1022  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
   1023  1.1  yamaguch 
   1024  1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
   1025  1.3  yamaguch 		setup_l2tp_ipv4tunnel
   1026  1.3  yamaguch 	fi
   1027  1.3  yamaguch 
   1028  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1029  1.1  yamaguch 	$atf_ifconfig lagg0 create
   1030  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto failover
   1031  1.1  yamaguch 
   1032  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1033  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 2000
   1034  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 3000
   1035  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
   1036  1.1  yamaguch 
   1037  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1038  1.1  yamaguch 	$atf_ifconfig lagg0 create
   1039  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto failover
   1040  1.1  yamaguch 
   1041  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1042  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 3000
   1043  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 2000
   1044  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
   1045  1.1  yamaguch 
   1046  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1047  1.3  yamaguch 	$atf_ifconfig $iface0 up
   1048  1.3  yamaguch 	$atf_ifconfig $iface1 up
   1049  1.3  yamaguch 	$atf_ifconfig $iface2 up
   1050  1.1  yamaguch 	$atf_ifconfig lagg0 up
   1051  1.1  yamaguch 
   1052  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1053  1.3  yamaguch 	$atf_ifconfig $iface0 up
   1054  1.3  yamaguch 	$atf_ifconfig $iface1 up
   1055  1.3  yamaguch 	$atf_ifconfig $iface2 up
   1056  1.1  yamaguch 	$atf_ifconfig lagg0 up
   1057  1.1  yamaguch 
   1058  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1059  1.1  yamaguch 	$atf_ifconfig -w 10
   1060  1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1061  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1062  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1063  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1064  1.1  yamaguch 
   1065  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1066  1.1  yamaguch 	$atf_ifconfig -w 10
   1067  1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1068  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1069  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1070  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1071  1.1  yamaguch 
   1072  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1073  1.1  yamaguch 	$atf_ping $addr_host1
   1074  1.1  yamaguch 
   1075  1.3  yamaguch 	$atf_ifconfig $iface0 down
   1076  1.3  yamaguch 	wait_for_distributing lagg0 $iface1
   1077  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1078  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1079  1.1  yamaguch 
   1080  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1081  1.3  yamaguch 	$atf_ifconfig $iface0 down
   1082  1.3  yamaguch 	wait_for_distributing lagg0 $iface2
   1083  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1084  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1085  1.1  yamaguch 
   1086  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1087  1.1  yamaguch 	$atf_ping $addr_host1
   1088  1.1  yamaguch 
   1089  1.1  yamaguch 	$atf_ifconfig lagg0 laggfailover -rx-all
   1090  1.3  yamaguch 	atf_check -s exit:0 -o not-match:'$iface2.+COLLECTING' rump.ifconfig lagg0
   1091  1.1  yamaguch 
   1092  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1093  1.1  yamaguch 	$atf_ifconfig lagg0 laggfailover -rx-all
   1094  1.3  yamaguch 	atf_check -s exit:0 -o not-match:'$iface1.+COLLECTING' rump.ifconfig lagg0
   1095  1.1  yamaguch 
   1096  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1097  1.1  yamaguch 	atf_check -s not-exit:0 -o ignore -e ignore $ping -c 1 $addr_host1
   1098  1.1  yamaguch }
   1099  1.1  yamaguch 
   1100  1.1  yamaguch atf_test_case lagg_failover_ipv4 cleanup
   1101  1.1  yamaguch lagg_failover_ipv4_head()
   1102  1.1  yamaguch {
   1103  1.1  yamaguch 
   1104  1.1  yamaguch 	atf_set "descr" "tests for failover using IPv4"
   1105  1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1106  1.1  yamaguch }
   1107  1.1  yamaguch 
   1108  1.1  yamaguch lagg_failover_ipv4_body()
   1109  1.1  yamaguch {
   1110  1.1  yamaguch 
   1111  1.3  yamaguch 	lagg_failover "inet" "ether"
   1112  1.1  yamaguch }
   1113  1.1  yamaguch 
   1114  1.1  yamaguch lagg_failover_ipv4_cleanup()
   1115  1.1  yamaguch {
   1116  1.1  yamaguch 
   1117  1.1  yamaguch 	$DEBUG && dump
   1118  1.1  yamaguch 	cleanup
   1119  1.1  yamaguch }
   1120  1.1  yamaguch 
   1121  1.1  yamaguch atf_test_case lagg_failover_ipv6 cleanup
   1122  1.1  yamaguch lagg_failover_ipv6_head()
   1123  1.1  yamaguch {
   1124  1.1  yamaguch 
   1125  1.1  yamaguch 	atf_set "descr" "tests for failover using IPv6"
   1126  1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1127  1.1  yamaguch }
   1128  1.1  yamaguch 
   1129  1.1  yamaguch lagg_failover_ipv6_body()
   1130  1.1  yamaguch {
   1131  1.1  yamaguch 
   1132  1.3  yamaguch 	lagg_failover "inet6" "ether"
   1133  1.1  yamaguch }
   1134  1.1  yamaguch 
   1135  1.1  yamaguch lagg_failover_ipv6_cleanup()
   1136  1.1  yamaguch {
   1137  1.1  yamaguch 
   1138  1.1  yamaguch 	$DEBUG && dump
   1139  1.1  yamaguch 	cleanup
   1140  1.1  yamaguch }
   1141  1.1  yamaguch 
   1142  1.3  yamaguch atf_test_case lagg_failover_l2tp_ipv4 cleanup
   1143  1.3  yamaguch lagg_failover_l2tp_ipv4_head()
   1144  1.3  yamaguch {
   1145  1.3  yamaguch 
   1146  1.3  yamaguch 	atf_set "descr" "tests for failover over l2tp using IPv4"
   1147  1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1148  1.3  yamaguch }
   1149  1.3  yamaguch 
   1150  1.3  yamaguch lagg_failover_l2tp_ipv4_body()
   1151  1.3  yamaguch {
   1152  1.3  yamaguch 
   1153  1.3  yamaguch 	lagg_failover "inet" "l2tp"
   1154  1.3  yamaguch }
   1155  1.3  yamaguch 
   1156  1.3  yamaguch lagg_failover_l2tp_ipv4_cleanup()
   1157  1.3  yamaguch {
   1158  1.3  yamaguch 	$DEBUG && dump
   1159  1.3  yamaguch 	cleanup
   1160  1.3  yamaguch }
   1161  1.3  yamaguch 
   1162  1.3  yamaguch atf_test_case lagg_failover_l2tp_ipv6 cleanup
   1163  1.3  yamaguch lagg_failover_l2tp_ipv6_head()
   1164  1.3  yamaguch {
   1165  1.3  yamaguch 
   1166  1.3  yamaguch 	atf_set "descr" "tests for failover over l2tp using IPv6"
   1167  1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1168  1.3  yamaguch }
   1169  1.3  yamaguch 
   1170  1.3  yamaguch lagg_failover_l2tp_ipv6_body()
   1171  1.3  yamaguch {
   1172  1.3  yamaguch 
   1173  1.3  yamaguch 	lagg_failover "inet6" "l2tp"
   1174  1.3  yamaguch }
   1175  1.3  yamaguch 
   1176  1.3  yamaguch lagg_failover_l2tp_ipv6_cleanup()
   1177  1.3  yamaguch {
   1178  1.3  yamaguch 	$DEBUG && dump
   1179  1.3  yamaguch 	cleanup
   1180  1.3  yamaguch }
   1181  1.3  yamaguch 
   1182  1.1  yamaguch lagg_loadbalance()
   1183  1.1  yamaguch {
   1184  1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
   1185  1.1  yamaguch 
   1186  1.1  yamaguch 	local af=$1
   1187  1.3  yamaguch 	local l2proto=$2
   1188  1.1  yamaguch 	local ping="rump.ping -c 1"
   1189  1.1  yamaguch 	local rumplib=""
   1190  1.1  yamaguch 	local pfx=24
   1191  1.1  yamaguch 	local addr_host0=$IP4ADDR0
   1192  1.1  yamaguch 	local addr_host1=$IP4ADDR1
   1193  1.1  yamaguch 
   1194  1.1  yamaguch 	case $af in
   1195  1.1  yamaguch 	"inet")
   1196  1.1  yamaguch 		# do nothing
   1197  1.1  yamaguch 		;;
   1198  1.1  yamaguch 	"inet6")
   1199  1.1  yamaguch 		ping="rump.ping6 -c 1"
   1200  1.1  yamaguch 		rumplib="netinet6"
   1201  1.1  yamaguch 		pfx=64
   1202  1.1  yamaguch 		addr_host0=$IP6ADDR0
   1203  1.1  yamaguch 		addr_host1=$IP6ADDR1
   1204  1.1  yamaguch 		;;
   1205  1.1  yamaguch 	esac
   1206  1.1  yamaguch 
   1207  1.3  yamaguch 	case $l2proto in
   1208  1.3  yamaguch 	"ether")
   1209  1.3  yamaguch 		iface0=shmif0
   1210  1.3  yamaguch 		iface1=shmif1
   1211  1.3  yamaguch 		iface2=shmif2
   1212  1.3  yamaguch 		;;
   1213  1.3  yamaguch 	"l2tp")
   1214  1.3  yamaguch 		rumplib="$rumplib l2tp"
   1215  1.3  yamaguch 		iface0=l2tp0
   1216  1.3  yamaguch 		iface1=l2tp1
   1217  1.3  yamaguch 		iface2=l2tp2
   1218  1.3  yamaguch 		;;
   1219  1.3  yamaguch 	esac
   1220  1.3  yamaguch 
   1221  1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
   1222  1.1  yamaguch 
   1223  1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
   1224  1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
   1225  1.1  yamaguch 
   1226  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
   1227  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
   1228  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
   1229  1.1  yamaguch 
   1230  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
   1231  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
   1232  1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
   1233  1.1  yamaguch 
   1234  1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
   1235  1.3  yamaguch 		setup_l2tp_ipv4tunnel
   1236  1.3  yamaguch 	fi
   1237  1.3  yamaguch 
   1238  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1239  1.1  yamaguch 	$atf_ifconfig lagg0 create
   1240  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto loadbalance
   1241  1.1  yamaguch 
   1242  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1243  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 2000
   1244  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 3000
   1245  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
   1246  1.1  yamaguch 
   1247  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1248  1.1  yamaguch 	$atf_ifconfig lagg0 create
   1249  1.1  yamaguch 	$atf_ifconfig lagg0 laggproto loadbalance
   1250  1.1  yamaguch 
   1251  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1252  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 3000
   1253  1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 2000
   1254  1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
   1255  1.1  yamaguch 
   1256  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1257  1.3  yamaguch 	$atf_ifconfig $iface0 up
   1258  1.3  yamaguch 	$atf_ifconfig $iface1 up
   1259  1.3  yamaguch 	$atf_ifconfig $iface2 up
   1260  1.1  yamaguch 	$atf_ifconfig lagg0 up
   1261  1.1  yamaguch 
   1262  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1263  1.3  yamaguch 	$atf_ifconfig $iface0 up
   1264  1.3  yamaguch 	$atf_ifconfig $iface1 up
   1265  1.3  yamaguch 	$atf_ifconfig $iface2 up
   1266  1.1  yamaguch 	$atf_ifconfig lagg0 up
   1267  1.1  yamaguch 
   1268  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1269  1.1  yamaguch 	$atf_ifconfig -w 10
   1270  1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1271  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1272  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1273  1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1274  1.1  yamaguch 
   1275  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1276  1.1  yamaguch 	$atf_ifconfig -w 10
   1277  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface0
   1278  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1279  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1280  1.1  yamaguch 
   1281  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1282  1.1  yamaguch 	$atf_ping $addr_host1
   1283  1.1  yamaguch 
   1284  1.3  yamaguch 	$atf_ifconfig $iface0 down
   1285  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1286  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1287  1.1  yamaguch 
   1288  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1289  1.3  yamaguch 	$atf_ifconfig $iface0 down
   1290  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1291  1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1292  1.1  yamaguch 
   1293  1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1294  1.1  yamaguch 	$atf_ping $addr_host1
   1295  1.1  yamaguch }
   1296  1.1  yamaguch 
   1297  1.1  yamaguch atf_test_case lagg_loadbalance_ipv4 cleanup
   1298  1.1  yamaguch lagg_loadbalance_ipv4_head()
   1299  1.1  yamaguch {
   1300  1.1  yamaguch 
   1301  1.1  yamaguch 	atf_set "descr" "tests for loadbalance using IPv4"
   1302  1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1303  1.1  yamaguch }
   1304  1.1  yamaguch 
   1305  1.1  yamaguch lagg_loadbalance_ipv4_body()
   1306  1.1  yamaguch {
   1307  1.1  yamaguch 
   1308  1.3  yamaguch 	lagg_loadbalance "inet" "ether"
   1309  1.1  yamaguch }
   1310  1.1  yamaguch 
   1311  1.1  yamaguch lagg_loadbalance_ipv4_cleanup()
   1312  1.1  yamaguch {
   1313  1.1  yamaguch 
   1314  1.1  yamaguch 	$DEBUG && dump
   1315  1.1  yamaguch 	cleanup
   1316  1.1  yamaguch }
   1317  1.1  yamaguch 
   1318  1.1  yamaguch atf_test_case lagg_loadbalance_ipv6 cleanup
   1319  1.1  yamaguch lagg_loadbalance_ipv6_head()
   1320  1.1  yamaguch {
   1321  1.1  yamaguch 
   1322  1.1  yamaguch 	atf_set "descr" "tests for loadbalance using IPv6"
   1323  1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1324  1.1  yamaguch }
   1325  1.1  yamaguch 
   1326  1.1  yamaguch lagg_loadbalance_ipv6_body()
   1327  1.1  yamaguch {
   1328  1.1  yamaguch 
   1329  1.3  yamaguch 	lagg_loadbalance "inet6" "ether"
   1330  1.1  yamaguch }
   1331  1.1  yamaguch 
   1332  1.1  yamaguch lagg_loadbalance_ipv6_cleanup()
   1333  1.1  yamaguch {
   1334  1.1  yamaguch 
   1335  1.1  yamaguch 	$DEBUG && dump
   1336  1.1  yamaguch 	cleanup
   1337  1.1  yamaguch }
   1338  1.1  yamaguch 
   1339  1.3  yamaguch atf_test_case lagg_loadbalance_l2tp_ipv4 cleanup
   1340  1.3  yamaguch lagg_loadbalance_l2tp_ipv4_head()
   1341  1.3  yamaguch {
   1342  1.3  yamaguch 
   1343  1.3  yamaguch 	atf_set "descr" "tests for loadbalance over l2tp using IPv4"
   1344  1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1345  1.3  yamaguch }
   1346  1.3  yamaguch 
   1347  1.3  yamaguch lagg_loadbalance_l2tp_ipv4_body()
   1348  1.3  yamaguch {
   1349  1.3  yamaguch 
   1350  1.3  yamaguch 	lagg_loadbalance "inet" "l2tp"
   1351  1.3  yamaguch }
   1352  1.3  yamaguch 
   1353  1.3  yamaguch lagg_loadbalance_l2tp_ipv4_cleanup()
   1354  1.3  yamaguch {
   1355  1.3  yamaguch 
   1356  1.3  yamaguch 	$DEBUG && dump
   1357  1.3  yamaguch 	cleanup
   1358  1.3  yamaguch }
   1359  1.3  yamaguch 
   1360  1.3  yamaguch atf_test_case lagg_loadbalance_l2tp_ipv6 cleanup
   1361  1.3  yamaguch lagg_loadbalance_l2tp_ipv4_head()
   1362  1.3  yamaguch {
   1363  1.3  yamaguch 
   1364  1.3  yamaguch 	atf_set "descr" "tests for loadbalance over l2tp using IPv6"
   1365  1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1366  1.3  yamaguch }
   1367  1.3  yamaguch 
   1368  1.3  yamaguch lagg_loadbalance_l2tp_ipv6_body()
   1369  1.3  yamaguch {
   1370  1.3  yamaguch 
   1371  1.3  yamaguch 	lagg_loadbalance "inet6" "l2tp"
   1372  1.3  yamaguch }
   1373  1.3  yamaguch 
   1374  1.3  yamaguch lagg_loadbalance_l2tp_ipv6_cleanup()
   1375  1.3  yamaguch {
   1376  1.3  yamaguch 
   1377  1.3  yamaguch 	$DEBUG && dump
   1378  1.3  yamaguch 	cleanup
   1379  1.3  yamaguch }
   1380  1.3  yamaguch 
   1381  1.1  yamaguch atf_init_test_cases()
   1382  1.1  yamaguch {
   1383  1.1  yamaguch 
   1384  1.1  yamaguch 	atf_add_test_case lagg_ifconfig
   1385  1.1  yamaguch 	atf_add_test_case lagg_macaddr
   1386  1.1  yamaguch 	atf_add_test_case lagg_ipv6lla
   1387  1.1  yamaguch 	atf_add_test_case lagg_lacp_basic
   1388  1.1  yamaguch 	atf_add_test_case lagg_lacp_ipv4
   1389  1.1  yamaguch 	atf_add_test_case lagg_lacp_ipv6
   1390  1.3  yamaguch 	atf_add_test_case lagg_lacp_l2tp_ipv4
   1391  1.3  yamaguch 	atf_add_test_case lagg_lacp_l2tp_ipv6
   1392  1.1  yamaguch 	atf_add_test_case lagg_lacp_vlan_ipv4
   1393  1.1  yamaguch 	atf_add_test_case lagg_lacp_vlan_ipv6
   1394  1.5  yamaguch 	atf_add_test_case lagg_lacp_vlanl2tp_ipv4
   1395  1.5  yamaguch 	atf_add_test_case lagg_lacp_vlanl2tp_ipv6
   1396  1.1  yamaguch 	atf_add_test_case lagg_lacp_portpri
   1397  1.1  yamaguch 	atf_add_test_case lagg_failover_ipv4
   1398  1.1  yamaguch 	atf_add_test_case lagg_failover_ipv6
   1399  1.3  yamaguch 	atf_add_test_case lagg_failover_l2tp_ipv4
   1400  1.3  yamaguch 	atf_add_test_case lagg_failover_l2tp_ipv6
   1401  1.1  yamaguch 	atf_add_test_case lagg_loadbalance_ipv4
   1402  1.1  yamaguch 	atf_add_test_case lagg_loadbalance_ipv6
   1403  1.3  yamaguch 	atf_add_test_case lagg_loadbalance_l2tp_ipv4
   1404  1.3  yamaguch 	atf_add_test_case lagg_loadbalance_l2tp_ipv6
   1405  1.1  yamaguch }
   1406