764 lines
16 KiB
Bash
Executable File
764 lines
16 KiB
Bash
Executable File
# $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"
|
|
}
|