Home | History | Annotate | Line # | Download | only in if_gif
      1  1.13     ozaki #	$NetBSD: t_gif.sh,v 1.13 2019/08/19 03:22:05 ozaki-r 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.13     ozaki 	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.13     ozaki 	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.13     ozaki 	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