1*cdebaff8SEnji Cooper# $NetBSD: t_route.sh,v 1.10 2016/12/21 02:46:08 ozaki-r Exp $ 2640235e2SEnji Cooper# 3640235e2SEnji Cooper# Copyright (c) 2016 Internet Initiative Japan Inc. 4640235e2SEnji Cooper# All rights reserved. 5640235e2SEnji Cooper# 6640235e2SEnji Cooper# Redistribution and use in source and binary forms, with or without 7640235e2SEnji Cooper# modification, are permitted provided that the following conditions 8640235e2SEnji Cooper# are met: 9640235e2SEnji Cooper# 1. Redistributions of source code must retain the above copyright 10640235e2SEnji Cooper# notice, this list of conditions and the following disclaimer. 11640235e2SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright 12640235e2SEnji Cooper# notice, this list of conditions and the following disclaimer in the 13640235e2SEnji Cooper# documentation and/or other materials provided with the distribution. 14640235e2SEnji Cooper# 15640235e2SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16640235e2SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17640235e2SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18640235e2SEnji Cooper# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19640235e2SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20640235e2SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21640235e2SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22640235e2SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23640235e2SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24640235e2SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25640235e2SEnji Cooper# POSSIBILITY OF SUCH DAMAGE. 26640235e2SEnji Cooper# 27640235e2SEnji Cooper 28640235e2SEnji Cooper# non_subnet_gateway 29640235e2SEnji CooperSOCK_CLIENT=unix://commsock1 30640235e2SEnji CooperSOCK_GW=unix://commsock2 31640235e2SEnji CooperBUS=bus1 32640235e2SEnji Cooper 33640235e2SEnji Cooper# command_get 34640235e2SEnji CooperSOCKSRC=unix://commsock1 35640235e2SEnji CooperSOCKFWD=unix://commsock2 36640235e2SEnji CooperSOCKDST=unix://commsock3 37640235e2SEnji CooperIP4SRC=10.0.1.2 38640235e2SEnji CooperIP4SRCGW=10.0.1.1 39640235e2SEnji CooperIP4DSTGW=10.0.2.1 40640235e2SEnji CooperIP4DST=10.0.2.2 41640235e2SEnji CooperIP4DST_BCAST=10.0.2.255 42640235e2SEnji CooperIP6SRC=fc00:0:0:1::2 43640235e2SEnji CooperIP6SRCGW=fc00:0:0:1::1 44640235e2SEnji CooperIP6DSTGW=fc00:0:0:2::1 45640235e2SEnji CooperIP6DST=fc00:0:0:2::2 46640235e2SEnji CooperBUS_SRCGW=bus1 47640235e2SEnji CooperBUS_DSTGW=bus2 48640235e2SEnji Cooper 49*cdebaff8SEnji CooperDEBUG=${DEBUG:-false} 50640235e2SEnji CooperTIMEOUT=1 51640235e2SEnji CooperPING_OPTS="-n -c 1 -w $TIMEOUT" 52640235e2SEnji Cooper 53640235e2SEnji Cooperatf_test_case route_non_subnet_gateway cleanup 54640235e2SEnji Cooperroute_non_subnet_gateway_head() 55640235e2SEnji Cooper{ 56640235e2SEnji Cooper 57640235e2SEnji Cooper atf_set "descr" "tests of a gateway not on the local subnet" 58640235e2SEnji Cooper atf_set "require.progs" "rump_server" 59640235e2SEnji Cooper} 60640235e2SEnji Cooper 61640235e2SEnji Cooperroute_non_subnet_gateway_body() 62640235e2SEnji Cooper{ 63640235e2SEnji Cooper 64*cdebaff8SEnji Cooper rump_server_start $SOCK_CLIENT 65*cdebaff8SEnji Cooper rump_server_start $SOCK_GW 66640235e2SEnji Cooper 67640235e2SEnji Cooper export RUMP_SERVER=${SOCK_GW} 68*cdebaff8SEnji Cooper rump_server_add_iface $SOCK_GW shmif0 $BUS 69640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1 70640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 up 71640235e2SEnji Cooper 72640235e2SEnji Cooper # The gateway knows the client 73640235e2SEnji Cooper atf_check -s exit:0 -o match:'add net 10.0.0.1: gateway shmif0' \ 74640235e2SEnji Cooper rump.route add -net 10.0.0.1/32 -link -cloning -iface shmif0 75640235e2SEnji Cooper 76640235e2SEnji Cooper $DEBUG && rump.netstat -nr -f inet 77640235e2SEnji Cooper 78640235e2SEnji Cooper export RUMP_SERVER=${SOCK_CLIENT} 79*cdebaff8SEnji Cooper rump_server_add_iface $SOCK_CLIENT shmif0 $BUS 80640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.1/32 81640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 up 82*cdebaff8SEnji Cooper atf_check -s exit:0 rump.ifconfig -w 10 83640235e2SEnji Cooper 84640235e2SEnji Cooper $DEBUG && rump.netstat -nr -f inet 85640235e2SEnji Cooper 86640235e2SEnji Cooper # Don't know a route to the gateway yet 87640235e2SEnji Cooper atf_check -s not-exit:0 -o match:'100.0% packet loss' \ 88640235e2SEnji Cooper -e match:'No route to host' rump.ping $PING_OPTS 192.168.0.1 89640235e2SEnji Cooper 90640235e2SEnji Cooper # Teach a route to the gateway 91640235e2SEnji Cooper atf_check -s exit:0 -o match:'add net 192.168.0.1: gateway shmif0' \ 92640235e2SEnji Cooper rump.route add -net 192.168.0.1/32 -link -cloning -iface shmif0 93640235e2SEnji Cooper atf_check -s exit:0 -o match:'add net default: gateway 192.168.0.1' \ 94640235e2SEnji Cooper rump.route add default -ifa 10.0.0.1 192.168.0.1 95640235e2SEnji Cooper 96640235e2SEnji Cooper $DEBUG && rump.netstat -nr -f inet 97640235e2SEnji Cooper 98640235e2SEnji Cooper # Be reachable to the gateway 99640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.ping $PING_OPTS 192.168.0.1 100640235e2SEnji Cooper 101*cdebaff8SEnji Cooper rump_server_destroy_ifaces 102640235e2SEnji Cooper} 103640235e2SEnji Cooper 104640235e2SEnji Cooperroute_non_subnet_gateway_cleanup() 105640235e2SEnji Cooper{ 106640235e2SEnji Cooper 107*cdebaff8SEnji Cooper $DEBUG && dump 108*cdebaff8SEnji Cooper cleanup 109640235e2SEnji Cooper} 110640235e2SEnji Cooper 111640235e2SEnji Cooperatf_test_case route_command_get cleanup 112640235e2SEnji Cooperatf_test_case route_command_get6 cleanup 113640235e2SEnji Cooperroute_command_get_head() 114640235e2SEnji Cooper{ 115640235e2SEnji Cooper 116640235e2SEnji Cooper atf_set "descr" "tests of route get command" 117640235e2SEnji Cooper atf_set "require.progs" "rump_server" 118640235e2SEnji Cooper} 119640235e2SEnji Cooper 120640235e2SEnji Cooperroute_command_get6_head() 121640235e2SEnji Cooper{ 122640235e2SEnji Cooper 123640235e2SEnji Cooper atf_set "descr" "tests of route get command (IPv6)" 124640235e2SEnji Cooper atf_set "require.progs" "rump_server" 125640235e2SEnji Cooper} 126640235e2SEnji Cooper 127640235e2SEnji Coopersetup_endpoint() 128640235e2SEnji Cooper{ 129640235e2SEnji Cooper local sock=${1} 130640235e2SEnji Cooper local addr=${2} 131640235e2SEnji Cooper local bus=${3} 132640235e2SEnji Cooper local mode=${4} 133640235e2SEnji Cooper local gw=${5} 134640235e2SEnji Cooper 135640235e2SEnji Cooper export RUMP_SERVER=${sock} 136*cdebaff8SEnji Cooper rump_server_add_iface $sock shmif0 $bus 137640235e2SEnji Cooper if [ $mode = "ipv6" ]; then 138640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${addr} 139640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.route add -inet6 default ${gw} 140640235e2SEnji Cooper else 141640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 inet ${addr} netmask 0xffffff00 142640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.route add default ${gw} 143640235e2SEnji Cooper fi 144640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 up 145*cdebaff8SEnji Cooper atf_check -s exit:0 rump.ifconfig -w 10 146640235e2SEnji Cooper 147640235e2SEnji Cooper if $DEBUG; then 148640235e2SEnji Cooper rump.ifconfig shmif0 149640235e2SEnji Cooper rump.netstat -nr 150640235e2SEnji Cooper fi 151640235e2SEnji Cooper} 152640235e2SEnji Cooper 153640235e2SEnji Coopersetup_forwarder() 154640235e2SEnji Cooper{ 155640235e2SEnji Cooper mode=${1} 156640235e2SEnji Cooper 157*cdebaff8SEnji Cooper rump_server_add_iface $SOCKFWD shmif0 $BUS_SRCGW 158*cdebaff8SEnji Cooper rump_server_add_iface $SOCKFWD shmif1 $BUS_DSTGW 159*cdebaff8SEnji Cooper 160640235e2SEnji Cooper export RUMP_SERVER=$SOCKFWD 161640235e2SEnji Cooper if [ $mode = "ipv6" ]; then 162640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6SRCGW} 163640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${IP6DSTGW} 164640235e2SEnji Cooper else 165640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 inet ${IP4SRCGW} netmask 0xffffff00 166640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 inet ${IP4DSTGW} netmask 0xffffff00 167640235e2SEnji Cooper fi 168640235e2SEnji Cooper 169640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 up 170640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 up 171*cdebaff8SEnji Cooper atf_check -s exit:0 rump.ifconfig -w 10 172640235e2SEnji Cooper 173640235e2SEnji Cooper if $DEBUG; then 174640235e2SEnji Cooper rump.netstat -nr 175640235e2SEnji Cooper if [ $mode = "ipv6" ]; then 176640235e2SEnji Cooper rump.sysctl net.inet6.ip6.forwarding 177640235e2SEnji Cooper else 178640235e2SEnji Cooper rump.sysctl net.inet.ip.forwarding 179640235e2SEnji Cooper fi 180640235e2SEnji Cooper fi 181640235e2SEnji Cooper} 182640235e2SEnji Cooper 183640235e2SEnji Coopersetup_forwarding() 184640235e2SEnji Cooper{ 185640235e2SEnji Cooper export RUMP_SERVER=$SOCKFWD 186640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.sysctl -w net.inet.ip.forwarding=1 187640235e2SEnji Cooper} 188640235e2SEnji Cooper 189640235e2SEnji Coopersetup_forwarding6() 190640235e2SEnji Cooper{ 191640235e2SEnji Cooper export RUMP_SERVER=$SOCKFWD 192640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.sysctl -w net.inet6.ip6.forwarding=1 193640235e2SEnji Cooper} 194640235e2SEnji Cooper 195640235e2SEnji Coopersetup() 196640235e2SEnji Cooper{ 197640235e2SEnji Cooper 198*cdebaff8SEnji Cooper rump_server_start $SOCKSRC 199*cdebaff8SEnji Cooper rump_server_start $SOCKFWD 200*cdebaff8SEnji Cooper rump_server_start $SOCKDST 201640235e2SEnji Cooper 202640235e2SEnji Cooper setup_endpoint $SOCKSRC $IP4SRC $BUS_SRCGW ipv4 $IP4SRCGW 203640235e2SEnji Cooper setup_endpoint $SOCKDST $IP4DST $BUS_DSTGW ipv4 $IP4DSTGW 204640235e2SEnji Cooper setup_forwarder ipv4 205640235e2SEnji Cooper} 206640235e2SEnji Cooper 207640235e2SEnji Coopersetup6() 208640235e2SEnji Cooper{ 209640235e2SEnji Cooper 210*cdebaff8SEnji Cooper rump_server_start $SOCKSRC netinet6 211*cdebaff8SEnji Cooper rump_server_start $SOCKFWD netinet6 212*cdebaff8SEnji Cooper rump_server_start $SOCKDST netinet6 213640235e2SEnji Cooper 214640235e2SEnji Cooper setup_endpoint $SOCKSRC $IP6SRC $BUS_SRCGW ipv6 $IP6SRCGW 215640235e2SEnji Cooper setup_endpoint $SOCKDST $IP6DST $BUS_DSTGW ipv6 $IP6DSTGW 216640235e2SEnji Cooper setup_forwarder ipv6 217640235e2SEnji Cooper} 218640235e2SEnji Cooper 219640235e2SEnji Coopertest_route_get() 220640235e2SEnji Cooper{ 221640235e2SEnji Cooper 222640235e2SEnji Cooper export RUMP_SERVER=$SOCKSRC 223640235e2SEnji Cooper $DEBUG && rump.netstat -nr -f inet 224640235e2SEnji Cooper $DEBUG && rump.arp -n -a 225640235e2SEnji Cooper 226640235e2SEnji Cooper # Make sure an ARP cache to the gateway doesn't exist 227640235e2SEnji Cooper rump.arp -d $IP4SRCGW 228640235e2SEnji Cooper 229640235e2SEnji Cooper # Local 230640235e2SEnji Cooper cat >./expect <<-EOF 231640235e2SEnji Cooper route to: 10.0.1.2 232640235e2SEnji Cooperdestination: 10.0.1.2 233640235e2SEnji Cooper local addr: 10.0.1.2 234640235e2SEnji Cooper interface: lo0 235640235e2SEnji Cooper flags: <UP,HOST,DONE,LLINFO,LOCAL> 236640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 237640235e2SEnji Cooper EOF 238640235e2SEnji Cooper rump.route -n get $IP4SRC > ./output 239640235e2SEnji Cooper $DEBUG && cat ./expect ./output 240640235e2SEnji Cooper # XXX: omit the last line because expire is unstable on rump kernel. 241640235e2SEnji Cooper sed -i '$d' ./output 242640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 243640235e2SEnji Cooper 244640235e2SEnji Cooper # Neighbor 245640235e2SEnji Cooper cat >./expect <<-EOF 246640235e2SEnji Cooper route to: 10.0.1.1 247640235e2SEnji Cooperdestination: 10.0.1.0 248640235e2SEnji Cooper mask: 255.255.255.0 249640235e2SEnji Cooper local addr: 10.0.1.2 250640235e2SEnji Cooper interface: shmif0 251640235e2SEnji Cooper flags: <UP,DONE,CONNECTED> 252640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 253640235e2SEnji Cooper EOF 254640235e2SEnji Cooper rump.route -n get $IP4SRCGW > ./output 255640235e2SEnji Cooper $DEBUG && cat ./expect ./output 256640235e2SEnji Cooper sed -i '$d' ./output 257640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 258640235e2SEnji Cooper 259640235e2SEnji Cooper # Remote host 260640235e2SEnji Cooper cat >./expect <<-EOF 261640235e2SEnji Cooper route to: 10.0.2.2 262640235e2SEnji Cooperdestination: default 263640235e2SEnji Cooper mask: default 264640235e2SEnji Cooper gateway: 10.0.1.1 265640235e2SEnji Cooper local addr: 10.0.1.2 266640235e2SEnji Cooper interface: shmif0 267640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 268640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 269640235e2SEnji Cooper EOF 270640235e2SEnji Cooper rump.route -n get $IP4DST > ./output 271640235e2SEnji Cooper $DEBUG && cat ./expect ./output 272640235e2SEnji Cooper sed -i '$d' ./output 273640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 274640235e2SEnji Cooper 275640235e2SEnji Cooper # Create a ARP cache 276640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP4SRCGW 277640235e2SEnji Cooper 278640235e2SEnji Cooper # Neighbor with a cache (no different from w/o cache) 279640235e2SEnji Cooper cat >./expect <<-EOF 280640235e2SEnji Cooper route to: 10.0.1.1 281640235e2SEnji Cooperdestination: 10.0.1.0 282640235e2SEnji Cooper mask: 255.255.255.0 283640235e2SEnji Cooper local addr: 10.0.1.2 284640235e2SEnji Cooper interface: shmif0 285640235e2SEnji Cooper flags: <UP,DONE,CONNECTED> 286640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 287640235e2SEnji Cooper EOF 288640235e2SEnji Cooper rump.route -n get $IP4SRCGW > ./output 289640235e2SEnji Cooper $DEBUG && cat ./expect ./output 290640235e2SEnji Cooper sed -i '$d' ./output 291640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 292640235e2SEnji Cooper} 293640235e2SEnji Cooper 294640235e2SEnji Coopertest_route_get6() 295640235e2SEnji Cooper{ 296640235e2SEnji Cooper 297640235e2SEnji Cooper export RUMP_SERVER=$SOCKSRC 298640235e2SEnji Cooper $DEBUG && rump.netstat -nr -f inet 299640235e2SEnji Cooper $DEBUG && rump.ndp -n -a 300640235e2SEnji Cooper 301640235e2SEnji Cooper # Make sure an ARP cache to the gateway doesn't exist 302640235e2SEnji Cooper rump.ndp -d $IP6SRCGW 303640235e2SEnji Cooper 304640235e2SEnji Cooper # Local 305640235e2SEnji Cooper cat >./expect <<-EOF 306640235e2SEnji Cooper route to: fc00:0:0:1::2 307640235e2SEnji Cooperdestination: fc00:0:0:1::2 308640235e2SEnji Cooper local addr: fc00:0:0:1::2 309640235e2SEnji Cooper interface: lo0 310640235e2SEnji Cooper flags: <UP,HOST,DONE,LLINFO,LOCAL> 311640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 312640235e2SEnji Cooper EOF 313640235e2SEnji Cooper rump.route -n get -inet6 $IP6SRC > ./output 314640235e2SEnji Cooper $DEBUG && cat ./expect ./output 315640235e2SEnji Cooper sed -i '$d' ./output 316640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 317640235e2SEnji Cooper 318640235e2SEnji Cooper # Neighbor 319640235e2SEnji Cooper cat >./expect <<-EOF 320640235e2SEnji Cooper route to: fc00:0:0:1::1 321640235e2SEnji Cooperdestination: fc00:0:0:1:: 322640235e2SEnji Cooper mask: ffff:ffff:ffff:ffff:: 323640235e2SEnji Cooper local addr: fc00:0:0:1::2 324640235e2SEnji Cooper interface: shmif0 325640235e2SEnji Cooper flags: <UP,DONE,CONNECTED> 326640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 327640235e2SEnji Cooper EOF 328640235e2SEnji Cooper rump.route -n get -inet6 $IP6SRCGW > ./output 329640235e2SEnji Cooper $DEBUG && cat ./expect ./output 330640235e2SEnji Cooper sed -i '$d' ./output 331640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 332640235e2SEnji Cooper 333640235e2SEnji Cooper # Remote host 334640235e2SEnji Cooper cat >./expect <<-EOF 335640235e2SEnji Cooper route to: fc00:0:0:2::2 336640235e2SEnji Cooperdestination: :: 337640235e2SEnji Cooper mask: default 338640235e2SEnji Cooper gateway: fc00:0:0:1::1 339640235e2SEnji Cooper local addr: fc00:0:0:1::2 340640235e2SEnji Cooper interface: shmif0 341640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 342640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 343640235e2SEnji Cooper EOF 344640235e2SEnji Cooper rump.route -n get -inet6 $IP6DST > ./output 345640235e2SEnji Cooper $DEBUG && cat ./expect ./output 346640235e2SEnji Cooper sed -i '$d' ./output 347640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 348640235e2SEnji Cooper 349640235e2SEnji Cooper # Create a NDP cache 350640235e2SEnji Cooper atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT $IP6SRCGW 351640235e2SEnji Cooper 352640235e2SEnji Cooper # Neighbor with a cache (no different from w/o cache) 353640235e2SEnji Cooper cat >./expect <<-EOF 354640235e2SEnji Cooper route to: fc00:0:0:1::1 355640235e2SEnji Cooperdestination: fc00:0:0:1:: 356640235e2SEnji Cooper mask: ffff:ffff:ffff:ffff:: 357640235e2SEnji Cooper local addr: fc00:0:0:1::2 358640235e2SEnji Cooper interface: shmif0 359640235e2SEnji Cooper flags: <UP,DONE,CONNECTED> 360640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 361640235e2SEnji Cooper EOF 362640235e2SEnji Cooper rump.route -n get -inet6 $IP6SRCGW > ./output 363640235e2SEnji Cooper $DEBUG && cat ./expect ./output 364640235e2SEnji Cooper sed -i '$d' ./output 365640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 366640235e2SEnji Cooper} 367640235e2SEnji Cooper 368640235e2SEnji Cooperroute_command_get_body() 369640235e2SEnji Cooper{ 370640235e2SEnji Cooper 371640235e2SEnji Cooper setup 372640235e2SEnji Cooper setup_forwarding 373640235e2SEnji Cooper test_route_get 374*cdebaff8SEnji Cooper rump_server_destroy_ifaces 375640235e2SEnji Cooper} 376640235e2SEnji Cooper 377640235e2SEnji Cooperroute_command_get6_body() 378640235e2SEnji Cooper{ 379640235e2SEnji Cooper 380640235e2SEnji Cooper setup6 381640235e2SEnji Cooper setup_forwarding6 382640235e2SEnji Cooper test_route_get6 383*cdebaff8SEnji Cooper rump_server_destroy_ifaces 384640235e2SEnji Cooper} 385640235e2SEnji Cooper 386640235e2SEnji Cooperroute_command_get_cleanup() 387640235e2SEnji Cooper{ 388*cdebaff8SEnji Cooper 389640235e2SEnji Cooper $DEBUG && dump 390640235e2SEnji Cooper cleanup 391640235e2SEnji Cooper} 392640235e2SEnji Cooper 393640235e2SEnji Cooperroute_command_get6_cleanup() 394640235e2SEnji Cooper{ 395*cdebaff8SEnji Cooper 396*cdebaff8SEnji Cooper $DEBUG && dump 397640235e2SEnji Cooper cleanup 398640235e2SEnji Cooper} 399640235e2SEnji Cooper 400640235e2SEnji Cooperatf_init_test_cases() 401640235e2SEnji Cooper{ 402640235e2SEnji Cooper 403640235e2SEnji Cooper atf_add_test_case route_non_subnet_gateway 404640235e2SEnji Cooper atf_add_test_case route_command_get 405640235e2SEnji Cooper atf_add_test_case route_command_get6 406640235e2SEnji Cooper} 407