Home | History | Annotate | Line # | Download | only in if_lagg
t_lagg.sh revision 1.10
      1  1.10  yamaguch #	$NetBSD: t_lagg.sh,v 1.10 2023/10/18 06:41:00 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.8  yamaguch atf_test_case lagg_mtu cleanup
    361   1.8  yamaguch lagg_mtu_head()
    362   1.8  yamaguch {
    363   1.8  yamaguch 	atf_set "descr" "tests for MTU"
    364   1.8  yamaguch 	atf_set "require.progs" "rump_server"
    365   1.8  yamaguch }
    366   1.8  yamaguch 
    367   1.8  yamaguch lagg_mtu_body()
    368   1.8  yamaguch {
    369   1.8  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    370  1.10  yamaguch 	local mtu_lagg=1500
    371   1.8  yamaguch 	local mtu_1st=1450
    372   1.8  yamaguch 	local mtu_big=1460
    373   1.8  yamaguch 	local mtu_small=1440
    374   1.8  yamaguch 
    375   1.8  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    376   1.8  yamaguch 
    377   1.8  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    378   1.8  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    379   1.8  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    380   1.8  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    381   1.8  yamaguch 	$atf_ifconfig lagg0 create
    382   1.8  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    383  1.10  yamaguch 	$atf_ifconfig lagg0 up
    384   1.8  yamaguch 
    385   1.8  yamaguch 	$atf_ifconfig shmif0 mtu $mtu_1st
    386   1.8  yamaguch 	$atf_ifconfig shmif1 mtu $mtu_big
    387   1.8  yamaguch 	$atf_ifconfig shmif2 mtu $mtu_small
    388   1.8  yamaguch 
    389  1.10  yamaguch 	# check initial MTU settings
    390  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
    391   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_1st" rump.ifconfig shmif0
    392   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_big" rump.ifconfig shmif1
    393   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_small" rump.ifconfig shmif2
    394   1.8  yamaguch 
    395   1.8  yamaguch 	# copy MTU from 1st port
    396   1.8  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    397  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
    398  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
    399   1.8  yamaguch 
    400   1.8  yamaguch 	# copy MTU to added port
    401   1.8  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    402   1.8  yamaguch 	$atf_ifconfig lagg0 laggport shmif2
    403  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
    404  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
    405  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif1
    406  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif2
    407   1.8  yamaguch 
    408   1.8  yamaguch 	# reset MTU after detaching from lagg0
    409   1.8  yamaguch 	$atf_ifconfig lagg0 -laggport shmif2
    410   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_small" rump.ifconfig shmif2
    411   1.8  yamaguch 
    412   1.8  yamaguch 	# change MTU of lagg0
    413  1.10  yamaguch 	mtu_lagg=1400
    414  1.10  yamaguch 	$atf_ifconfig lagg0 mtu $mtu_lagg
    415  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig lagg0
    416  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif0
    417  1.10  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_lagg" rump.ifconfig shmif1
    418   1.8  yamaguch 
    419   1.8  yamaguch 	# reset MTU after detching from lagg0
    420   1.8  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    421   1.8  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    422   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_1st" rump.ifconfig shmif0
    423   1.8  yamaguch 	atf_check -s exit:0 -o match:"mtu *$mtu_big" rump.ifconfig shmif1
    424   1.8  yamaguch }
    425   1.8  yamaguch 
    426   1.8  yamaguch lagg_mtu_cleanup()
    427   1.8  yamaguch {
    428   1.8  yamaguch 
    429   1.8  yamaguch 	$DEBUG && dump
    430   1.8  yamaguch 	cleanup
    431   1.8  yamaguch }
    432   1.8  yamaguch 
    433   1.1  yamaguch atf_test_case lagg_lacp_basic cleanup
    434   1.1  yamaguch lagg_lacp_basic_head()
    435   1.1  yamaguch {
    436   1.1  yamaguch 
    437   1.1  yamaguch 	atf_set "descr" "tests for LACP basic functions"
    438   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    439   1.1  yamaguch }
    440   1.1  yamaguch 
    441   1.1  yamaguch lagg_lacp_basic_body()
    442   1.1  yamaguch {
    443   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    444   1.1  yamaguch 
    445   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    446   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg
    447   1.1  yamaguch 	rump_server_start $SOCK_HOST2 lagg
    448   1.1  yamaguch 
    449   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    450   1.1  yamaguch 
    451   1.1  yamaguch 	# added running interface
    452   1.1  yamaguch 	$atf_ifconfig shmif0 create
    453   1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    454   1.1  yamaguch 
    455   1.1  yamaguch 	$atf_ifconfig shmif1 create
    456   1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    457   1.1  yamaguch 
    458   1.1  yamaguch 	$atf_ifconfig lagg0 create
    459   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    460   1.1  yamaguch 
    461   1.1  yamaguch 	$atf_ifconfig shmif0 up
    462   1.1  yamaguch 	$atf_ifconfig shmif1 up
    463   1.1  yamaguch 	$atf_ifconfig lagg0 up
    464   1.1  yamaguch 
    465   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    466   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    467   1.1  yamaguch 	$atf_ifconfig -w 10
    468   1.1  yamaguch 
    469   1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0
    470   1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif1
    471   1.1  yamaguch 	$atf_ifconfig lagg0 down
    472   1.1  yamaguch 
    473   1.1  yamaguch 	# add the same interfaces again
    474   1.1  yamaguch 	$atf_ifconfig lagg0 up
    475   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    476   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1
    477   1.1  yamaguch 
    478   1.1  yamaguch 	# detach and re-attach protocol
    479   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto none
    480   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp \
    481   1.1  yamaguch 	    laggport shmif0 laggport shmif1
    482   1.1  yamaguch 
    483   1.1  yamaguch 	$atf_ifconfig lagg0 -laggport shmif0 -laggport shmif1
    484   1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    485   1.1  yamaguch 	$atf_ifconfig shmif0 destroy
    486   1.1  yamaguch 	$atf_ifconfig shmif1 destroy
    487   1.1  yamaguch 
    488   1.1  yamaguch 	# tests for a loopback condition
    489   1.1  yamaguch 	$atf_ifconfig shmif0 create
    490   1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    491   1.1  yamaguch 	$atf_ifconfig shmif1 create
    492   1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS0
    493   1.1  yamaguch 	$atf_ifconfig lagg0 create
    494   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp \
    495   1.1  yamaguch 	    laggport shmif0 laggport shmif1
    496   1.1  yamaguch 	$atf_ifconfig shmif0 up
    497   1.1  yamaguch 	$atf_ifconfig shmif1 up
    498   1.1  yamaguch 	$atf_ifconfig lagg0 up
    499   1.1  yamaguch 
    500   1.1  yamaguch 	expected_inactive lagg0
    501   1.1  yamaguch 
    502   1.1  yamaguch 	$atf_ifconfig shmif0 down
    503   1.1  yamaguch 	$atf_ifconfig shmif0 destroy
    504   1.1  yamaguch 	$atf_ifconfig shmif1 down
    505   1.1  yamaguch 	$atf_ifconfig shmif1 destroy
    506   1.1  yamaguch 	$atf_ifconfig lagg0 down
    507   1.1  yamaguch 	$atf_ifconfig lagg0 destroy
    508   1.1  yamaguch 
    509   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    510   1.1  yamaguch 	$atf_ifconfig shmif0 create
    511   1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    512   1.1  yamaguch 	$atf_ifconfig shmif0 up
    513   1.1  yamaguch 
    514   1.1  yamaguch 	$atf_ifconfig shmif1 create
    515   1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    516   1.1  yamaguch 	$atf_ifconfig shmif1 up
    517   1.1  yamaguch 
    518   1.1  yamaguch 	$atf_ifconfig shmif2 create
    519   1.1  yamaguch 	$atf_ifconfig shmif2 linkstr $BUS2
    520   1.1  yamaguch 	$atf_ifconfig shmif2 up
    521   1.1  yamaguch 
    522   1.1  yamaguch 	$atf_ifconfig lagg0 create
    523   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport shmif0 \
    524   1.1  yamaguch 	    laggport shmif1 laggport shmif2
    525   1.1  yamaguch 	$atf_ifconfig lagg0 up
    526   1.1  yamaguch 
    527   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    528   1.1  yamaguch 	$atf_ifconfig shmif0 create
    529   1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS0
    530   1.1  yamaguch 	$atf_ifconfig shmif0 up
    531   1.1  yamaguch 
    532   1.1  yamaguch 	$atf_ifconfig shmif1 create
    533   1.1  yamaguch 	$atf_ifconfig shmif1 linkstr $BUS1
    534   1.1  yamaguch 	$atf_ifconfig shmif1 up
    535   1.1  yamaguch 
    536   1.1  yamaguch 	$atf_ifconfig lagg0 create
    537   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    538   1.1  yamaguch 	$atf_ifconfig lagg1 create
    539   1.1  yamaguch 	$atf_ifconfig lagg1 laggproto lacp
    540   1.1  yamaguch 
    541   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0
    542   1.1  yamaguch 	$atf_ifconfig lagg0 up
    543   1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    544   1.1  yamaguch 
    545   1.1  yamaguch 	$atf_ifconfig lagg1 laggport shmif1
    546   1.1  yamaguch 	$atf_ifconfig lagg1 up
    547   1.1  yamaguch 
    548   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST2
    549   1.1  yamaguch 	$atf_ifconfig shmif0 create
    550   1.1  yamaguch 	$atf_ifconfig shmif0 linkstr $BUS2
    551   1.1  yamaguch 	$atf_ifconfig shmif0 up
    552   1.1  yamaguch 
    553   1.1  yamaguch 	$atf_ifconfig lagg0 create
    554   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport shmif0
    555   1.1  yamaguch 	$atf_ifconfig lagg0 up
    556   1.1  yamaguch 
    557   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    558   1.1  yamaguch 	wait_for_distributing lagg0 shmif0
    559   1.1  yamaguch 	expected_inactive lagg0 shmif1
    560   1.1  yamaguch 	expected_inactive lagg0 shmif2
    561   1.1  yamaguch }
    562   1.1  yamaguch 
    563   1.1  yamaguch lagg_lacp_basic_cleanup()
    564   1.1  yamaguch {
    565   1.1  yamaguch 
    566   1.1  yamaguch 	$DEBUG && dump
    567   1.1  yamaguch 	cleanup
    568   1.1  yamaguch }
    569   1.1  yamaguch 
    570   1.1  yamaguch lagg_lacp_ping()
    571   1.1  yamaguch {
    572   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    573   1.1  yamaguch 
    574   1.1  yamaguch 	local af=$1
    575   1.3  yamaguch 	local l2proto=$2
    576   1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
    577   1.1  yamaguch 	local ping=rump.ping
    578   1.1  yamaguch 	local rumplib=""
    579   1.1  yamaguch 	local pfx=24
    580   1.1  yamaguch 	local addr_host0=$IP4ADDR0
    581   1.1  yamaguch 	local addr_host1=$IP4ADDR1
    582   1.1  yamaguch 
    583   1.1  yamaguch 	case $af in
    584   1.1  yamaguch 	"inet")
    585   1.1  yamaguch 		# do nothing
    586   1.1  yamaguch 		;;
    587   1.1  yamaguch 	"inet6")
    588   1.1  yamaguch 		atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
    589   1.1  yamaguch 		rumplib="netinet6"
    590   1.1  yamaguch 		pfx=64
    591   1.1  yamaguch 		addr_host0=$IP6ADDR0
    592   1.1  yamaguch 		addr_host1=$IP6ADDR1
    593   1.1  yamaguch 		;;
    594   1.1  yamaguch 	esac
    595   1.1  yamaguch 
    596   1.3  yamaguch 	case $l2proto in
    597   1.3  yamaguch 	"ether")
    598   1.3  yamaguch 		iface0=shmif0
    599   1.3  yamaguch 		iface1=shmif1
    600   1.3  yamaguch 		iface2=shmif2
    601   1.3  yamaguch 		;;
    602   1.3  yamaguch 	"l2tp")
    603   1.3  yamaguch 		rumplib="$rumplib l2tp"
    604   1.3  yamaguch 		iface0=l2tp0
    605   1.3  yamaguch 		iface1=l2tp1
    606   1.3  yamaguch 		iface2=l2tp2
    607   1.3  yamaguch 		;;
    608   1.3  yamaguch 	esac
    609   1.3  yamaguch 
    610   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
    611   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
    612   1.1  yamaguch 
    613   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    614   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    615   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    616   1.1  yamaguch 
    617   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    618   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    619   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    620   1.1  yamaguch 
    621   1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ];then
    622   1.3  yamaguch 		setup_l2tp_ipv4tunnel
    623   1.3  yamaguch 	fi
    624   1.3  yamaguch 
    625   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    626   1.1  yamaguch 	$atf_ifconfig lagg0 create
    627   1.3  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    628   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
    629   1.3  yamaguch 	$atf_ifconfig $iface0 up
    630   1.1  yamaguch 	$atf_ifconfig lagg0 up
    631   1.1  yamaguch 
    632   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    633   1.1  yamaguch 	$atf_ifconfig lagg0 create
    634   1.3  yamaguch 	$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    635   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
    636   1.3  yamaguch 	$atf_ifconfig $iface0 up
    637   1.1  yamaguch 	$atf_ifconfig lagg0 up
    638   1.1  yamaguch 
    639   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    640   1.1  yamaguch 	wait_for_distributing lagg0
    641   1.1  yamaguch 	$atf_ifconfig -w 10
    642   1.1  yamaguch 
    643   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    644   1.1  yamaguch 	wait_for_distributing lagg0
    645   1.1  yamaguch 	$atf_ifconfig -w 10
    646   1.1  yamaguch 
    647   1.1  yamaguch 	$atf_ping $addr_host0
    648   1.1  yamaguch 
    649   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    650   1.3  yamaguch 	$atf_ifconfig $iface1 up
    651   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 laggport $iface2
    652   1.3  yamaguch 	$atf_ifconfig $iface2 up
    653   1.1  yamaguch 
    654   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    655   1.3  yamaguch 	$atf_ifconfig $iface1 up
    656   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 laggport $iface2
    657   1.3  yamaguch 	$atf_ifconfig $iface2 up
    658   1.1  yamaguch 
    659   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    660   1.3  yamaguch 	wait_for_distributing lagg0 $iface1
    661   1.3  yamaguch 	wait_for_distributing lagg0 $iface2
    662   1.1  yamaguch 
    663   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    664   1.3  yamaguch 	wait_for_distributing lagg0 $iface1
    665   1.3  yamaguch 	wait_for_distributing lagg0 $iface2
    666   1.1  yamaguch 
    667   1.1  yamaguch 	$atf_ping $addr_host0
    668   1.1  yamaguch }
    669   1.1  yamaguch 
    670   1.1  yamaguch atf_test_case lagg_lacp_ipv4 cleanup
    671   1.1  yamaguch lagg_lacp_ipv4_head()
    672   1.1  yamaguch {
    673   1.1  yamaguch 
    674   1.1  yamaguch 	atf_set "descr" "tests for IPv4 with LACP"
    675   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    676   1.1  yamaguch }
    677   1.1  yamaguch 
    678   1.1  yamaguch lagg_lacp_ipv4_body()
    679   1.1  yamaguch {
    680   1.1  yamaguch 
    681   1.3  yamaguch 	lagg_lacp_ping "inet" "ether"
    682   1.1  yamaguch }
    683   1.1  yamaguch 
    684   1.1  yamaguch lagg_lacp_ipv4_cleanup()
    685   1.1  yamaguch {
    686   1.1  yamaguch 
    687   1.1  yamaguch 	$DEBUG && dump
    688   1.1  yamaguch 	cleanup
    689   1.1  yamaguch }
    690   1.1  yamaguch 
    691   1.2  yamaguch atf_test_case lagg_lacp_ipv6 cleanup
    692   1.1  yamaguch lagg_lacp_ipv6_head()
    693   1.1  yamaguch {
    694   1.1  yamaguch 
    695   1.1  yamaguch 	atf_set "descr" "tests for IPv6 with LACP"
    696   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    697   1.1  yamaguch }
    698   1.1  yamaguch 
    699   1.1  yamaguch lagg_lacp_ipv6_body()
    700   1.1  yamaguch {
    701   1.1  yamaguch 
    702   1.3  yamaguch 	lagg_lacp_ping "inet6" "ether"
    703   1.1  yamaguch }
    704   1.1  yamaguch 
    705   1.1  yamaguch lagg_lacp_ipv6_cleanup()
    706   1.1  yamaguch {
    707   1.1  yamaguch 
    708   1.1  yamaguch 	$DEBUG && dump
    709   1.1  yamaguch 	cleanup
    710   1.1  yamaguch }
    711   1.1  yamaguch 
    712   1.3  yamaguch atf_test_case lagg_lacp_l2tp_ipv4 cleanup
    713   1.3  yamaguch lagg_lacp_l2tp_ipv4_head()
    714   1.3  yamaguch {
    715   1.3  yamaguch 
    716   1.3  yamaguch 	atf_set "descr" "tests for LACP over l2tp by using IPv4"
    717   1.3  yamaguch 	atf_set "require.progs" "rump_server"
    718   1.3  yamaguch }
    719   1.3  yamaguch 
    720   1.3  yamaguch lagg_lacp_l2tp_ipv4_body()
    721   1.3  yamaguch {
    722   1.3  yamaguch 
    723   1.3  yamaguch 	lagg_lacp_ping "inet" "l2tp"
    724   1.3  yamaguch }
    725   1.3  yamaguch 
    726   1.3  yamaguch lagg_lacp_l2tp_ipv4_cleanup()
    727   1.3  yamaguch {
    728   1.3  yamaguch 
    729   1.3  yamaguch 	$DEBUG && dump
    730   1.3  yamaguch 	cleanup
    731   1.3  yamaguch }
    732   1.3  yamaguch 
    733   1.3  yamaguch atf_test_case lagg_lacp_l2tp_ipv6 cleanup
    734   1.3  yamaguch lagg_lacp_l2tp_ipv6_head()
    735   1.3  yamaguch {
    736   1.3  yamaguch 
    737   1.3  yamaguch 	atf_set "descr" "tests for LACP over l2tp using IPv6"
    738   1.3  yamaguch 	atf_set "require.progs" "rump_server"
    739   1.3  yamaguch }
    740   1.3  yamaguch 
    741   1.3  yamaguch lagg_lacp_l2tp_ipv6_body()
    742   1.3  yamaguch {
    743   1.3  yamaguch 
    744   1.3  yamaguch 	lagg_lacp_ping "inet6" "l2tp"
    745   1.3  yamaguch }
    746   1.3  yamaguch 
    747   1.3  yamaguch lagg_lacp_l2tp_ipv6_cleanup()
    748   1.3  yamaguch {
    749   1.3  yamaguch 
    750   1.3  yamaguch 	$DEBUG && dump
    751   1.3  yamaguch 	cleanup
    752   1.3  yamaguch }
    753   1.3  yamaguch 
    754   1.1  yamaguch lagg_lacp_vlan()
    755   1.1  yamaguch {
    756   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    757   1.1  yamaguch 
    758   1.1  yamaguch 	local af=$1
    759   1.5  yamaguch 	local l2proto=$2
    760   1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore rump.ping -c 1"
    761   1.1  yamaguch 	local rumplib="vlan"
    762   1.1  yamaguch 	local pfx=24
    763   1.1  yamaguch 	local vlan0_addr_host0=$IP4ADDR0
    764   1.1  yamaguch 	local host0addr0=$IP4ADDR0
    765   1.1  yamaguch 	local host1addr0=$IP4ADDR1
    766   1.1  yamaguch 	local host0addr1=$IP4ADDR2
    767   1.1  yamaguch 	local host1addr1=$IP4ADDR3
    768   1.1  yamaguch 
    769   1.1  yamaguch 	case $af in
    770   1.1  yamaguch 	"inet")
    771   1.1  yamaguch 		# do nothing
    772   1.1  yamaguch 		;;
    773   1.1  yamaguch 	"inet6")
    774   1.1  yamaguch 		atf_ping="atf_check -s exit:0 -o ignore rump.ping6 -c 1"
    775   1.4  yamaguch 		rumplib="$rumplib netinet6"
    776   1.1  yamaguch 		pfx=64
    777   1.1  yamaguch 		host0addr0=$IP6ADDR0
    778   1.1  yamaguch 		host1addr0=$IP6ADDR1
    779   1.1  yamaguch 		host0addr1=$IP6ADDR2
    780   1.1  yamaguch 		host1addr1=$IP6ADDR3
    781   1.1  yamaguch 		;;
    782   1.1  yamaguch 	esac
    783   1.1  yamaguch 
    784   1.5  yamaguch 	case $l2proto in
    785   1.5  yamaguch 	"ether")
    786   1.5  yamaguch 		iface0=shmif0
    787   1.5  yamaguch 		iface1=shmif1
    788   1.5  yamaguch 		iface2=shmif2
    789   1.5  yamaguch 		;;
    790   1.5  yamaguch 	"l2tp")
    791   1.5  yamaguch 		rumplib="$rumplib l2tp"
    792   1.5  yamaguch 		iface0=l2tp0
    793   1.5  yamaguch 		iface1=l2tp1
    794   1.5  yamaguch 		iface2=l2tp2
    795   1.5  yamaguch 	esac
    796   1.5  yamaguch 
    797   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
    798   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
    799   1.1  yamaguch 
    800   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    801   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    802   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    803   1.1  yamaguch 
    804   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    805   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    806   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    807   1.1  yamaguch 
    808   1.5  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
    809   1.5  yamaguch 		setup_l2tp_ipv4tunnel
    810   1.5  yamaguch 	fi
    811   1.5  yamaguch 
    812   1.7  yamaguch 	for sock in $SOCK_HOST0 $SOCK_HOST1; do
    813   1.7  yamaguch 		export RUMP_SERVER=$sock
    814   1.7  yamaguch 		$atf_ifconfig lagg0 create
    815   1.7  yamaguch 		$atf_ifconfig lagg0 laggproto lacp laggport $iface0
    816   1.7  yamaguch 
    817   1.7  yamaguch 		$atf_ifconfig vlan0 create
    818   1.7  yamaguch 		$atf_ifconfig vlan0 vlan 10 vlanif lagg0
    819   1.7  yamaguch 		$atf_ifconfig vlan1 create
    820   1.7  yamaguch 		$atf_ifconfig vlan1 vlan 11 vlanif lagg0
    821   1.1  yamaguch 
    822   1.7  yamaguch 		$atf_ifconfig $iface0 up
    823   1.7  yamaguch 		$atf_ifconfig lagg0 up
    824   1.7  yamaguch 	done
    825   1.1  yamaguch 
    826   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    827   1.1  yamaguch 	wait_for_distributing lagg0
    828   1.1  yamaguch 	$atf_ifconfig vlan0 $af $host0addr0/$pfx
    829   1.1  yamaguch 	$atf_ifconfig vlan0 up
    830   1.1  yamaguch 	$atf_ifconfig vlan1 $af $host0addr1/$pfx
    831   1.1  yamaguch 	$atf_ifconfig vlan1 up
    832   1.1  yamaguch 
    833   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    834   1.7  yamaguch 	wait_for_distributing lagg0
    835   1.1  yamaguch 	$atf_ifconfig vlan0 $af $host1addr0/$pfx
    836   1.1  yamaguch 	$atf_ifconfig vlan0 up
    837   1.1  yamaguch 	$atf_ifconfig vlan1 $af $host1addr1/$pfx
    838   1.1  yamaguch 	$atf_ifconfig vlan1 up
    839   1.1  yamaguch 
    840   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    841   1.1  yamaguch 	$atf_ifconfig -w 10
    842   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    843   1.1  yamaguch 	$atf_ifconfig -w 10
    844   1.1  yamaguch 
    845   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    846   1.1  yamaguch 	$atf_ping $host1addr0
    847   1.1  yamaguch 	$atf_ping $host1addr1
    848   1.1  yamaguch 
    849   1.5  yamaguch 	$atf_ifconfig lagg0 laggport $iface1
    850   1.5  yamaguch 	$atf_ifconfig $iface1 up
    851   1.1  yamaguch 
    852   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    853   1.5  yamaguch 	$atf_ifconfig lagg0 laggport $iface1
    854   1.5  yamaguch 	$atf_ifconfig $iface1 up
    855   1.1  yamaguch 
    856   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    857   1.5  yamaguch 	wait_for_distributing lagg0 $iface1
    858   1.1  yamaguch 
    859   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    860   1.5  yamaguch 	wait_for_distributing lagg0 $iface1
    861   1.1  yamaguch 
    862   1.1  yamaguch 	$atf_ping $host0addr0
    863   1.1  yamaguch 	$atf_ping $host0addr1
    864   1.1  yamaguch }
    865   1.1  yamaguch 
    866   1.1  yamaguch atf_test_case lagg_lacp_vlan_ipv4 cleanup
    867   1.1  yamaguch lagg_lacp_vlan_ipv4_head()
    868   1.1  yamaguch {
    869   1.1  yamaguch 
    870   1.1  yamaguch 	atf_set "descr" "tests for IPv4 VLAN frames over LACP LAG"
    871   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    872   1.1  yamaguch }
    873   1.1  yamaguch 
    874   1.1  yamaguch lagg_lacp_vlan_ipv4_body()
    875   1.1  yamaguch {
    876   1.1  yamaguch 
    877   1.5  yamaguch 	lagg_lacp_vlan "inet" "ether"
    878   1.1  yamaguch }
    879   1.1  yamaguch 
    880   1.1  yamaguch lagg_lacp_vlan_ipv4_cleanup()
    881   1.1  yamaguch {
    882   1.1  yamaguch 	$DEBUG && dump
    883   1.1  yamaguch 	cleanup
    884   1.1  yamaguch }
    885   1.1  yamaguch 
    886   1.1  yamaguch atf_test_case lagg_lacp_vlan_ipv6 cleanup
    887   1.1  yamaguch lagg_lacp_vlan_ipv6_head()
    888   1.1  yamaguch {
    889   1.1  yamaguch 
    890   1.1  yamaguch 	atf_set "descr" "tests for IPv6 VLAN frames over LACP LAG"
    891   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    892   1.1  yamaguch }
    893   1.1  yamaguch 
    894   1.1  yamaguch lagg_lacp_vlan_ipv6_body()
    895   1.1  yamaguch {
    896   1.1  yamaguch 
    897   1.5  yamaguch 	lagg_lacp_vlan "inet6" "ether"
    898   1.1  yamaguch }
    899   1.1  yamaguch 
    900   1.1  yamaguch lagg_lacp_vlan_ipv6_cleanup()
    901   1.1  yamaguch {
    902   1.1  yamaguch 	$DEBUG && dump
    903   1.1  yamaguch 	cleanup
    904   1.1  yamaguch }
    905   1.1  yamaguch 
    906   1.5  yamaguch atf_test_case lagg_lacp_vlanl2tp_ipv4 cleanup
    907   1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_head()
    908   1.5  yamaguch {
    909   1.5  yamaguch 
    910   1.5  yamaguch 	atf_set "descr" "tests for IPv4 VLAN frames over LACP L2TP LAG"
    911   1.5  yamaguch 	atf_set "require.progs" "rump_server"
    912   1.5  yamaguch }
    913   1.5  yamaguch 
    914   1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_body()
    915   1.5  yamaguch {
    916   1.5  yamaguch 
    917   1.5  yamaguch 	lagg_lacp_vlan "inet" "l2tp"
    918   1.5  yamaguch }
    919   1.5  yamaguch 
    920   1.5  yamaguch lagg_lacp_vlanl2tp_ipv4_cleanup()
    921   1.5  yamaguch {
    922   1.5  yamaguch 
    923   1.5  yamaguch 	$DEBUG && dump
    924   1.5  yamaguch 	cleanup
    925   1.5  yamaguch }
    926   1.5  yamaguch 
    927   1.5  yamaguch atf_test_case lagg_lacp_vlanl2tp_ipv6 cleanup
    928   1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_head()
    929   1.5  yamaguch {
    930   1.5  yamaguch 
    931   1.5  yamaguch 	atf_set "descr" "tests for IPv6 VLAN frames over LACP L2TP LAG"
    932   1.5  yamaguch 	atf_set "require.progs" "rump_server"
    933   1.5  yamaguch }
    934   1.5  yamaguch 
    935   1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_body()
    936   1.5  yamaguch {
    937   1.5  yamaguch 
    938   1.5  yamaguch 	lagg_lacp_vlan "inet6" "l2tp"
    939   1.5  yamaguch }
    940   1.5  yamaguch 
    941   1.5  yamaguch lagg_lacp_vlanl2tp_ipv6_cleanup()
    942   1.5  yamaguch {
    943   1.5  yamaguch 
    944   1.5  yamaguch 	$DEBUG && dump
    945   1.5  yamaguch 	cleanup
    946   1.5  yamaguch }
    947   1.5  yamaguch 
    948   1.1  yamaguch atf_test_case lagg_lacp_portpri cleanup
    949   1.1  yamaguch lagg_lacp_portpri_head()
    950   1.1  yamaguch {
    951   1.1  yamaguch 
    952   1.1  yamaguch 	atf_set "descr" "tests for LACP port priority"
    953   1.1  yamaguch 	atf_set "require.progs" "rump_server"
    954   1.1  yamaguch }
    955   1.1  yamaguch 
    956   1.1  yamaguch lagg_lacp_portpri_body()
    957   1.1  yamaguch {
    958   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
    959   1.1  yamaguch 
    960   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg
    961   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg
    962   1.1  yamaguch 
    963   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
    964   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
    965   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
    966   1.1  yamaguch 
    967   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
    968   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
    969   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
    970   1.1  yamaguch 
    971   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
    972   1.1  yamaguch 	$atf_ifconfig lagg0 create
    973   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    974   1.1  yamaguch 	$atf_ifconfig lagg0 lagglacp maxports 2
    975   1.1  yamaguch 
    976   1.1  yamaguch 	$atf_ifconfig shmif0 up
    977   1.1  yamaguch 	$atf_ifconfig shmif1 up
    978   1.1  yamaguch 	$atf_ifconfig shmif2 up
    979   1.1  yamaguch 
    980   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0 pri 1000
    981   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1 pri 2000
    982   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif2 pri 3000
    983   1.1  yamaguch 	$atf_ifconfig lagg0 up
    984   1.1  yamaguch 
    985   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=1000' rump.ifconfig lagg0
    986   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=2000' rump.ifconfig lagg0
    987   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=3000' rump.ifconfig lagg0
    988   1.1  yamaguch 
    989   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
    990   1.1  yamaguch 	$atf_ifconfig lagg0 create
    991   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto lacp
    992   1.1  yamaguch 
    993   1.1  yamaguch 	$atf_ifconfig shmif0 up
    994   1.1  yamaguch 	$atf_ifconfig shmif1 up
    995   1.1  yamaguch 	$atf_ifconfig shmif2 up
    996   1.1  yamaguch 
    997   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif0 pri 300
    998   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif1 pri 200
    999   1.1  yamaguch 	$atf_ifconfig lagg0 laggport shmif2 pri 100
   1000   1.1  yamaguch 	$atf_ifconfig lagg0 up
   1001   1.1  yamaguch 
   1002   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=300' rump.ifconfig lagg0
   1003   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=200' rump.ifconfig lagg0
   1004   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=100' rump.ifconfig lagg0
   1005   1.1  yamaguch 
   1006   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1007   1.1  yamaguch 	wait_for_distributing lagg0 shmif0
   1008   1.1  yamaguch 	wait_for_distributing lagg0 shmif1
   1009   1.1  yamaguch 	wait_state "STANDBY" lagg0 shmif2
   1010   1.1  yamaguch 
   1011   1.1  yamaguch 	$atf_ifconfig shmif0 down
   1012   1.1  yamaguch 	wait_for_distributing lagg0 shmif2
   1013   1.1  yamaguch 
   1014   1.1  yamaguch 	$atf_ifconfig shmif0 up
   1015   1.1  yamaguch 	wait_for_distributing lagg0 shmif0
   1016   1.1  yamaguch 
   1017   1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif0 5000
   1018   1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif1 5000
   1019   1.1  yamaguch 	$atf_ifconfig lagg0 laggportpri shmif2 5000
   1020   1.1  yamaguch 
   1021   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif0 pri=5000' rump.ifconfig lagg0
   1022   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif1 pri=5000' rump.ifconfig lagg0
   1023   1.1  yamaguch 	atf_check -s exit:0 -o match:'shmif2 pri=5000' rump.ifconfig lagg0
   1024   1.1  yamaguch 
   1025   1.1  yamaguch 	wait_state "STANDBY" lagg0 shmif0
   1026   1.1  yamaguch 	wait_for_distributing lagg0 shmif1
   1027   1.1  yamaguch 	wait_for_distributing lagg0 shmif2
   1028   1.1  yamaguch }
   1029   1.1  yamaguch 
   1030   1.1  yamaguch lagg_lacp_portpri_cleanup()
   1031   1.1  yamaguch {
   1032   1.1  yamaguch 
   1033   1.1  yamaguch 	$DEBUG && dump
   1034   1.1  yamaguch 	cleanup
   1035   1.1  yamaguch }
   1036   1.1  yamaguch 
   1037   1.1  yamaguch lagg_failover()
   1038   1.1  yamaguch {
   1039   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
   1040   1.1  yamaguch 
   1041   1.1  yamaguch 	local af=$1
   1042   1.3  yamaguch 	local l2proto=$2
   1043   1.1  yamaguch 	local ping="rump.ping -c 1"
   1044   1.1  yamaguch 	local rumplib=""
   1045   1.1  yamaguch 	local pfx=24
   1046   1.1  yamaguch 	local addr_host0=$IP4ADDR0
   1047   1.1  yamaguch 	local addr_host1=$IP4ADDR1
   1048   1.1  yamaguch 
   1049   1.1  yamaguch 	case $af in
   1050   1.1  yamaguch 	"inet")
   1051   1.1  yamaguch 		# do nothing
   1052   1.1  yamaguch 		;;
   1053   1.1  yamaguch 	"inet6")
   1054   1.1  yamaguch 		ping="rump.ping6 -c 1"
   1055   1.1  yamaguch 		rumplib="netinet6"
   1056   1.1  yamaguch 		pfx=64
   1057   1.1  yamaguch 		addr_host0=$IP6ADDR0
   1058   1.1  yamaguch 		addr_host1=$IP6ADDR1
   1059   1.1  yamaguch 		;;
   1060   1.1  yamaguch 	esac
   1061   1.1  yamaguch 
   1062   1.3  yamaguch 	case $l2proto in
   1063   1.3  yamaguch 	"ether")
   1064   1.3  yamaguch 		iface0="shmif0"
   1065   1.3  yamaguch 		iface1="shmif1"
   1066   1.3  yamaguch 		iface2="shmif2"
   1067   1.3  yamaguch 		;;
   1068   1.3  yamaguch 	"l2tp")
   1069   1.3  yamaguch 		rumplib="$rumplib l2tp"
   1070   1.3  yamaguch 		iface0="l2tp0"
   1071   1.3  yamaguch 		iface1="l2tp1"
   1072   1.3  yamaguch 		iface2="l2tp2"
   1073   1.3  yamaguch 		;;
   1074   1.3  yamaguch 	esac
   1075   1.3  yamaguch 
   1076   1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
   1077   1.1  yamaguch 
   1078   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
   1079   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
   1080   1.1  yamaguch 
   1081   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
   1082   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
   1083   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
   1084   1.1  yamaguch 
   1085   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
   1086   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
   1087   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
   1088   1.1  yamaguch 
   1089   1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
   1090   1.3  yamaguch 		setup_l2tp_ipv4tunnel
   1091   1.3  yamaguch 	fi
   1092   1.3  yamaguch 
   1093   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1094   1.1  yamaguch 	$atf_ifconfig lagg0 create
   1095   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto failover
   1096   1.1  yamaguch 
   1097   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1098   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 2000
   1099   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 3000
   1100   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
   1101   1.1  yamaguch 
   1102   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1103   1.1  yamaguch 	$atf_ifconfig lagg0 create
   1104   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto failover
   1105   1.1  yamaguch 
   1106   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1107   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 3000
   1108   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 2000
   1109   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
   1110   1.1  yamaguch 
   1111   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1112   1.3  yamaguch 	$atf_ifconfig $iface0 up
   1113   1.3  yamaguch 	$atf_ifconfig $iface1 up
   1114   1.3  yamaguch 	$atf_ifconfig $iface2 up
   1115   1.1  yamaguch 	$atf_ifconfig lagg0 up
   1116   1.1  yamaguch 
   1117   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1118   1.3  yamaguch 	$atf_ifconfig $iface0 up
   1119   1.3  yamaguch 	$atf_ifconfig $iface1 up
   1120   1.3  yamaguch 	$atf_ifconfig $iface2 up
   1121   1.1  yamaguch 	$atf_ifconfig lagg0 up
   1122   1.1  yamaguch 
   1123   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1124   1.1  yamaguch 	$atf_ifconfig -w 10
   1125   1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1126   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1127   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1128   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1129   1.1  yamaguch 
   1130   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1131   1.1  yamaguch 	$atf_ifconfig -w 10
   1132   1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1133   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1134   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1135   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1136   1.1  yamaguch 
   1137   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1138   1.1  yamaguch 	$atf_ping $addr_host1
   1139   1.1  yamaguch 
   1140   1.3  yamaguch 	$atf_ifconfig $iface0 down
   1141   1.3  yamaguch 	wait_for_distributing lagg0 $iface1
   1142   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1143   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1144   1.1  yamaguch 
   1145   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1146   1.3  yamaguch 	$atf_ifconfig $iface0 down
   1147   1.3  yamaguch 	wait_for_distributing lagg0 $iface2
   1148   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1149   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1150   1.1  yamaguch 
   1151   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1152   1.1  yamaguch 	$atf_ping $addr_host1
   1153   1.1  yamaguch 
   1154   1.1  yamaguch 	$atf_ifconfig lagg0 laggfailover -rx-all
   1155   1.3  yamaguch 	atf_check -s exit:0 -o not-match:'$iface2.+COLLECTING' rump.ifconfig lagg0
   1156   1.1  yamaguch 
   1157   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1158   1.1  yamaguch 	$atf_ifconfig lagg0 laggfailover -rx-all
   1159   1.3  yamaguch 	atf_check -s exit:0 -o not-match:'$iface1.+COLLECTING' rump.ifconfig lagg0
   1160   1.1  yamaguch 
   1161   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1162   1.1  yamaguch 	atf_check -s not-exit:0 -o ignore -e ignore $ping -c 1 $addr_host1
   1163   1.1  yamaguch }
   1164   1.1  yamaguch 
   1165   1.1  yamaguch atf_test_case lagg_failover_ipv4 cleanup
   1166   1.1  yamaguch lagg_failover_ipv4_head()
   1167   1.1  yamaguch {
   1168   1.1  yamaguch 
   1169   1.1  yamaguch 	atf_set "descr" "tests for failover using IPv4"
   1170   1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1171   1.1  yamaguch }
   1172   1.1  yamaguch 
   1173   1.1  yamaguch lagg_failover_ipv4_body()
   1174   1.1  yamaguch {
   1175   1.1  yamaguch 
   1176   1.3  yamaguch 	lagg_failover "inet" "ether"
   1177   1.1  yamaguch }
   1178   1.1  yamaguch 
   1179   1.1  yamaguch lagg_failover_ipv4_cleanup()
   1180   1.1  yamaguch {
   1181   1.1  yamaguch 
   1182   1.1  yamaguch 	$DEBUG && dump
   1183   1.1  yamaguch 	cleanup
   1184   1.1  yamaguch }
   1185   1.1  yamaguch 
   1186   1.1  yamaguch atf_test_case lagg_failover_ipv6 cleanup
   1187   1.1  yamaguch lagg_failover_ipv6_head()
   1188   1.1  yamaguch {
   1189   1.1  yamaguch 
   1190   1.1  yamaguch 	atf_set "descr" "tests for failover using IPv6"
   1191   1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1192   1.1  yamaguch }
   1193   1.1  yamaguch 
   1194   1.1  yamaguch lagg_failover_ipv6_body()
   1195   1.1  yamaguch {
   1196   1.1  yamaguch 
   1197   1.3  yamaguch 	lagg_failover "inet6" "ether"
   1198   1.1  yamaguch }
   1199   1.1  yamaguch 
   1200   1.1  yamaguch lagg_failover_ipv6_cleanup()
   1201   1.1  yamaguch {
   1202   1.1  yamaguch 
   1203   1.1  yamaguch 	$DEBUG && dump
   1204   1.1  yamaguch 	cleanup
   1205   1.1  yamaguch }
   1206   1.1  yamaguch 
   1207   1.3  yamaguch atf_test_case lagg_failover_l2tp_ipv4 cleanup
   1208   1.3  yamaguch lagg_failover_l2tp_ipv4_head()
   1209   1.3  yamaguch {
   1210   1.3  yamaguch 
   1211   1.3  yamaguch 	atf_set "descr" "tests for failover over l2tp using IPv4"
   1212   1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1213   1.3  yamaguch }
   1214   1.3  yamaguch 
   1215   1.3  yamaguch lagg_failover_l2tp_ipv4_body()
   1216   1.3  yamaguch {
   1217   1.3  yamaguch 
   1218   1.3  yamaguch 	lagg_failover "inet" "l2tp"
   1219   1.3  yamaguch }
   1220   1.3  yamaguch 
   1221   1.3  yamaguch lagg_failover_l2tp_ipv4_cleanup()
   1222   1.3  yamaguch {
   1223   1.3  yamaguch 	$DEBUG && dump
   1224   1.3  yamaguch 	cleanup
   1225   1.3  yamaguch }
   1226   1.3  yamaguch 
   1227   1.3  yamaguch atf_test_case lagg_failover_l2tp_ipv6 cleanup
   1228   1.3  yamaguch lagg_failover_l2tp_ipv6_head()
   1229   1.3  yamaguch {
   1230   1.3  yamaguch 
   1231   1.3  yamaguch 	atf_set "descr" "tests for failover over l2tp using IPv6"
   1232   1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1233   1.3  yamaguch }
   1234   1.3  yamaguch 
   1235   1.3  yamaguch lagg_failover_l2tp_ipv6_body()
   1236   1.3  yamaguch {
   1237   1.3  yamaguch 
   1238   1.3  yamaguch 	lagg_failover "inet6" "l2tp"
   1239   1.3  yamaguch }
   1240   1.3  yamaguch 
   1241   1.3  yamaguch lagg_failover_l2tp_ipv6_cleanup()
   1242   1.3  yamaguch {
   1243   1.3  yamaguch 	$DEBUG && dump
   1244   1.3  yamaguch 	cleanup
   1245   1.3  yamaguch }
   1246   1.3  yamaguch 
   1247   1.1  yamaguch lagg_loadbalance()
   1248   1.1  yamaguch {
   1249   1.1  yamaguch 	local atf_ifconfig="atf_check -s exit:0 rump.ifconfig"
   1250   1.1  yamaguch 
   1251   1.1  yamaguch 	local af=$1
   1252   1.3  yamaguch 	local l2proto=$2
   1253   1.1  yamaguch 	local ping="rump.ping -c 1"
   1254   1.1  yamaguch 	local rumplib=""
   1255   1.1  yamaguch 	local pfx=24
   1256   1.1  yamaguch 	local addr_host0=$IP4ADDR0
   1257   1.1  yamaguch 	local addr_host1=$IP4ADDR1
   1258   1.1  yamaguch 
   1259   1.1  yamaguch 	case $af in
   1260   1.1  yamaguch 	"inet")
   1261   1.1  yamaguch 		# do nothing
   1262   1.1  yamaguch 		;;
   1263   1.1  yamaguch 	"inet6")
   1264   1.1  yamaguch 		ping="rump.ping6 -c 1"
   1265   1.1  yamaguch 		rumplib="netinet6"
   1266   1.1  yamaguch 		pfx=64
   1267   1.1  yamaguch 		addr_host0=$IP6ADDR0
   1268   1.1  yamaguch 		addr_host1=$IP6ADDR1
   1269   1.1  yamaguch 		;;
   1270   1.1  yamaguch 	esac
   1271   1.1  yamaguch 
   1272   1.3  yamaguch 	case $l2proto in
   1273   1.3  yamaguch 	"ether")
   1274   1.3  yamaguch 		iface0=shmif0
   1275   1.3  yamaguch 		iface1=shmif1
   1276   1.3  yamaguch 		iface2=shmif2
   1277   1.3  yamaguch 		;;
   1278   1.3  yamaguch 	"l2tp")
   1279   1.3  yamaguch 		rumplib="$rumplib l2tp"
   1280   1.3  yamaguch 		iface0=l2tp0
   1281   1.3  yamaguch 		iface1=l2tp1
   1282   1.3  yamaguch 		iface2=l2tp2
   1283   1.3  yamaguch 		;;
   1284   1.3  yamaguch 	esac
   1285   1.3  yamaguch 
   1286   1.1  yamaguch 	local atf_ping="atf_check -s exit:0 -o ignore ${ping}"
   1287   1.1  yamaguch 
   1288   1.1  yamaguch 	rump_server_start $SOCK_HOST0 lagg $rumplib
   1289   1.1  yamaguch 	rump_server_start $SOCK_HOST1 lagg $rumplib
   1290   1.1  yamaguch 
   1291   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif0 $BUS0
   1292   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif1 $BUS1
   1293   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST0 shmif2 $BUS2
   1294   1.1  yamaguch 
   1295   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif0 $BUS0
   1296   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif1 $BUS1
   1297   1.1  yamaguch 	rump_server_add_iface $SOCK_HOST1 shmif2 $BUS2
   1298   1.1  yamaguch 
   1299   1.3  yamaguch 	if [ x"$l2proto" = x"l2tp" ]; then
   1300   1.3  yamaguch 		setup_l2tp_ipv4tunnel
   1301   1.3  yamaguch 	fi
   1302   1.3  yamaguch 
   1303   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1304   1.1  yamaguch 	$atf_ifconfig lagg0 create
   1305   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto loadbalance
   1306   1.1  yamaguch 
   1307   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1308   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 2000
   1309   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 3000
   1310   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host0/$pfx
   1311   1.1  yamaguch 
   1312   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1313   1.1  yamaguch 	$atf_ifconfig lagg0 create
   1314   1.1  yamaguch 	$atf_ifconfig lagg0 laggproto loadbalance
   1315   1.1  yamaguch 
   1316   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface0 pri 1000
   1317   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface1 pri 3000
   1318   1.3  yamaguch 	$atf_ifconfig lagg0 laggport $iface2 pri 2000
   1319   1.1  yamaguch 	$atf_ifconfig lagg0 $af $addr_host1/$pfx
   1320   1.1  yamaguch 
   1321   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1322   1.3  yamaguch 	$atf_ifconfig $iface0 up
   1323   1.3  yamaguch 	$atf_ifconfig $iface1 up
   1324   1.3  yamaguch 	$atf_ifconfig $iface2 up
   1325   1.1  yamaguch 	$atf_ifconfig lagg0 up
   1326   1.1  yamaguch 
   1327   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1328   1.3  yamaguch 	$atf_ifconfig $iface0 up
   1329   1.3  yamaguch 	$atf_ifconfig $iface1 up
   1330   1.3  yamaguch 	$atf_ifconfig $iface2 up
   1331   1.1  yamaguch 	$atf_ifconfig lagg0 up
   1332   1.1  yamaguch 
   1333   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1334   1.1  yamaguch 	$atf_ifconfig -w 10
   1335   1.3  yamaguch 	wait_for_distributing lagg0 $iface0
   1336   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface0
   1337   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface1
   1338   1.3  yamaguch 	wait_state "COLLECTING" lagg0 $iface2
   1339   1.1  yamaguch 
   1340   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1341   1.1  yamaguch 	$atf_ifconfig -w 10
   1342   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface0
   1343   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1344   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1345   1.1  yamaguch 
   1346   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1347   1.1  yamaguch 	$atf_ping $addr_host1
   1348   1.1  yamaguch 
   1349   1.3  yamaguch 	$atf_ifconfig $iface0 down
   1350   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1351   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1352   1.1  yamaguch 
   1353   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST1
   1354   1.3  yamaguch 	$atf_ifconfig $iface0 down
   1355   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface1
   1356   1.3  yamaguch 	wait_state "COLLECTING,DISTRIBUTING" lagg0 $iface2
   1357   1.1  yamaguch 
   1358   1.1  yamaguch 	export RUMP_SERVER=$SOCK_HOST0
   1359   1.1  yamaguch 	$atf_ping $addr_host1
   1360   1.1  yamaguch }
   1361   1.1  yamaguch 
   1362   1.1  yamaguch atf_test_case lagg_loadbalance_ipv4 cleanup
   1363   1.1  yamaguch lagg_loadbalance_ipv4_head()
   1364   1.1  yamaguch {
   1365   1.1  yamaguch 
   1366   1.1  yamaguch 	atf_set "descr" "tests for loadbalance using IPv4"
   1367   1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1368   1.1  yamaguch }
   1369   1.1  yamaguch 
   1370   1.1  yamaguch lagg_loadbalance_ipv4_body()
   1371   1.1  yamaguch {
   1372   1.1  yamaguch 
   1373   1.3  yamaguch 	lagg_loadbalance "inet" "ether"
   1374   1.1  yamaguch }
   1375   1.1  yamaguch 
   1376   1.1  yamaguch lagg_loadbalance_ipv4_cleanup()
   1377   1.1  yamaguch {
   1378   1.1  yamaguch 
   1379   1.1  yamaguch 	$DEBUG && dump
   1380   1.1  yamaguch 	cleanup
   1381   1.1  yamaguch }
   1382   1.1  yamaguch 
   1383   1.1  yamaguch atf_test_case lagg_loadbalance_ipv6 cleanup
   1384   1.1  yamaguch lagg_loadbalance_ipv6_head()
   1385   1.1  yamaguch {
   1386   1.1  yamaguch 
   1387   1.1  yamaguch 	atf_set "descr" "tests for loadbalance using IPv6"
   1388   1.1  yamaguch 	atf_set "require.progs" "rump_server"
   1389   1.1  yamaguch }
   1390   1.1  yamaguch 
   1391   1.1  yamaguch lagg_loadbalance_ipv6_body()
   1392   1.1  yamaguch {
   1393   1.1  yamaguch 
   1394   1.3  yamaguch 	lagg_loadbalance "inet6" "ether"
   1395   1.1  yamaguch }
   1396   1.1  yamaguch 
   1397   1.1  yamaguch lagg_loadbalance_ipv6_cleanup()
   1398   1.1  yamaguch {
   1399   1.1  yamaguch 
   1400   1.1  yamaguch 	$DEBUG && dump
   1401   1.1  yamaguch 	cleanup
   1402   1.1  yamaguch }
   1403   1.1  yamaguch 
   1404   1.3  yamaguch atf_test_case lagg_loadbalance_l2tp_ipv4 cleanup
   1405   1.3  yamaguch lagg_loadbalance_l2tp_ipv4_head()
   1406   1.3  yamaguch {
   1407   1.3  yamaguch 
   1408   1.3  yamaguch 	atf_set "descr" "tests for loadbalance over l2tp using IPv4"
   1409   1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1410   1.3  yamaguch }
   1411   1.3  yamaguch 
   1412   1.3  yamaguch lagg_loadbalance_l2tp_ipv4_body()
   1413   1.3  yamaguch {
   1414   1.3  yamaguch 
   1415   1.3  yamaguch 	lagg_loadbalance "inet" "l2tp"
   1416   1.3  yamaguch }
   1417   1.3  yamaguch 
   1418   1.3  yamaguch lagg_loadbalance_l2tp_ipv4_cleanup()
   1419   1.3  yamaguch {
   1420   1.3  yamaguch 
   1421   1.3  yamaguch 	$DEBUG && dump
   1422   1.3  yamaguch 	cleanup
   1423   1.3  yamaguch }
   1424   1.3  yamaguch 
   1425   1.3  yamaguch atf_test_case lagg_loadbalance_l2tp_ipv6 cleanup
   1426   1.3  yamaguch lagg_loadbalance_l2tp_ipv4_head()
   1427   1.3  yamaguch {
   1428   1.3  yamaguch 
   1429   1.3  yamaguch 	atf_set "descr" "tests for loadbalance over l2tp using IPv6"
   1430   1.3  yamaguch 	atf_set "require.progs" "rump_server"
   1431   1.3  yamaguch }
   1432   1.3  yamaguch 
   1433   1.3  yamaguch lagg_loadbalance_l2tp_ipv6_body()
   1434   1.3  yamaguch {
   1435   1.3  yamaguch 
   1436   1.3  yamaguch 	lagg_loadbalance "inet6" "l2tp"
   1437   1.3  yamaguch }
   1438   1.3  yamaguch 
   1439   1.3  yamaguch lagg_loadbalance_l2tp_ipv6_cleanup()
   1440   1.3  yamaguch {
   1441   1.3  yamaguch 
   1442   1.3  yamaguch 	$DEBUG && dump
   1443   1.3  yamaguch 	cleanup
   1444   1.3  yamaguch }
   1445   1.3  yamaguch 
   1446   1.1  yamaguch atf_init_test_cases()
   1447   1.1  yamaguch {
   1448   1.1  yamaguch 
   1449   1.1  yamaguch 	atf_add_test_case lagg_ifconfig
   1450   1.1  yamaguch 	atf_add_test_case lagg_macaddr
   1451   1.1  yamaguch 	atf_add_test_case lagg_ipv6lla
   1452   1.8  yamaguch 	atf_add_test_case lagg_mtu
   1453   1.1  yamaguch 	atf_add_test_case lagg_lacp_basic
   1454   1.1  yamaguch 	atf_add_test_case lagg_lacp_ipv4
   1455   1.1  yamaguch 	atf_add_test_case lagg_lacp_ipv6
   1456   1.3  yamaguch 	atf_add_test_case lagg_lacp_l2tp_ipv4
   1457   1.3  yamaguch 	atf_add_test_case lagg_lacp_l2tp_ipv6
   1458   1.1  yamaguch 	atf_add_test_case lagg_lacp_vlan_ipv4
   1459   1.1  yamaguch 	atf_add_test_case lagg_lacp_vlan_ipv6
   1460   1.5  yamaguch 	atf_add_test_case lagg_lacp_vlanl2tp_ipv4
   1461   1.5  yamaguch 	atf_add_test_case lagg_lacp_vlanl2tp_ipv6
   1462   1.1  yamaguch 	atf_add_test_case lagg_lacp_portpri
   1463   1.1  yamaguch 	atf_add_test_case lagg_failover_ipv4
   1464   1.1  yamaguch 	atf_add_test_case lagg_failover_ipv6
   1465   1.3  yamaguch 	atf_add_test_case lagg_failover_l2tp_ipv4
   1466   1.3  yamaguch 	atf_add_test_case lagg_failover_l2tp_ipv6
   1467   1.1  yamaguch 	atf_add_test_case lagg_loadbalance_ipv4
   1468   1.1  yamaguch 	atf_add_test_case lagg_loadbalance_ipv6
   1469   1.3  yamaguch 	atf_add_test_case lagg_loadbalance_l2tp_ipv4
   1470   1.3  yamaguch 	atf_add_test_case lagg_loadbalance_l2tp_ipv6
   1471   1.1  yamaguch }
   1472