1 1.11 yamaguch # $NetBSD: t_lagg.sh,v 1.11 2024/04/05 07:04:17 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.11 yamaguch $DEBUG && 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.11 yamaguch # copy MTU to 1st added 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