1*cdebaff8SEnji Cooper# $NetBSD: t_change.sh,v 1.9 2016/11/07 05:25:37 ozaki-r Exp $ 257718be8SEnji Cooper# 357718be8SEnji Cooper# Copyright (c) 2011 The NetBSD Foundation, Inc. 457718be8SEnji Cooper# All rights reserved. 557718be8SEnji Cooper# 657718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without 757718be8SEnji Cooper# modification, are permitted provided that the following conditions 857718be8SEnji Cooper# are met: 957718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright 1057718be8SEnji Cooper# notice, this list of conditions and the following disclaimer. 1157718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright 1257718be8SEnji Cooper# notice, this list of conditions and the following disclaimer in the 1357718be8SEnji Cooper# documentation and/or other materials provided with the distribution. 1457718be8SEnji Cooper# 1557718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 1657718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 1757718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1857718be8SEnji Cooper# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 1957718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2057718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2157718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2257718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2357718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2457718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2557718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE. 2657718be8SEnji Cooper# 2757718be8SEnji Cooper 2857718be8SEnji Coopernetserver=\ 29640235e2SEnji Cooper"rump_server -lrumpdev -lrumpnet -lrumpnet_net \ 30640235e2SEnji Cooper -lrumpnet_netinet -lrumpnet_shmif" 3157718be8SEnji Cooperexport RUMP_SERVER=unix://commsock 3257718be8SEnji Cooper 33*cdebaff8SEnji CooperDEBUG=${DEBUG:-false} 34640235e2SEnji Cooper 35640235e2SEnji Cooperatf_test_case route_change_reject2blackhole cleanup 36640235e2SEnji Cooperroute_change_reject2blackhole_head() 3757718be8SEnji Cooper{ 3857718be8SEnji Cooper 3957718be8SEnji Cooper atf_set "descr" "Change a reject route to blackhole" 4057718be8SEnji Cooper atf_set "require.progs" "rump_server" 4157718be8SEnji Cooper} 4257718be8SEnji Cooper 43640235e2SEnji Cooperroute_change_reject2blackhole_body() 4457718be8SEnji Cooper{ 4557718be8SEnji Cooper 4657718be8SEnji Cooper atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 4757718be8SEnji Cooper 4857718be8SEnji Cooper atf_check -s exit:0 -o ignore \ 4957718be8SEnji Cooper rump.route add 207.46.197.32 127.0.0.1 -reject 5057718be8SEnji Cooper atf_check -s exit:0 -o match:UGHR -x \ 5157718be8SEnji Cooper "rump.route -n show -inet | grep ^207.46" 5257718be8SEnji Cooper atf_check -s exit:0 -o ignore \ 5357718be8SEnji Cooper rump.route change 207.46.197.32 127.0.0.1 -blackhole 5457718be8SEnji Cooper atf_check -s exit:0 -o match:' UGHBS ' -e ignore -x \ 55640235e2SEnji Cooper "rump.netstat -rn -f inet | grep ^207.46" 5657718be8SEnji Cooper} 5757718be8SEnji Cooper 58640235e2SEnji Cooperroute_change_reject2blackhole_cleanup() 59640235e2SEnji Cooper{ 60640235e2SEnji Cooper 61640235e2SEnji Cooper env RUMP_SERVER=unix://commsock rump.halt 62640235e2SEnji Cooper} 63640235e2SEnji Cooper 64640235e2SEnji Cooperatf_test_case route_change_gateway cleanup 65640235e2SEnji Cooperroute_change_gateway_head() 66640235e2SEnji Cooper{ 67640235e2SEnji Cooper 68640235e2SEnji Cooper atf_set "descr" "Change the gateway of a route" 69640235e2SEnji Cooper atf_set "require.progs" "rump_server" 70640235e2SEnji Cooper} 71640235e2SEnji Cooper 72640235e2SEnji Cooperroute_change_gateway_body() 73640235e2SEnji Cooper{ 74640235e2SEnji Cooper 75640235e2SEnji Cooper atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 76640235e2SEnji Cooper 77640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 create 78640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 79640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 80640235e2SEnji Cooper 81640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 82640235e2SEnji Cooper rump.route add -net 192.168.0.0/24 10.0.0.1 83640235e2SEnji Cooper atf_check -s exit:0 -o match:'10.0.0.1' -x \ 84640235e2SEnji Cooper "rump.route -n show -inet | grep ^192.168" 85640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 86640235e2SEnji Cooper rump.route change -net 192.168.0.0/24 10.0.0.254 87640235e2SEnji Cooper atf_check -s exit:0 -o match:'10.0.0.254' -x \ 88640235e2SEnji Cooper "rump.route -n show -inet | grep ^192.168" 89640235e2SEnji Cooper} 90640235e2SEnji Cooper 91640235e2SEnji Cooperroute_change_gateway_cleanup() 92640235e2SEnji Cooper{ 93640235e2SEnji Cooper 94640235e2SEnji Cooper env RUMP_SERVER=unix://commsock rump.halt 95640235e2SEnji Cooper} 96640235e2SEnji Cooper 97640235e2SEnji Cooperatf_test_case route_change_ifa cleanup 98640235e2SEnji Cooperroute_change_ifa_head() 99640235e2SEnji Cooper{ 100640235e2SEnji Cooper 101640235e2SEnji Cooper atf_set "descr" "Change the ifa (local address) of a route" 102640235e2SEnji Cooper atf_set "require.progs" "rump_server" 103640235e2SEnji Cooper} 104640235e2SEnji Cooper 105640235e2SEnji Cooperroute_change_ifa_body() 106640235e2SEnji Cooper{ 107640235e2SEnji Cooper 108640235e2SEnji Cooper atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 109640235e2SEnji Cooper 110640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 create 111640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 112640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 113640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 alias 10.0.0.11/24 114640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 up 115640235e2SEnji Cooper 116640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 117640235e2SEnji Cooper rump.route add -net 192.168.0.0/24 10.0.0.1 118640235e2SEnji Cooper atf_check -s exit:0 -o match:'10.0.0.1' -x \ 119640235e2SEnji Cooper "rump.route -n show -inet | grep ^192.168" 120640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 121640235e2SEnji Cooper cat >./expect <<-EOF 122640235e2SEnji Cooper route to: 192.168.0.1 123640235e2SEnji Cooperdestination: 192.168.0.0 124640235e2SEnji Cooper mask: 255.255.255.0 125640235e2SEnji Cooper gateway: 10.0.0.1 126640235e2SEnji Cooper local addr: 10.0.0.10 127640235e2SEnji Cooper interface: shmif0 128640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 129640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 130640235e2SEnji Cooper EOF 131640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 132640235e2SEnji Cooper $DEBUG && cat ./expect ./output 133640235e2SEnji Cooper sed -i '$d' ./output 134640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 135640235e2SEnji Cooper 136640235e2SEnji Cooper # Change the local address of the route 137640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 138640235e2SEnji Cooper rump.route change -net 192.168.0.0/24 10.0.0.1 -ifa 10.0.0.11 139640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 140640235e2SEnji Cooper cat >./expect <<-EOF 141640235e2SEnji Cooper route to: 192.168.0.1 142640235e2SEnji Cooperdestination: 192.168.0.0 143640235e2SEnji Cooper mask: 255.255.255.0 144640235e2SEnji Cooper gateway: 10.0.0.1 145640235e2SEnji Cooper local addr: 10.0.0.11 146640235e2SEnji Cooper interface: shmif0 147640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 148640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 149640235e2SEnji Cooper EOF 150640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 151640235e2SEnji Cooper $DEBUG && cat ./expect ./output 152640235e2SEnji Cooper sed -i '$d' ./output 153640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 154640235e2SEnji Cooper} 155640235e2SEnji Cooper 156640235e2SEnji Cooperroute_change_ifa_cleanup() 157640235e2SEnji Cooper{ 158640235e2SEnji Cooper 159640235e2SEnji Cooper env RUMP_SERVER=unix://commsock rump.halt 160640235e2SEnji Cooper} 161640235e2SEnji Cooper 162640235e2SEnji Cooperatf_test_case route_change_ifp cleanup 163640235e2SEnji Cooperroute_change_ifp_head() 164640235e2SEnji Cooper{ 165640235e2SEnji Cooper 166640235e2SEnji Cooper atf_set "descr" "Change a route based on an interface (ifp)" 167640235e2SEnji Cooper atf_set "require.progs" "rump_server" 168640235e2SEnji Cooper} 169640235e2SEnji Cooper 170640235e2SEnji Cooperroute_change_ifp_body() 171640235e2SEnji Cooper{ 172640235e2SEnji Cooper 173640235e2SEnji Cooper atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 174640235e2SEnji Cooper 175640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 create 176640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 177640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 178640235e2SEnji Cooper 179640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 create 180640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 181640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 182640235e2SEnji Cooper 183640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 184640235e2SEnji Cooper rump.route add -net 192.168.0.0/24 10.0.0.1 185640235e2SEnji Cooper atf_check -s exit:0 -o match:'10.0.0.1' -x \ 186640235e2SEnji Cooper "rump.route -n show -inet | grep ^192.168" 187640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 188640235e2SEnji Cooper cat >./expect <<-EOF 189640235e2SEnji Cooper route to: 192.168.0.1 190640235e2SEnji Cooperdestination: 192.168.0.0 191640235e2SEnji Cooper mask: 255.255.255.0 192640235e2SEnji Cooper gateway: 10.0.0.1 193640235e2SEnji Cooper local addr: 10.0.0.10 194640235e2SEnji Cooper interface: shmif0 195640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 196640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 197640235e2SEnji Cooper EOF 198640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 199640235e2SEnji Cooper $DEBUG && cat ./expect ./output 200640235e2SEnji Cooper sed -i '$d' ./output 201640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 202640235e2SEnji Cooper 203640235e2SEnji Cooper # Change a route based on an interface 204640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 205640235e2SEnji Cooper rump.route change -net 192.168.0.0/24 10.0.0.1 -ifp shmif1 206640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 207640235e2SEnji Cooper cat >./expect <<-EOF 208640235e2SEnji Cooper route to: 192.168.0.1 209640235e2SEnji Cooperdestination: 192.168.0.0 210640235e2SEnji Cooper mask: 255.255.255.0 211640235e2SEnji Cooper gateway: 10.0.0.1 212640235e2SEnji Cooper local addr: 10.0.0.11 213640235e2SEnji Cooper interface: shmif1 214640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 215640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 216640235e2SEnji Cooper EOF 217640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 218640235e2SEnji Cooper $DEBUG && cat ./expect ./output 219640235e2SEnji Cooper sed -i '$d' ./output 220640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 221640235e2SEnji Cooper} 222640235e2SEnji Cooper 223640235e2SEnji Cooperroute_change_ifp_cleanup() 224640235e2SEnji Cooper{ 225640235e2SEnji Cooper 226640235e2SEnji Cooper env RUMP_SERVER=unix://commsock rump.halt 227640235e2SEnji Cooper} 228640235e2SEnji Cooper 229640235e2SEnji Cooperatf_test_case route_change_ifp_ifa cleanup 230640235e2SEnji Cooperroute_change_ifp_head() 231640235e2SEnji Cooper{ 232640235e2SEnji Cooper 233640235e2SEnji Cooper atf_set "descr" "Change a route with -ifp and -ifa" 234640235e2SEnji Cooper atf_set "require.progs" "rump_server" 235640235e2SEnji Cooper} 236640235e2SEnji Cooper 237640235e2SEnji Cooperroute_change_ifp_ifa_body() 238640235e2SEnji Cooper{ 239640235e2SEnji Cooper 240640235e2SEnji Cooper atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 241640235e2SEnji Cooper 242640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 create 243640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 244640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 245640235e2SEnji Cooper 246640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 create 247640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 248640235e2SEnji Cooper atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 249640235e2SEnji Cooper 250640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 251640235e2SEnji Cooper rump.route add -net 192.168.0.0/24 10.0.0.1 252640235e2SEnji Cooper atf_check -s exit:0 -o match:'10.0.0.1' -x \ 253640235e2SEnji Cooper "rump.route -n show -inet | grep ^192.168" 254640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 255640235e2SEnji Cooper cat >./expect <<-EOF 256640235e2SEnji Cooper route to: 192.168.0.1 257640235e2SEnji Cooperdestination: 192.168.0.0 258640235e2SEnji Cooper mask: 255.255.255.0 259640235e2SEnji Cooper gateway: 10.0.0.1 260640235e2SEnji Cooper local addr: 10.0.0.10 261640235e2SEnji Cooper interface: shmif0 262640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 263640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 264640235e2SEnji Cooper EOF 265640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 266640235e2SEnji Cooper $DEBUG && cat ./expect ./output 267640235e2SEnji Cooper sed -i '$d' ./output 268640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 269640235e2SEnji Cooper 270640235e2SEnji Cooper # Change a route with -ifa and -ifp 271640235e2SEnji Cooper atf_check -s exit:0 -o ignore \ 272640235e2SEnji Cooper rump.route change -net 192.168.0.0/24 -ifa 10.0.0.1 -ifp shmif1 273640235e2SEnji Cooper $DEBUG && rump.route -n show -inet 274640235e2SEnji Cooper cat >./expect <<-EOF 275640235e2SEnji Cooper route to: 192.168.0.1 276640235e2SEnji Cooperdestination: 192.168.0.0 277640235e2SEnji Cooper mask: 255.255.255.0 278640235e2SEnji Cooper gateway: 10.0.0.1 279640235e2SEnji Cooper local addr: 10.0.0.11 280640235e2SEnji Cooper interface: shmif1 281640235e2SEnji Cooper flags: <UP,GATEWAY,DONE,STATIC> 282640235e2SEnji Cooper recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 283640235e2SEnji Cooper EOF 284640235e2SEnji Cooper rump.route -n get 192.168.0.1 > ./output 285640235e2SEnji Cooper $DEBUG && cat ./expect ./output 286640235e2SEnji Cooper sed -i '$d' ./output 287640235e2SEnji Cooper atf_check -s exit:0 diff ./expect ./output 288640235e2SEnji Cooper} 289640235e2SEnji Cooper 290640235e2SEnji Cooperroute_change_ifp_ifa_cleanup() 29157718be8SEnji Cooper{ 29257718be8SEnji Cooper 29357718be8SEnji Cooper env RUMP_SERVER=unix://commsock rump.halt 29457718be8SEnji Cooper} 29557718be8SEnji Cooper 29657718be8SEnji Cooperatf_init_test_cases() 29757718be8SEnji Cooper{ 29857718be8SEnji Cooper 299640235e2SEnji Cooper atf_add_test_case route_change_reject2blackhole 300640235e2SEnji Cooper atf_add_test_case route_change_gateway 301640235e2SEnji Cooper atf_add_test_case route_change_ifa 302640235e2SEnji Cooper atf_add_test_case route_change_ifp 303640235e2SEnji Cooper atf_add_test_case route_change_ifp_ifa 30457718be8SEnji Cooper} 305