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