Home | History | Annotate | Line # | Download | only in if_gif
t_gif.sh revision 1.12.4.1
      1  1.12.4.1    martin #	$NetBSD: t_gif.sh,v 1.12.4.1 2020/04/13 08:05:30 martin Exp $
      2       1.1  knakahar #
      3       1.1  knakahar # Copyright (c) 2015 Internet Initiative Japan Inc.
      4       1.1  knakahar # All rights reserved.
      5       1.1  knakahar #
      6       1.1  knakahar # Redistribution and use in source and binary forms, with or without
      7       1.1  knakahar # modification, are permitted provided that the following conditions
      8       1.1  knakahar # are met:
      9       1.1  knakahar # 1. Redistributions of source code must retain the above copyright
     10       1.1  knakahar #    notice, this list of conditions and the following disclaimer.
     11       1.1  knakahar # 2. Redistributions in binary form must reproduce the above copyright
     12       1.1  knakahar #    notice, this list of conditions and the following disclaimer in the
     13       1.1  knakahar #    documentation and/or other materials provided with the distribution.
     14       1.1  knakahar #
     15       1.1  knakahar # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16       1.1  knakahar # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17       1.1  knakahar # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18       1.1  knakahar # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19       1.1  knakahar # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20       1.1  knakahar # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21       1.1  knakahar # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22       1.1  knakahar # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23       1.1  knakahar # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24       1.1  knakahar # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25       1.1  knakahar # POSSIBILITY OF SUCH DAMAGE.
     26       1.1  knakahar #
     27       1.1  knakahar 
     28       1.1  knakahar SOCK1=unix://commsock1 # for ROUTER1
     29       1.1  knakahar SOCK2=unix://commsock2 # for ROUTER2
     30       1.1  knakahar ROUTER1_LANIP=192.168.1.1
     31       1.1  knakahar ROUTER1_LANNET=192.168.1.0/24
     32       1.1  knakahar ROUTER1_WANIP=10.0.0.1
     33       1.1  knakahar ROUTER1_GIFIP=172.16.1.1
     34       1.3  knakahar ROUTER1_WANIP_DUMMY=10.0.0.11
     35       1.3  knakahar ROUTER1_GIFIP_DUMMY=172.16.11.1
     36       1.3  knakahar ROUTER1_GIFIP_RECURSIVE1=172.16.101.1
     37       1.3  knakahar ROUTER1_GIFIP_RECURSIVE2=172.16.201.1
     38       1.1  knakahar ROUTER2_LANIP=192.168.2.1
     39       1.1  knakahar ROUTER2_LANNET=192.168.2.0/24
     40       1.1  knakahar ROUTER2_WANIP=10.0.0.2
     41       1.1  knakahar ROUTER2_GIFIP=172.16.2.1
     42       1.3  knakahar ROUTER2_WANIP_DUMMY=10.0.0.12
     43       1.3  knakahar ROUTER2_GIFIP_DUMMY=172.16.12.1
     44       1.3  knakahar ROUTER2_GIFIP_RECURSIVE1=172.16.102.1
     45       1.3  knakahar ROUTER2_GIFIP_RECURSIVE2=172.16.202.1
     46       1.1  knakahar 
     47       1.1  knakahar ROUTER1_LANIP6=fc00:1::1
     48       1.1  knakahar ROUTER1_LANNET6=fc00:1::/64
     49       1.1  knakahar ROUTER1_WANIP6=fc00::1
     50       1.1  knakahar ROUTER1_GIFIP6=fc00:3::1
     51       1.3  knakahar ROUTER1_WANIP6_DUMMY=fc00::11
     52       1.3  knakahar ROUTER1_GIFIP6_DUMMY=fc00:13::1
     53       1.3  knakahar ROUTER1_GIFIP6_RECURSIVE1=fc00:103::1
     54       1.3  knakahar ROUTER1_GIFIP6_RECURSIVE2=fc00:203::1
     55       1.1  knakahar ROUTER2_LANIP6=fc00:2::1
     56       1.1  knakahar ROUTER2_LANNET6=fc00:2::/64
     57       1.1  knakahar ROUTER2_WANIP6=fc00::2
     58       1.1  knakahar ROUTER2_GIFIP6=fc00:4::1
     59       1.3  knakahar ROUTER2_WANIP6_DUMMY=fc00::12
     60       1.3  knakahar ROUTER2_GIFIP6_DUMMY=fc00:14::1
     61       1.3  knakahar ROUTER2_GIFIP6_RECURSIVE1=fc00:104::1
     62       1.3  knakahar ROUTER2_GIFIP6_RECURSIVE2=fc00:204::1
     63       1.1  knakahar 
     64      1.10     ozaki DEBUG=${DEBUG:-false}
     65       1.1  knakahar TIMEOUT=5
     66       1.1  knakahar 
     67      1.12     ozaki atf_test_case gif_create_destroy cleanup
     68      1.12     ozaki gif_create_destroy_head()
     69      1.12     ozaki {
     70      1.12     ozaki 
     71      1.12     ozaki 	atf_set "descr" "Test creating/destroying gif interfaces"
     72      1.12     ozaki 	atf_set "require.progs" "rump_server"
     73      1.12     ozaki }
     74      1.12     ozaki 
     75      1.12     ozaki gif_create_destroy_body()
     76      1.12     ozaki {
     77      1.12     ozaki 
     78      1.12     ozaki 	rump_server_start $SOCK1 netinet6 gif
     79      1.12     ozaki 
     80      1.12     ozaki 	test_create_destroy_common $SOCK1 gif0 true
     81      1.12     ozaki }
     82      1.12     ozaki 
     83      1.12     ozaki gif_create_destroy_cleanup()
     84      1.12     ozaki {
     85      1.12     ozaki 
     86      1.12     ozaki 	$DEBUG && dump
     87      1.12     ozaki 	cleanup
     88      1.12     ozaki }
     89      1.12     ozaki 
     90       1.1  knakahar setup_router()
     91       1.1  knakahar {
     92       1.1  knakahar 	sock=${1}
     93       1.1  knakahar 	lan=${2}
     94       1.1  knakahar 	lan_mode=${3}
     95       1.1  knakahar 	wan=${4}
     96       1.1  knakahar 	wan_mode=${5}
     97       1.1  knakahar 
     98       1.8     ozaki 	rump_server_add_iface $sock shmif0 bus0
     99       1.8     ozaki 	rump_server_add_iface $sock shmif1 bus1
    100       1.8     ozaki 
    101       1.1  knakahar 	export RUMP_SERVER=${sock}
    102       1.1  knakahar 	if [ ${lan_mode} = "ipv6" ]; then
    103       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${lan}
    104       1.1  knakahar 	else
    105       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig shmif0 inet ${lan} netmask 0xffffff00
    106       1.1  knakahar 	fi
    107       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig shmif0 up
    108       1.1  knakahar 	rump.ifconfig shmif0
    109       1.1  knakahar 
    110       1.1  knakahar 	if [ ${wan_mode} = "ipv6" ]; then
    111       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${wan}
    112       1.1  knakahar 	else
    113       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig shmif1 inet ${wan} netmask 0xff000000
    114       1.1  knakahar 	fi
    115       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig shmif1 up
    116       1.1  knakahar 	rump.ifconfig shmif1
    117       1.1  knakahar }
    118       1.1  knakahar 
    119       1.1  knakahar test_router()
    120       1.1  knakahar {
    121       1.1  knakahar 	sock=${1}
    122       1.1  knakahar 	lan=${2}
    123       1.1  knakahar 	lan_mode=${3}
    124       1.1  knakahar 	wan=${4}
    125       1.1  knakahar 	wan_mode=${5}
    126       1.1  knakahar 
    127       1.1  knakahar 	export RUMP_SERVER=${sock}
    128       1.1  knakahar 	atf_check -s exit:0 -o match:shmif0 rump.ifconfig
    129       1.1  knakahar 	if [ ${lan_mode} = "ipv6" ]; then
    130       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${lan}
    131       1.1  knakahar 	else
    132       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${lan}
    133       1.1  knakahar 	fi
    134       1.1  knakahar 
    135       1.1  knakahar 	atf_check -s exit:0 -o match:shmif1 rump.ifconfig
    136       1.1  knakahar 	if [ ${wan_mode} = "ipv6" ]; then
    137       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT ${wan}
    138       1.1  knakahar 	else
    139       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.ping -n -c 1 -w $TIMEOUT ${wan}
    140       1.1  knakahar 	fi
    141       1.1  knakahar }
    142       1.1  knakahar 
    143       1.1  knakahar setup()
    144       1.1  knakahar {
    145       1.1  knakahar 	inner=${1}
    146       1.1  knakahar 	outer=${2}
    147       1.1  knakahar 
    148       1.8     ozaki 	rump_server_start $SOCK1 netinet6 gif
    149       1.8     ozaki 	rump_server_start $SOCK2 netinet6 gif
    150       1.1  knakahar 
    151       1.1  knakahar 	router1_lan=""
    152       1.1  knakahar 	router1_lan_mode=""
    153       1.1  knakahar 	router2_lan=""
    154       1.1  knakahar 	router2_lan_mode=""
    155       1.1  knakahar 	if [ ${inner} = "ipv6" ]; then
    156       1.1  knakahar 		router1_lan=$ROUTER1_LANIP6
    157       1.1  knakahar 		router1_lan_mode="ipv6"
    158       1.1  knakahar 		router2_lan=$ROUTER2_LANIP6
    159       1.1  knakahar 		router2_lan_mode="ipv6"
    160       1.1  knakahar 	else
    161       1.1  knakahar 		router1_lan=$ROUTER1_LANIP
    162       1.1  knakahar 		router1_lan_mode="ipv4"
    163       1.1  knakahar 		router2_lan=$ROUTER2_LANIP
    164       1.1  knakahar 		router2_lan_mode="ipv4"
    165       1.1  knakahar 	fi
    166       1.1  knakahar 
    167       1.1  knakahar 	if [ ${outer} = "ipv6" ]; then
    168       1.1  knakahar 		setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \
    169       1.1  knakahar 			$ROUTER1_WANIP6 ipv6
    170       1.1  knakahar 		setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \
    171       1.1  knakahar 			$ROUTER2_WANIP6 ipv6
    172       1.1  knakahar 	else
    173       1.1  knakahar 		setup_router $SOCK1 ${router1_lan} ${router1_lan_mode} \
    174       1.1  knakahar 			$ROUTER1_WANIP ipv4
    175       1.1  knakahar 		setup_router $SOCK2 ${router2_lan} ${router2_lan_mode} \
    176       1.1  knakahar 			$ROUTER2_WANIP ipv4
    177       1.1  knakahar 	fi
    178       1.1  knakahar }
    179       1.1  knakahar 
    180       1.1  knakahar test_setup()
    181       1.1  knakahar {
    182       1.1  knakahar 	inner=${1}
    183       1.1  knakahar 	outer=${2}
    184       1.1  knakahar 
    185       1.1  knakahar 	router1_lan=""
    186       1.1  knakahar 	router1_lan_mode=""
    187       1.1  knakahar 	router2_lan=""
    188       1.1  knakahar 	router2_lan_mode=""
    189       1.1  knakahar 	if [ ${inner} = "ipv6" ]; then
    190       1.1  knakahar 		router1_lan=$ROUTER1_LANIP6
    191       1.1  knakahar 		router1_lan_mode="ipv6"
    192       1.1  knakahar 		router2_lan=$ROUTER2_LANIP6
    193       1.1  knakahar 		router2_lan_mode="ipv6"
    194       1.1  knakahar 	else
    195       1.1  knakahar 		router1_lan=$ROUTER1_LANIP
    196       1.1  knakahar 		router1_lan_mode="ipv4"
    197       1.1  knakahar 		router2_lan=$ROUTER2_LANIP
    198       1.1  knakahar 		router2_lan_mode="ipv4"
    199       1.1  knakahar 	fi
    200       1.1  knakahar 	if [ ${outer} = "ipv6" ]; then
    201       1.1  knakahar 		test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \
    202       1.1  knakahar 			$ROUTER1_WANIP6 ipv6
    203       1.1  knakahar 		test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \
    204       1.1  knakahar 			$ROUTER2_WANIP6 ipv6
    205       1.1  knakahar 	else
    206       1.1  knakahar 		test_router $SOCK1 ${router1_lan} ${router1_lan_mode} \
    207       1.1  knakahar 			$ROUTER1_WANIP ipv4
    208       1.1  knakahar 		test_router $SOCK2 ${router2_lan} ${router2_lan_mode} \
    209       1.1  knakahar 			$ROUTER2_WANIP ipv4
    210       1.1  knakahar 	fi
    211       1.1  knakahar }
    212       1.1  knakahar 
    213       1.1  knakahar setup_if_gif()
    214       1.1  knakahar {
    215       1.1  knakahar 	sock=${1}
    216       1.1  knakahar 	addr=${2}
    217       1.1  knakahar 	remote=${3}
    218       1.1  knakahar 	inner=${4}
    219       1.1  knakahar 	src=${5}
    220       1.1  knakahar 	dst=${6}
    221       1.1  knakahar 	peernet=${7}
    222       1.1  knakahar 
    223       1.1  knakahar 	export RUMP_SERVER=${sock}
    224  1.12.4.1    martin 	rump_server_add_iface $sock gif0
    225       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig gif0 tunnel ${src} ${dst}
    226       1.1  knakahar 	if [ ${inner} = "ipv6" ]; then
    227       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig gif0 inet6 ${addr}/128 ${remote}
    228       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.route add -inet6 ${peernet} ${addr}
    229       1.1  knakahar 	else
    230       1.1  knakahar 		atf_check -s exit:0 rump.ifconfig gif0 inet ${addr}/32 ${remote}
    231       1.1  knakahar 		atf_check -s exit:0 -o ignore rump.route add -inet ${peernet} ${addr}
    232       1.1  knakahar 	fi
    233       1.1  knakahar 
    234       1.1  knakahar 	rump.ifconfig gif0
    235       1.1  knakahar 	rump.route -nL show
    236       1.1  knakahar }
    237       1.1  knakahar 
    238       1.1  knakahar setup_tunnel()
    239       1.1  knakahar {
    240       1.1  knakahar 	inner=${1}
    241       1.1  knakahar 	outer=${2}
    242       1.1  knakahar 
    243       1.1  knakahar 	addr=""
    244       1.1  knakahar 	remote=""
    245       1.1  knakahar 	src=""
    246       1.1  knakahar 	dst=""
    247       1.1  knakahar 	peernet=""
    248       1.1  knakahar 
    249       1.1  knakahar 	if [ ${inner} = "ipv6" ]; then
    250       1.1  knakahar 		addr=$ROUTER1_GIFIP6
    251       1.1  knakahar 		remote=$ROUTER2_GIFIP6
    252       1.1  knakahar 		peernet=$ROUTER2_LANNET6
    253       1.1  knakahar 	else
    254       1.1  knakahar 		addr=$ROUTER1_GIFIP
    255       1.1  knakahar 		remote=$ROUTER2_GIFIP
    256       1.1  knakahar 		peernet=$ROUTER2_LANNET
    257       1.1  knakahar 	fi
    258       1.1  knakahar 	if [ ${outer} = "ipv6" ]; then
    259       1.1  knakahar 		src=$ROUTER1_WANIP6
    260       1.1  knakahar 		dst=$ROUTER2_WANIP6
    261       1.1  knakahar 	else
    262       1.1  knakahar 		src=$ROUTER1_WANIP
    263       1.1  knakahar 		dst=$ROUTER2_WANIP
    264       1.1  knakahar 	fi
    265       1.1  knakahar 	setup_if_gif $SOCK1 ${addr} ${remote} ${inner} \
    266       1.1  knakahar 		     ${src} ${dst} ${peernet}
    267       1.1  knakahar 
    268       1.1  knakahar 	if [ $inner = "ipv6" ]; then
    269       1.1  knakahar 		addr=$ROUTER2_GIFIP6
    270       1.1  knakahar 		remote=$ROUTER1_GIFIP6
    271       1.1  knakahar 		peernet=$ROUTER1_LANNET6
    272       1.1  knakahar 	else
    273       1.1  knakahar 		addr=$ROUTER2_GIFIP
    274       1.1  knakahar 		remote=$ROUTER1_GIFIP
    275       1.1  knakahar 		peernet=$ROUTER1_LANNET
    276       1.1  knakahar 	fi
    277       1.1  knakahar 	if [ $outer = "ipv6" ]; then
    278       1.1  knakahar 		src=$ROUTER2_WANIP6
    279       1.1  knakahar 		dst=$ROUTER1_WANIP6
    280       1.1  knakahar 	else
    281       1.1  knakahar 		src=$ROUTER2_WANIP
    282       1.1  knakahar 		dst=$ROUTER1_WANIP
    283       1.1  knakahar 	fi
    284       1.1  knakahar 	setup_if_gif $SOCK2 ${addr} ${remote} ${inner} \
    285       1.1  knakahar 		     ${src} ${dst} ${peernet}
    286       1.1  knakahar }
    287       1.1  knakahar 
    288       1.1  knakahar test_setup_tunnel()
    289       1.1  knakahar {
    290       1.1  knakahar 	mode=${1}
    291       1.1  knakahar 
    292       1.1  knakahar 	peernet=""
    293       1.1  knakahar 	opt=""
    294       1.2  knakahar 	if [ ${mode} = "ipv6" ]; then
    295       1.1  knakahar 		peernet=$ROUTER2_LANNET6
    296       1.1  knakahar 		opt="-inet6"
    297       1.1  knakahar 	else
    298       1.1  knakahar 		peernet=$ROUTER2_LANNET
    299       1.1  knakahar 		opt="-inet"
    300       1.1  knakahar 	fi
    301       1.1  knakahar 	export RUMP_SERVER=$SOCK1
    302       1.1  knakahar 	atf_check -s exit:0 -o match:gif0 rump.ifconfig
    303       1.1  knakahar 	atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet}
    304       1.1  knakahar 
    305       1.2  knakahar 	if [ ${mode} = "ipv6" ]; then
    306       1.1  knakahar 		peernet=$ROUTER1_LANNET6
    307       1.1  knakahar 		opt="-inet6"
    308       1.1  knakahar 	else
    309       1.1  knakahar 		peernet=$ROUTER1_LANNET
    310       1.1  knakahar 		opt="-inet"
    311       1.1  knakahar 	fi
    312       1.1  knakahar 	export RUMP_SERVER=$SOCK2
    313       1.1  knakahar 	atf_check -s exit:0 -o match:gif0 rump.ifconfig
    314       1.1  knakahar 	atf_check -s exit:0 -o match:gif0 rump.route -nL get ${opt} ${peernet}
    315       1.1  knakahar }
    316       1.1  knakahar 
    317       1.1  knakahar teardown_tunnel()
    318       1.1  knakahar {
    319       1.1  knakahar 	export RUMP_SERVER=$SOCK1
    320       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig gif0 deletetunnel
    321       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig gif0 destroy
    322       1.1  knakahar 
    323       1.1  knakahar 	export RUMP_SERVER=$SOCK2
    324       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig gif0 deletetunnel
    325       1.1  knakahar 	atf_check -s exit:0 rump.ifconfig gif0 destroy
    326       1.1  knakahar }
    327       1.1  knakahar 
    328       1.3  knakahar setup_dummy_if_gif()
    329       1.3  knakahar {
    330       1.3  knakahar 	sock=${1}
    331       1.3  knakahar 	addr=${2}
    332       1.3  knakahar 	remote=${3}
    333       1.3  knakahar 	inner=${4}
    334       1.3  knakahar 	src=${5}
    335       1.3  knakahar 	dst=${6}
    336       1.3  knakahar 
    337       1.3  knakahar 	export RUMP_SERVER=${sock}
    338  1.12.4.1    martin 	rump_server_add_iface $sock gif1
    339       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 tunnel ${src} ${dst}
    340       1.3  knakahar 	if [ ${inner} = "ipv6" ]; then
    341       1.3  knakahar 		atf_check -s exit:0 rump.ifconfig gif1 inet6 ${addr}/128 ${remote}
    342       1.3  knakahar 	else
    343       1.3  knakahar 		atf_check -s exit:0 rump.ifconfig gif1 inet ${addr}/32 ${remote}
    344       1.3  knakahar 	fi
    345       1.3  knakahar 
    346       1.3  knakahar 	rump.ifconfig gif1
    347       1.3  knakahar }
    348       1.3  knakahar 
    349       1.3  knakahar setup_dummy_tunnel()
    350       1.3  knakahar {
    351       1.3  knakahar 	inner=${1}
    352       1.3  knakahar 	outer=${2}
    353       1.3  knakahar 
    354       1.3  knakahar 	addr=""
    355       1.3  knakahar 	remote=""
    356       1.3  knakahar 	src=""
    357       1.3  knakahar 	dst=""
    358       1.3  knakahar 
    359       1.3  knakahar 	if [ ${inner} = "ipv6" ]; then
    360       1.3  knakahar 		addr=$ROUTER1_GIFIP6_DUMMY
    361       1.3  knakahar 		remote=$ROUTER2_GIFIP6_DUMMY
    362       1.3  knakahar 	else
    363       1.3  knakahar 		addr=$ROUTER1_GIFIP_DUMMY
    364       1.3  knakahar 		remote=$ROUTER2_GIFIP_DUMMY
    365       1.3  knakahar 	fi
    366       1.3  knakahar 	if [ ${outer} = "ipv6" ]; then
    367       1.3  knakahar 		src=$ROUTER1_WANIP6_DUMMY
    368       1.3  knakahar 		dst=$ROUTER2_WANIP6_DUMMY
    369       1.3  knakahar 	else
    370       1.3  knakahar 		src=$ROUTER1_WANIP_DUMMY
    371       1.3  knakahar 		dst=$ROUTER2_WANIP_DUMMY
    372       1.3  knakahar 	fi
    373       1.3  knakahar 	setup_dummy_if_gif $SOCK1 ${addr} ${remote} ${inner} \
    374       1.3  knakahar 			   ${src} ${dst}
    375       1.3  knakahar 
    376       1.3  knakahar 	if [ $inner = "ipv6" ]; then
    377       1.3  knakahar 		addr=$ROUTER2_GIFIP6_DUMMY
    378       1.3  knakahar 		remote=$ROUTER1_GIFIP6_DUMMY
    379       1.3  knakahar 	else
    380       1.3  knakahar 		addr=$ROUTER2_GIFIP_DUMMY
    381       1.3  knakahar 		remote=$ROUTER1_GIFIP_DUMMY
    382       1.3  knakahar 	fi
    383       1.3  knakahar 	if [ $outer = "ipv6" ]; then
    384       1.3  knakahar 		src=$ROUTER2_WANIP6_DUMMY
    385       1.3  knakahar 		dst=$ROUTER1_WANIP6_DUMMY
    386       1.3  knakahar 	else
    387       1.3  knakahar 		src=$ROUTER2_WANIP_DUMMY
    388       1.3  knakahar 		dst=$ROUTER1_WANIP_DUMMY
    389       1.3  knakahar 	fi
    390       1.3  knakahar 	setup_dummy_if_gif $SOCK2 ${addr} ${remote} ${inner} \
    391       1.3  knakahar 			   ${src} ${dst}
    392       1.3  knakahar }
    393       1.3  knakahar 
    394       1.3  knakahar test_setup_dummy_tunnel()
    395       1.3  knakahar {
    396       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    397       1.3  knakahar 	atf_check -s exit:0 -o match:gif1 rump.ifconfig
    398       1.3  knakahar 
    399       1.3  knakahar 	export RUMP_SERVER=$SOCK2
    400       1.3  knakahar 	atf_check -s exit:0 -o match:gif1 rump.ifconfig
    401       1.3  knakahar }
    402       1.3  knakahar 
    403       1.3  knakahar teardown_dummy_tunnel()
    404       1.3  knakahar {
    405       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    406       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 deletetunnel
    407       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 destroy
    408       1.3  knakahar 
    409       1.3  knakahar 	export RUMP_SERVER=$SOCK2
    410       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 deletetunnel
    411       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 destroy
    412       1.3  knakahar }
    413       1.3  knakahar 
    414       1.3  knakahar setup_recursive_if_gif()
    415       1.3  knakahar {
    416       1.3  knakahar 	sock=${1}
    417       1.3  knakahar 	gif=${2}
    418       1.3  knakahar 	addr=${3}
    419       1.3  knakahar 	remote=${4}
    420       1.3  knakahar 	inner=${5}
    421       1.3  knakahar 	src=${6}
    422       1.3  knakahar 	dst=${7}
    423       1.3  knakahar 
    424       1.3  knakahar 	export RUMP_SERVER=${sock}
    425  1.12.4.1    martin 	rump_server_add_iface $sock $gif
    426       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig ${gif} tunnel ${src} ${dst}
    427       1.3  knakahar 	if [ ${inner} = "ipv6" ]; then
    428       1.3  knakahar 		atf_check -s exit:0 rump.ifconfig ${gif} inet6 ${addr}/128 ${remote}
    429       1.3  knakahar 	else
    430       1.3  knakahar 		atf_check -s exit:0 rump.ifconfig ${gif} inet ${addr}/32 ${remote}
    431       1.3  knakahar 	fi
    432       1.3  knakahar 
    433       1.3  knakahar 	rump.ifconfig ${gif}
    434       1.3  knakahar }
    435       1.3  knakahar 
    436       1.3  knakahar # test in ROUTER1 only
    437       1.3  knakahar setup_recursive_tunnels()
    438       1.3  knakahar {
    439       1.3  knakahar 	mode=${1}
    440       1.3  knakahar 
    441       1.3  knakahar 	addr=""
    442       1.3  knakahar 	remote=""
    443       1.3  knakahar 	src=""
    444       1.3  knakahar 	dst=""
    445       1.3  knakahar 
    446       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    447       1.3  knakahar 		addr=$ROUTER1_GIFIP6_RECURSIVE1
    448       1.3  knakahar 		remote=$ROUTER2_GIFIP6_RECURSIVE1
    449       1.3  knakahar 		src=$ROUTER1_GIFIP6
    450       1.3  knakahar 		dst=$ROUTER2_GIFIP6
    451       1.3  knakahar 	else
    452       1.3  knakahar 		addr=$ROUTER1_GIFIP_RECURSIVE1
    453       1.3  knakahar 		remote=$ROUTER2_GIFIP_RECURSIVE1
    454       1.3  knakahar 		src=$ROUTER1_GIFIP
    455       1.3  knakahar 		dst=$ROUTER2_GIFIP
    456       1.3  knakahar 	fi
    457       1.3  knakahar 	setup_recursive_if_gif $SOCK1 gif1 ${addr} ${remote} ${mode} \
    458       1.3  knakahar 		      ${src} ${dst}
    459       1.3  knakahar 
    460       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    461       1.3  knakahar 		addr=$ROUTER1_GIFIP6_RECURSIVE2
    462       1.3  knakahar 		remote=$ROUTER2_GIFIP6_RECURSIVE2
    463       1.3  knakahar 		src=$ROUTER1_GIFIP6_RECURSIVE1
    464       1.3  knakahar 		dst=$ROUTER2_GIFIP6_RECURSIVE1
    465       1.3  knakahar 	else
    466       1.3  knakahar 		addr=$ROUTER1_GIFIP_RECURSIVE2
    467       1.3  knakahar 		remote=$ROUTER2_GIFIP_RECURSIVE2
    468       1.3  knakahar 		src=$ROUTER1_GIFIP_RECURSIVE1
    469       1.3  knakahar 		dst=$ROUTER2_GIFIP_RECURSIVE1
    470       1.3  knakahar 	fi
    471       1.3  knakahar 	setup_recursive_if_gif $SOCK1 gif2 ${addr} ${remote} ${mode} \
    472       1.3  knakahar 		      ${src} ${dst}
    473       1.3  knakahar }
    474       1.3  knakahar 
    475       1.3  knakahar # test in router1 only
    476       1.3  knakahar test_recursive_check()
    477       1.3  knakahar {
    478       1.3  knakahar 	mode=$1
    479       1.3  knakahar 
    480       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    481       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    482       1.3  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    483       1.3  knakahar 			rump.ping6 -n -X $TIMEOUT -c 1 $ROUTER2_GIFIP6_RECURSIVE2
    484       1.3  knakahar 	else
    485       1.3  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    486       1.3  knakahar 			rump.ping -n -w $TIMEOUT -c 1 $ROUTER2_GIFIP_RECURSIVE2
    487       1.3  knakahar 	fi
    488       1.3  knakahar 
    489       1.3  knakahar 	atf_check -o match:'gif0: recursively called too many times' \
    490       1.3  knakahar 		-x "$HIJACKING dmesg"
    491       1.3  knakahar 
    492       1.3  knakahar 	$HIJACKING dmesg
    493       1.3  knakahar }
    494       1.3  knakahar 
    495       1.3  knakahar teardown_recursive_tunnels()
    496       1.3  knakahar {
    497       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    498       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 deletetunnel
    499       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif1 destroy
    500       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif2 deletetunnel
    501       1.3  knakahar 	atf_check -s exit:0 rump.ifconfig gif2 destroy
    502       1.3  knakahar }
    503       1.3  knakahar 
    504       1.1  knakahar test_ping_failure()
    505       1.1  knakahar {
    506       1.1  knakahar 	mode=$1
    507       1.1  knakahar 
    508       1.1  knakahar 	export RUMP_SERVER=$SOCK1
    509       1.1  knakahar 	if [ ${mode} = "ipv6" ]; then
    510       1.1  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    511       1.1  knakahar 			rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \
    512       1.1  knakahar 			$ROUTER2_LANIP6
    513       1.1  knakahar 	else
    514       1.1  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    515       1.1  knakahar 			rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \
    516       1.1  knakahar 			$ROUTER2_LANIP
    517       1.1  knakahar 	fi
    518       1.1  knakahar 
    519       1.1  knakahar 	export RUMP_SERVER=$SOCK2
    520       1.1  knakahar 	if [ ${mode} = "ipv6" ]; then
    521       1.1  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    522       1.1  knakahar 			rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \
    523       1.1  knakahar 			$ROUTER1_LANIP6
    524       1.1  knakahar 	else
    525       1.1  knakahar 		atf_check -s not-exit:0 -o ignore -e ignore \
    526       1.1  knakahar 			rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \
    527       1.1  knakahar 			$ROUTER2_LANIP
    528       1.1  knakahar 	fi
    529       1.1  knakahar }
    530       1.1  knakahar 
    531       1.1  knakahar test_ping_success()
    532       1.1  knakahar {
    533       1.1  knakahar 	mode=$1
    534       1.1  knakahar 
    535       1.1  knakahar 	export RUMP_SERVER=$SOCK1
    536       1.1  knakahar 	rump.ifconfig -v gif0
    537       1.1  knakahar 	if [ ${mode} = "ipv6" ]; then
    538       1.1  knakahar 		# XXX
    539       1.1  knakahar 		# rump.ping6 rarely fails with the message that
    540       1.1  knakahar 		# "failed to get receiving hop limit".
    541       1.1  knakahar 		# This is a known issue being analyzed.
    542       1.1  knakahar 		atf_check -s exit:0 -o ignore \
    543       1.1  knakahar 			rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER1_LANIP6 \
    544       1.1  knakahar 			$ROUTER2_LANIP6
    545       1.1  knakahar 	else
    546       1.1  knakahar 		atf_check -s exit:0 -o ignore \
    547       1.1  knakahar 			rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER1_LANIP \
    548       1.1  knakahar 			$ROUTER2_LANIP
    549       1.1  knakahar 	fi
    550       1.1  knakahar 	rump.ifconfig -v gif0
    551       1.1  knakahar 
    552       1.1  knakahar 	export RUMP_SERVER=$SOCK2
    553       1.1  knakahar 	rump.ifconfig -v gif0
    554       1.1  knakahar 	if [ ${mode} = "ipv6" ]; then
    555       1.1  knakahar 		atf_check -s exit:0 -o ignore \
    556       1.1  knakahar 			rump.ping6 -n -X $TIMEOUT -c 1 -S $ROUTER2_LANIP6 \
    557       1.1  knakahar 			$ROUTER1_LANIP6
    558       1.1  knakahar 	else
    559       1.1  knakahar 		atf_check -s exit:0 -o ignore \
    560       1.1  knakahar 			rump.ping -n -w $TIMEOUT -c 1 -I $ROUTER2_LANIP \
    561       1.1  knakahar 			$ROUTER1_LANIP
    562       1.1  knakahar 	fi
    563       1.1  knakahar 	rump.ifconfig -v gif0
    564       1.1  knakahar }
    565       1.1  knakahar 
    566       1.3  knakahar test_change_tunnel_duplicate()
    567       1.3  knakahar {
    568       1.3  knakahar 	mode=$1
    569       1.3  knakahar 
    570       1.3  knakahar 	newsrc=""
    571       1.3  knakahar 	newdst=""
    572       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    573       1.3  knakahar 		newsrc=$ROUTER1_WANIP6_DUMMY
    574       1.3  knakahar 		newdst=$ROUTER2_WANIP6_DUMMY
    575       1.3  knakahar 	else
    576       1.3  knakahar 		newsrc=$ROUTER1_WANIP_DUMMY
    577       1.3  knakahar 		newdst=$ROUTER2_WANIP_DUMMY
    578       1.3  knakahar 	fi
    579       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    580       1.3  knakahar 	rump.ifconfig -v gif0
    581       1.3  knakahar 	rump.ifconfig -v gif1
    582       1.3  knakahar 	atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \
    583       1.3  knakahar 		rump.ifconfig gif0 tunnel ${newsrc} ${newdst}
    584       1.3  knakahar 	rump.ifconfig -v gif0
    585       1.3  knakahar 	rump.ifconfig -v gif1
    586       1.3  knakahar 
    587       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    588       1.3  knakahar 		newsrc=$ROUTER2_WANIP6_DUMMY
    589       1.3  knakahar 		newdst=$ROUTER1_WANIP6_DUMMY
    590       1.3  knakahar 	else
    591       1.3  knakahar 		newsrc=$ROUTER2_WANIP_DUMMY
    592       1.3  knakahar 		newdst=$ROUTER1_WANIP_DUMMY
    593       1.3  knakahar 	fi
    594       1.3  knakahar 	export RUMP_SERVER=$SOCK2
    595       1.3  knakahar 	rump.ifconfig -v gif0
    596       1.3  knakahar 	rump.ifconfig -v gif1
    597       1.3  knakahar 	atf_check -s exit:0 -e match:SIOCSLIFPHYADDR \
    598       1.3  knakahar 		rump.ifconfig gif0 tunnel ${newsrc} ${newdst}
    599       1.3  knakahar 	rump.ifconfig -v gif0
    600       1.3  knakahar 	rump.ifconfig -v gif1
    601       1.3  knakahar }
    602       1.3  knakahar 
    603       1.3  knakahar test_change_tunnel_success()
    604       1.3  knakahar {
    605       1.3  knakahar 	mode=$1
    606       1.3  knakahar 
    607       1.3  knakahar 	newsrc=""
    608       1.3  knakahar 	newdst=""
    609       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    610       1.3  knakahar 		newsrc=$ROUTER1_WANIP6_DUMMY
    611       1.3  knakahar 		newdst=$ROUTER2_WANIP6_DUMMY
    612       1.3  knakahar 	else
    613       1.3  knakahar 		newsrc=$ROUTER1_WANIP_DUMMY
    614       1.3  knakahar 		newdst=$ROUTER2_WANIP_DUMMY
    615       1.3  knakahar 	fi
    616       1.3  knakahar 	export RUMP_SERVER=$SOCK1
    617       1.3  knakahar 	rump.ifconfig -v gif0
    618       1.3  knakahar 	atf_check -s exit:0 \
    619       1.3  knakahar 		rump.ifconfig gif0 tunnel ${newsrc} ${newdst}
    620       1.3  knakahar 	rump.ifconfig -v gif0
    621       1.3  knakahar 
    622       1.3  knakahar 	if [ ${mode} = "ipv6" ]; then
    623       1.3  knakahar 		newsrc=$ROUTER2_WANIP6_DUMMY
    624       1.3  knakahar 		newdst=$ROUTER1_WANIP6_DUMMY
    625       1.3  knakahar 	else
    626       1.3  knakahar 		newsrc=$ROUTER2_WANIP_DUMMY
    627       1.3  knakahar 		newdst=$ROUTER1_WANIP_DUMMY
    628       1.3  knakahar 	fi
    629       1.3  knakahar 	export RUMP_SERVER=$SOCK2
    630       1.3  knakahar 	rump.ifconfig -v gif0
    631       1.3  knakahar 	atf_check -s exit:0 \
    632       1.3  knakahar 		rump.ifconfig gif0 tunnel ${newsrc} ${newdst}
    633       1.3  knakahar 	rump.ifconfig -v gif0
    634       1.3  knakahar }
    635       1.3  knakahar 
    636       1.4  knakahar basic_setup()
    637       1.1  knakahar {
    638       1.4  knakahar 	inner=$1
    639       1.4  knakahar 	outer=$2
    640       1.1  knakahar 
    641       1.4  knakahar 	setup ${inner} ${outer}
    642       1.4  knakahar 	test_setup ${inner} ${outer}
    643       1.1  knakahar 
    644       1.1  knakahar 	# Enable once PR kern/49219 is fixed
    645       1.1  knakahar 	#test_ping_failure
    646       1.1  knakahar 
    647       1.4  knakahar 	setup_tunnel ${inner} ${outer}
    648       1.1  knakahar 	sleep 1
    649       1.4  knakahar 	test_setup_tunnel ${inner}
    650       1.1  knakahar }
    651       1.1  knakahar 
    652       1.4  knakahar basic_test()
    653       1.1  knakahar {
    654       1.4  knakahar 	inner=$1
    655       1.4  knakahar 	outer=$2 # not use
    656       1.1  knakahar 
    657       1.4  knakahar 	test_ping_success ${inner}
    658       1.1  knakahar }
    659       1.1  knakahar 
    660       1.4  knakahar basic_teardown()
    661       1.1  knakahar {
    662       1.4  knakahar 	inner=$1
    663       1.4  knakahar 	outer=$2 # not use
    664       1.1  knakahar 
    665       1.1  knakahar 	teardown_tunnel
    666       1.4  knakahar 	test_ping_failure ${inner}
    667       1.1  knakahar }
    668       1.1  knakahar 
    669       1.4  knakahar ioctl_setup()
    670       1.1  knakahar {
    671       1.4  knakahar 	inner=$1
    672       1.4  knakahar 	outer=$2
    673       1.3  knakahar 
    674       1.4  knakahar 	setup ${inner} ${outer}
    675       1.4  knakahar 	test_setup ${inner} ${outer}
    676       1.3  knakahar 
    677       1.3  knakahar 	# Enable once PR kern/49219 is fixed
    678       1.3  knakahar 	#test_ping_failure
    679       1.3  knakahar 
    680       1.4  knakahar 	setup_tunnel ${inner} ${outer}
    681       1.4  knakahar 	setup_dummy_tunnel ${inner} ${outer}
    682       1.3  knakahar 	sleep 1
    683       1.4  knakahar 	test_setup_tunnel ${inner}
    684       1.3  knakahar }
    685       1.3  knakahar 
    686       1.4  knakahar ioctl_test()
    687       1.3  knakahar {
    688       1.4  knakahar 	inner=$1
    689       1.4  knakahar 	outer=$2
    690       1.3  knakahar 
    691       1.4  knakahar 	test_ping_success ${inner}
    692       1.3  knakahar 
    693       1.4  knakahar 	test_change_tunnel_duplicate ${outer}
    694       1.3  knakahar 
    695       1.3  knakahar 	teardown_dummy_tunnel
    696       1.4  knakahar 	test_change_tunnel_success ${outer}
    697       1.3  knakahar }
    698       1.3  knakahar 
    699       1.4  knakahar ioctl_teardown()
    700       1.3  knakahar {
    701       1.4  knakahar 	inner=$1
    702       1.4  knakahar 	outer=$2 # not use
    703       1.3  knakahar 
    704       1.3  knakahar 	teardown_tunnel
    705       1.4  knakahar 	test_ping_failure ${inner}
    706       1.3  knakahar }
    707       1.3  knakahar 
    708       1.4  knakahar recursive_setup()
    709       1.3  knakahar {
    710       1.4  knakahar 	inner=$1
    711       1.4  knakahar 	outer=$2
    712       1.3  knakahar 
    713       1.4  knakahar 	setup ${inner} ${outer}
    714       1.4  knakahar 	test_setup ${inner} ${outer}
    715       1.3  knakahar 
    716       1.3  knakahar 	# Enable once PR kern/49219 is fixed
    717       1.3  knakahar 	#test_ping_failure
    718       1.3  knakahar 
    719       1.4  knakahar 	setup_tunnel ${inner} ${outer}
    720       1.4  knakahar 	setup_recursive_tunnels ${inner}
    721       1.3  knakahar 	sleep 1
    722       1.4  knakahar 	test_setup_tunnel ${inner}
    723       1.3  knakahar }
    724       1.3  knakahar 
    725       1.4  knakahar recursive_test()
    726       1.3  knakahar {
    727       1.4  knakahar 	inner=$1
    728       1.4  knakahar 	outer=$2 # not use
    729       1.3  knakahar 
    730       1.4  knakahar 	test_recursive_check ${inner}
    731       1.3  knakahar }
    732       1.3  knakahar 
    733       1.4  knakahar recursive_teardown()
    734       1.3  knakahar {
    735       1.4  knakahar 	inner=$1 # not use
    736       1.4  knakahar 	outer=$2 # not use
    737       1.3  knakahar 
    738       1.3  knakahar 	teardown_recursive_tunnels
    739       1.3  knakahar 	teardown_tunnel
    740       1.3  knakahar }
    741       1.3  knakahar 
    742       1.4  knakahar add_test()
    743       1.3  knakahar {
    744       1.4  knakahar 	category=$1
    745       1.4  knakahar 	desc=$2
    746       1.4  knakahar 	inner=$3
    747       1.4  knakahar 	outer=$4
    748       1.4  knakahar 
    749       1.6     ozaki 	name="gif_${category}_${inner}over${outer}"
    750       1.4  knakahar 	fulldesc="Does ${inner} over ${outer} if_gif ${desc}"
    751       1.4  knakahar 
    752       1.4  knakahar 	atf_test_case ${name} cleanup
    753      1.11     ozaki 	eval "${name}_head() {
    754      1.11     ozaki 			atf_set descr \"${fulldesc}\"
    755      1.11     ozaki 			atf_set require.progs rump_server
    756      1.11     ozaki 		}
    757      1.11     ozaki 	    ${name}_body() {
    758      1.11     ozaki 			${category}_setup ${inner} ${outer}
    759      1.11     ozaki 			${category}_test ${inner} ${outer}
    760      1.11     ozaki 			${category}_teardown ${inner} ${outer}
    761      1.11     ozaki 			rump_server_destroy_ifaces
    762      1.11     ozaki 	    }
    763      1.11     ozaki 	    ${name}_cleanup() {
    764      1.11     ozaki 			\$DEBUG && dump
    765      1.11     ozaki 			cleanup
    766       1.4  knakahar 		}"
    767       1.4  knakahar 	atf_add_test_case ${name}
    768       1.4  knakahar }
    769       1.4  knakahar 
    770       1.4  knakahar add_test_allproto()
    771       1.4  knakahar {
    772       1.4  knakahar 	category=$1
    773       1.4  knakahar 	desc=$2
    774       1.4  knakahar 
    775       1.4  knakahar 	add_test ${category} "${desc}" ipv4 ipv4
    776       1.4  knakahar 	add_test ${category} "${desc}" ipv4 ipv6
    777       1.4  knakahar 	add_test ${category} "${desc}" ipv6 ipv4
    778       1.4  knakahar 	add_test ${category} "${desc}" ipv6 ipv6
    779       1.3  knakahar }
    780       1.3  knakahar 
    781       1.1  knakahar atf_init_test_cases()
    782       1.1  knakahar {
    783      1.12     ozaki 
    784      1.12     ozaki 	atf_add_test_case gif_create_destroy
    785      1.12     ozaki 
    786       1.4  knakahar 	add_test_allproto basic "basic tests"
    787       1.4  knakahar 	add_test_allproto ioctl "ioctl tests"
    788       1.4  knakahar 	add_test_allproto recursive "recursive check tests"
    789       1.1  knakahar }
    790