diff options
author | Renato Botelho <renato@netgate.com> | 2017-02-23 06:28:41 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2017-02-23 06:28:41 -0300 |
commit | 82ceeb2ea625cd9bff60f2863b9a0830f55b7905 (patch) | |
tree | 263ca9347bf664a4489743f9302e699ce14de1df /contrib/netbsd-tests/net/if_gif | |
parent | 4a05f5440acda223e6a0ec5157bc32ecc0f09ff9 (diff) | |
parent | d20dd8b36e7a565be7bfbb22aade51c8ffd753e9 (diff) | |
download | FreeBSD-src-devel.zip FreeBSD-src-devel.tar.gz |
Merge remote-tracking branch 'origin/stable/10' into develdevel
Diffstat (limited to 'contrib/netbsd-tests/net/if_gif')
-rwxr-xr-x | contrib/netbsd-tests/net/if_gif/t_gif.sh | 763 |
1 files changed, 763 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/net/if_gif/t_gif.sh b/contrib/netbsd-tests/net/if_gif/t_gif.sh new file mode 100755 index 0000000..8690d78 --- /dev/null +++ b/contrib/netbsd-tests/net/if_gif/t_gif.sh @@ -0,0 +1,763 @@ +# $NetBSD: t_gif.sh,v 1.9 2016/12/21 09:46:39 ozaki-r Exp $ +# +# Copyright (c) 2015 Internet Initiative Japan Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +SOCK1=unix://commsock1 # for ROUTER1 +SOCK2=unix://commsock2 # for ROUTER2 +ROUTER1_LANIP=192.168.1.1 +ROUTER1_LANNET=192.168.1.0/24 +ROUTER1_WANIP=10.0.0.1 +ROUTER1_GIFIP=172.16.1.1 +ROUTER1_WANIP_DUMMY=10.0.0.11 +ROUTER1_GIFIP_DUMMY=172.16.11.1 +ROUTER1_GIFIP_RECURSIVE1=172.16.101.1 +ROUTER1_GIFIP_RECURSIVE2=172.16.201.1 +ROUTER2_LANIP=192.168.2.1 +ROUTER2_LANNET=192.168.2.0/24 +ROUTER2_WANIP=10.0.0.2 +ROUTER2_GIFIP=172.16.2.1 +ROUTER2_WANIP_DUMMY=10.0.0.12 +ROUTER2_GIFIP_DUMMY=172.16.12.1 +ROUTER2_GIFIP_RECURSIVE1=172.16.102.1 +ROUTER2_GIFIP_RECURSIVE2=172.16.202.1 + +ROUTER1_LANIP6=fc00:1::1 +ROUTER1_LANNET6=fc00:1::/64 +ROUTER1_WANIP6=fc00::1 +ROUTER1_GIFIP6=fc00:3::1 +ROUTER1_WANIP6_DUMMY=fc00::11 +ROUTER1_GIFIP6_DUMMY=fc00:13::1 +ROUTER1_GIFIP6_RECURSIVE1=fc00:103::1 +ROUTER1_GIFIP6_RECURSIVE2=fc00:203::1 +ROUTER2_LANIP6=fc00:2::1 +ROUTER2_LANNET6=fc00:2::/64 +ROUTER2_WANIP6=fc00::2 +ROUTER2_GIFIP6=fc00:4::1 +ROUTER2_WANIP6_DUMMY=fc00::12 +ROUTER2_GIFIP6_DUMMY=fc00:14::1 +ROUTER2_GIFIP6_RECURSIVE1=fc00:104::1 +ROUTER2_GIFIP6_RECURSIVE2=fc00:204::1 + +DEBUG=${DEBUG:-true} +TIMEOUT=5 + +setup_router() +{ + sock=${1} + lan=${2} + lan_mode=${3} + wan=${4} + wan_mode=${5} + + rump_server_add_iface $sock shmif0 bus0 + rump_server_add_iface $sock shmif1 bus1 + + export RUMP_SERVER=${sock} + if [ ${lan_mode} = "ipv6" ]; then + atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${lan} + else + atf_check -s exit:0 rump.ifconfig shmif0 inet ${lan} netmask 0xffffff00 + fi + atf_check -s exit:0 rump.ifconfig shmif0 up + rump.ifconfig shmif0 + + if [ ${wan_mode} = "ipv6" ]; then + atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${wan} + else + atf_check -s exit:0 rump.ifconfig shmif1 inet ${wan} netmask 0xff000000 + fi + atf_check -s exit:0 rump.ifconfig shmif1 up + rump.ifconfig shmif1 +} + +test_router() +{ + sock=${1} + lan=${2} + lan_mode=${3} + wan=${4} + wan_mode=${5} + + export RUMP_SERVER=${sock} + atf_check -s exit:0 -o match:shmif0 rump.ifconfig + if [ ${lan_mode} = "ipv6" ]; then + atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${lan} + else + atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${lan} + fi + + atf_check -s exit:0 -o match:shmif1 rump.ifconfig + if [ ${wan_mode} = "ipv6" ]; then + atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${wan} + else + atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${wan} + fi +} + +setup() +{ + inner=${1} + outer=${2} + + rump_server_start $SOCK1 netinet6 gif + rump_server_start $SOCK2 netinet6 gif + + router1_lan="" + router1_lan_mode="" + router2_lan="" + router2_lan_mode="" + if [ ${inner} = "ipv6" ]; then + router1_lan=$ROUTER1_LANIP6 + router1_lan_mode="ipv6" + router2_lan=$ROUTER2_LANIP6 + router2_lan_mode="ipv6" + else + router1_lan=$ROUTER1_LANIP + router1_lan_mode="ipv4" + router2_lan=$ROUTER2_LANIP + router2_lan_mode="ipv4" + fi + + if [ ${outer} = "ipv6" ]; then + setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ + $ROUTER1_WANIP6 ipv6 + setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ + $ROUTER2_WANIP6 ipv6 + else + setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ + $ROUTER1_WANIP ipv4 + setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ + $ROUTER2_WANIP ipv4 + fi +} + +test_setup() +{ + inner=${1} + outer=${2} + + router1_lan="" + router1_lan_mode="" + router2_lan="" + router2_lan_mode="" + if [ ${inner} = "ipv6" ]; then + router1_lan=$ROUTER1_LANIP6 + router1_lan_mode="ipv6" + router2_lan=$ROUTER2_LANIP6 + router2_lan_mode="ipv6" + else + router1_lan=$ROUTER1_LANIP + router1_lan_mode="ipv4" + router2_lan=$ROUTER2_LANIP + router2_lan_mode="ipv4" + fi + if [ ${outer} = "ipv6" ]; then + test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ + $ROUTER1_WANIP6 ipv6 + test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ + $ROUTER2_WANIP6 ipv6 + else + test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \ + $ROUTER1_WANIP ipv4 + test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \ + $ROUTER2_WANIP ipv4 + fi +} + +setup_if_gif() +{ + sock=${1} + addr=${2} + remote=${3} + inner=${4} + src=${5} + dst=${6} + peernet=${7} + + export RUMP_SERVER=${sock} + atf_check -s exit:0 rump.ifconfig gif0 create + atf_check -s exit:0 rump.ifconfig gif0 tunnel ${src} ${dst} + if [ ${inner} = "ipv6" ]; then + atf_check -s exit:0 rump.ifconfig gif0 inet6 ${addr}/128 ${remote} + atf_check -s exit:0 -o ignore rump.route add -inet6 ${peernet} ${addr} + else + atf_check -s exit:0 rump.ifconfig gif0 inet ${addr}/32 ${remote} + atf_check -s exit:0 -o ignore rump.route add -inet ${peernet} ${addr} + fi + + rump.ifconfig gif0 + rump.route -nL show +} + +setup_tunnel() +{ + inner=${1} + outer=${2} + + addr="" + remote="" + src="" + dst="" + peernet="" + + if [ ${inner} = "ipv6" ]; then + addr=$ROUTER1_GIFIP6 + remote=$ROUTER2_GIFIP6 + peernet=$ROUTER2_LANNET6 + else + addr=$ROUTER1_GIFIP + remote=$ROUTER2_GIFIP + peernet=$ROUTER2_LANNET + fi + if [ ${outer} = "ipv6" ]; then + src=$ROUTER1_WANIP6 + dst=$ROUTER2_WANIP6 + else + src=$ROUTER1_WANIP + dst=$ROUTER2_WANIP + fi + setup_if_gif $SOCK1 ${addr} ${remote} ${inner} \ + ${src} ${dst} ${peernet} + + if [ $inner = "ipv6" ]; then + addr=$ROUTER2_GIFIP6 + remote=$ROUTER1_GIFIP6 + peernet=$ROUTER1_LANNET6 + else + addr=$ROUTER2_GIFIP + remote=$ROUTER1_GIFIP + peernet=$ROUTER1_LANNET + fi + if [ $outer = "ipv6" ]; then + src=$ROUTER2_WANIP6 + dst=$ROUTER1_WANIP6 + else + src=$ROUTER2_WANIP + dst=$ROUTER1_WANIP + fi + setup_if_gif $SOCK2 ${addr} ${remote} ${inner} \ + ${src} ${dst} ${peernet} +} + +test_setup_tunnel() +{ + mode=${1} + + peernet="" + opt="" + if [ ${mode} = "ipv6" ]; then + peernet=$ROUTER2_LANNET6 + opt="-inet6" + else + peernet=$ROUTER2_LANNET + opt="-inet" + fi + export RUMP_SERVER=$SOCK1 + atf_check -s exit:0 -o match:gif0 rump.ifconfig + atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet} + + if [ ${mode} = "ipv6" ]; then + peernet=$ROUTER1_LANNET6 + opt="-inet6" + else + peernet=$ROUTER1_LANNET + opt="-inet" + fi + export RUMP_SERVER=$SOCK2 + atf_check -s exit:0 -o match:gif0 rump.ifconfig + atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet} +} + +teardown_tunnel() +{ + export RUMP_SERVER=$SOCK1 + atf_check -s exit:0 rump.ifconfig gif0 deletetunnel + atf_check -s exit:0 rump.ifconfig gif0 destroy + + export RUMP_SERVER=$SOCK2 + atf_check -s exit:0 rump.ifconfig gif0 deletetunnel + atf_check -s exit:0 rump.ifconfig gif0 destroy +} + +setup_dummy_if_gif() +{ + sock=${1} + addr=${2} + remote=${3} + inner=${4} + src=${5} + dst=${6} + + export RUMP_SERVER=${sock} + atf_check -s exit:0 rump.ifconfig gif1 create + atf_check -s exit:0 rump.ifconfig gif1 tunnel ${src} ${dst} + if [ ${inner} = "ipv6" ]; then + atf_check -s exit:0 rump.ifconfig gif1 inet6 ${addr}/128 ${remote} + else + atf_check -s exit:0 rump.ifconfig gif1 inet ${addr}/32 ${remote} + fi + + rump.ifconfig gif1 +} + +setup_dummy_tunnel() +{ + inner=${1} + outer=${2} + + addr="" + remote="" + src="" + dst="" + + if [ ${inner} = "ipv6" ]; then + addr=$ROUTER1_GIFIP6_DUMMY + remote=$ROUTER2_GIFIP6_DUMMY + else + addr=$ROUTER1_GIFIP_DUMMY + remote=$ROUTER2_GIFIP_DUMMY + fi + if [ ${outer} = "ipv6" ]; then + src=$ROUTER1_WANIP6_DUMMY + dst=$ROUTER2_WANIP6_DUMMY + else + src=$ROUTER1_WANIP_DUMMY + dst=$ROUTER2_WANIP_DUMMY + fi + setup_dummy_if_gif $SOCK1 ${addr} ${remote} ${inner} \ + ${src} ${dst} + + if [ $inner = "ipv6" ]; then + addr=$ROUTER2_GIFIP6_DUMMY + remote=$ROUTER1_GIFIP6_DUMMY + else + addr=$ROUTER2_GIFIP_DUMMY + remote=$ROUTER1_GIFIP_DUMMY + fi + if [ $outer = "ipv6" ]; then + src=$ROUTER2_WANIP6_DUMMY + dst=$ROUTER1_WANIP6_DUMMY + else + src=$ROUTER2_WANIP_DUMMY + dst=$ROUTER1_WANIP_DUMMY + fi + setup_dummy_if_gif $SOCK2 ${addr} ${remote} ${inner} \ + ${src} ${dst} +} + +test_setup_dummy_tunnel() +{ + export RUMP_SERVER=$SOCK1 + atf_check -s exit:0 -o match:gif1 rump.ifconfig + + export RUMP_SERVER=$SOCK2 + atf_check -s exit:0 -o match:gif1 rump.ifconfig +} + +teardown_dummy_tunnel() +{ + export RUMP_SERVER=$SOCK1 + atf_check -s exit:0 rump.ifconfig gif1 deletetunnel + atf_check -s exit:0 rump.ifconfig gif1 destroy + + export RUMP_SERVER=$SOCK2 + atf_check -s exit:0 rump.ifconfig gif1 deletetunnel + atf_check -s exit:0 rump.ifconfig gif1 destroy +} + +setup_recursive_if_gif() +{ + sock=${1} + gif=${2} + addr=${3} + remote=${4} + inner=${5} + src=${6} + dst=${7} + + export RUMP_SERVER=${sock} + atf_check -s exit:0 rump.ifconfig ${gif} create + atf_check -s exit:0 rump.ifconfig ${gif} tunnel ${src} ${dst} + if [ ${inner} = "ipv6" ]; then + atf_check -s exit:0 rump.ifconfig ${gif} inet6 ${addr}/128 ${remote} + else + atf_check -s exit:0 rump.ifconfig ${gif} inet ${addr}/32 ${remote} + fi + + rump.ifconfig ${gif} +} + +# test in ROUTER1 only +setup_recursive_tunnels() +{ + mode=${1} + + addr="" + remote="" + src="" + dst="" + + if [ ${mode} = "ipv6" ]; then + addr=$ROUTER1_GIFIP6_RECURSIVE1 + remote=$ROUTER2_GIFIP6_RECURSIVE1 + src=$ROUTER1_GIFIP6 + dst=$ROUTER2_GIFIP6 + else + addr=$ROUTER1_GIFIP_RECURSIVE1 + remote=$ROUTER2_GIFIP_RECURSIVE1 + src=$ROUTER1_GIFIP + dst=$ROUTER2_GIFIP + fi + setup_recursive_if_gif $SOCK1 gif1 ${addr} ${remote} ${mode} \ + ${src} ${dst} + + if [ ${mode} = "ipv6" ]; then + addr=$ROUTER1_GIFIP6_RECURSIVE2 + remote=$ROUTER2_GIFIP6_RECURSIVE2 + src=$ROUTER1_GIFIP6_RECURSIVE1 + dst=$ROUTER2_GIFIP6_RECURSIVE1 + else + addr=$ROUTER1_GIFIP_RECURSIVE2 + remote=$ROUTER2_GIFIP_RECURSIVE2 + src=$ROUTER1_GIFIP_RECURSIVE1 + dst=$ROUTER2_GIFIP_RECURSIVE1 + fi + setup_recursive_if_gif $SOCK1 gif2 ${addr} ${remote} ${mode} \ + ${src} ${dst} +} + +# test in router1 only +test_recursive_check() +{ + mode=$1 + + export RUMP_SERVER=$SOCK1 + if [ ${mode} = "ipv6" ]; then + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping6 -n -X $TIMEOUT -c 1 $ROUTER2_GIFIP6_RECURSIVE2 + else + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping -n -w $TIMEOUT -c 1 $ROUTER2_GIFIP_RECURSIVE2 + fi + + atf_check -o match:'gif0: recursively called too many times' \ + -x "$HIJACKING dmesg" + + $HIJACKING dmesg +} + +teardown_recursive_tunnels() +{ + export RUMP_SERVER=$SOCK1 + atf_check -s exit:0 rump.ifconfig gif1 deletetunnel + atf_check -s exit:0 rump.ifconfig gif1 destroy + atf_check -s exit:0 rump.ifconfig gif2 deletetunnel + atf_check -s exit:0 rump.ifconfig gif2 destroy +} + +test_ping_failure() +{ + mode=$1 + + export RUMP_SERVER=$SOCK1 + if [ ${mode} = "ipv6" ]; then + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \ + $ROUTER2_LANIP6 + else + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ + $ROUTER2_LANIP + fi + + export RUMP_SERVER=$SOCK2 + if [ ${mode} = "ipv6" ]; then + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \ + $ROUTER1_LANIP6 + else + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ + $ROUTER2_LANIP + fi +} + +test_ping_success() +{ + mode=$1 + + export RUMP_SERVER=$SOCK1 + rump.ifconfig -v gif0 + if [ ${mode} = "ipv6" ]; then + # XXX + # rump.ping6 rarely fails with the message that + # "failed to get receiving hop limit". + # This is a known issue being analyzed. + atf_check -s exit:0 -o ignore \ + rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \ + $ROUTER2_LANIP6 + else + atf_check -s exit:0 -o ignore \ + rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \ + $ROUTER2_LANIP + fi + rump.ifconfig -v gif0 + + export RUMP_SERVER=$SOCK2 + rump.ifconfig -v gif0 + if [ ${mode} = "ipv6" ]; then + atf_check -s exit:0 -o ignore \ + rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \ + $ROUTER1_LANIP6 + else + atf_check -s exit:0 -o ignore \ + rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER2_LANIP \ + $ROUTER1_LANIP + fi + rump.ifconfig -v gif0 +} + +test_change_tunnel_duplicate() +{ + mode=$1 + + newsrc="" + newdst="" + if [ ${mode} = "ipv6" ]; then + newsrc=$ROUTER1_WANIP6_DUMMY + newdst=$ROUTER2_WANIP6_DUMMY + else + newsrc=$ROUTER1_WANIP_DUMMY + newdst=$ROUTER2_WANIP_DUMMY + fi + export RUMP_SERVER=$SOCK1 + rump.ifconfig -v gif0 + rump.ifconfig -v gif1 + atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \ + rump.ifconfig gif0 tunnel ${newsrc} ${newdst} + rump.ifconfig -v gif0 + rump.ifconfig -v gif1 + + if [ ${mode} = "ipv6" ]; then + newsrc=$ROUTER2_WANIP6_DUMMY + newdst=$ROUTER1_WANIP6_DUMMY + else + newsrc=$ROUTER2_WANIP_DUMMY + newdst=$ROUTER1_WANIP_DUMMY + fi + export RUMP_SERVER=$SOCK2 + rump.ifconfig -v gif0 + rump.ifconfig -v gif1 + atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \ + rump.ifconfig gif0 tunnel ${newsrc} ${newdst} + rump.ifconfig -v gif0 + rump.ifconfig -v gif1 +} + +test_change_tunnel_success() +{ + mode=$1 + + newsrc="" + newdst="" + if [ ${mode} = "ipv6" ]; then + newsrc=$ROUTER1_WANIP6_DUMMY + newdst=$ROUTER2_WANIP6_DUMMY + else + newsrc=$ROUTER1_WANIP_DUMMY + newdst=$ROUTER2_WANIP_DUMMY + fi + export RUMP_SERVER=$SOCK1 + rump.ifconfig -v gif0 + atf_check -s exit:0 \ + rump.ifconfig gif0 tunnel ${newsrc} ${newdst} + rump.ifconfig -v gif0 + + if [ ${mode} = "ipv6" ]; then + newsrc=$ROUTER2_WANIP6_DUMMY + newdst=$ROUTER1_WANIP6_DUMMY + else + newsrc=$ROUTER2_WANIP_DUMMY + newdst=$ROUTER1_WANIP_DUMMY + fi + export RUMP_SERVER=$SOCK2 + rump.ifconfig -v gif0 + atf_check -s exit:0 \ + rump.ifconfig gif0 tunnel ${newsrc} ${newdst} + rump.ifconfig -v gif0 +} + +basic_setup() +{ + inner=$1 + outer=$2 + + setup ${inner} ${outer} + test_setup ${inner} ${outer} + + # Enable once PR kern/49219 is fixed + #test_ping_failure + + setup_tunnel ${inner} ${outer} + sleep 1 + test_setup_tunnel ${inner} +} + +basic_test() +{ + inner=$1 + outer=$2 # not use + + test_ping_success ${inner} +} + +basic_teardown() +{ + inner=$1 + outer=$2 # not use + + teardown_tunnel + test_ping_failure ${inner} +} + +ioctl_setup() +{ + inner=$1 + outer=$2 + + setup ${inner} ${outer} + test_setup ${inner} ${outer} + + # Enable once PR kern/49219 is fixed + #test_ping_failure + + setup_tunnel ${inner} ${outer} + setup_dummy_tunnel ${inner} ${outer} + sleep 1 + test_setup_tunnel ${inner} +} + +ioctl_test() +{ + inner=$1 + outer=$2 + + test_ping_success ${inner} + + test_change_tunnel_duplicate ${outer} + + teardown_dummy_tunnel + test_change_tunnel_success ${outer} +} + +ioctl_teardown() +{ + inner=$1 + outer=$2 # not use + + teardown_tunnel + test_ping_failure ${inner} +} + +recursive_setup() +{ + inner=$1 + outer=$2 + + setup ${inner} ${outer} + test_setup ${inner} ${outer} + + # Enable once PR kern/49219 is fixed + #test_ping_failure + + setup_tunnel ${inner} ${outer} + setup_recursive_tunnels ${inner} + sleep 1 + test_setup_tunnel ${inner} +} + +recursive_test() +{ + inner=$1 + outer=$2 # not use + + test_recursive_check ${inner} +} + +recursive_teardown() +{ + inner=$1 # not use + outer=$2 # not use + + teardown_recursive_tunnels + teardown_tunnel +} + +add_test() +{ + category=$1 + desc=$2 + inner=$3 + outer=$4 + + name="gif_${category}_${inner}over${outer}" + fulldesc="Does ${inner} over ${outer} if_gif ${desc}" + + atf_test_case ${name} cleanup + eval "${name}_head() { \ + atf_set \"descr\" \"${fulldesc}\"; \ + atf_set \"require.progs\" \"rump_server\"; \ + }; \ + ${name}_body() { \ + ${category}_setup ${inner} ${outer}; \ + ${category}_test ${inner} ${outer}; \ + ${category}_teardown ${inner} ${outer}; \ + rump_server_destroy_ifaces; \ + }; \ + ${name}_cleanup() { \ + $DEBUG && dump; \ + cleanup; \ + }" + atf_add_test_case ${name} +} + +add_test_allproto() +{ + category=$1 + desc=$2 + + add_test ${category} "${desc}" ipv4 ipv4 + add_test ${category} "${desc}" ipv4 ipv6 + add_test ${category} "${desc}" ipv6 ipv4 + add_test ${category} "${desc}" ipv6 ipv6 +} + +atf_init_test_cases() +{ + add_test_allproto basic "basic tests" + add_test_allproto ioctl "ioctl tests" + add_test_allproto recursive "recursive check tests" +} |