1# $NetBSD: t_change.sh,v 1.9 2016/11/07 05:25:37 ozaki-r Exp $ 2# 3# Copyright (c) 2011 The NetBSD Foundation, Inc. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25# POSSIBILITY OF SUCH DAMAGE. 26# 27 28netserver=\ 29"rump_server -lrumpdev -lrumpnet -lrumpnet_net \ 30 -lrumpnet_netinet -lrumpnet_shmif" 31export RUMP_SERVER=unix://commsock 32 33DEBUG=${DEBUG:-false} 34 35atf_test_case route_change_reject2blackhole cleanup 36route_change_reject2blackhole_head() 37{ 38 39 atf_set "descr" "Change a reject route to blackhole" 40 atf_set "require.progs" "rump_server" 41} 42 43route_change_reject2blackhole_body() 44{ 45 46 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 47 48 atf_check -s exit:0 -o ignore \ 49 rump.route add 207.46.197.32 127.0.0.1 -reject 50 atf_check -s exit:0 -o match:UGHR -x \ 51 "rump.route -n show -inet | grep ^207.46" 52 atf_check -s exit:0 -o ignore \ 53 rump.route change 207.46.197.32 127.0.0.1 -blackhole 54 atf_check -s exit:0 -o match:' UGHBS ' -e ignore -x \ 55 "rump.netstat -rn -f inet | grep ^207.46" 56} 57 58route_change_reject2blackhole_cleanup() 59{ 60 61 env RUMP_SERVER=unix://commsock rump.halt 62} 63 64atf_test_case route_change_gateway cleanup 65route_change_gateway_head() 66{ 67 68 atf_set "descr" "Change the gateway of a route" 69 atf_set "require.progs" "rump_server" 70} 71 72route_change_gateway_body() 73{ 74 75 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 76 77 atf_check -s exit:0 rump.ifconfig shmif0 create 78 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 79 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 80 81 atf_check -s exit:0 -o ignore \ 82 rump.route add -net 192.168.0.0/24 10.0.0.1 83 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 84 "rump.route -n show -inet | grep ^192.168" 85 atf_check -s exit:0 -o ignore \ 86 rump.route change -net 192.168.0.0/24 10.0.0.254 87 atf_check -s exit:0 -o match:'10.0.0.254' -x \ 88 "rump.route -n show -inet | grep ^192.168" 89} 90 91route_change_gateway_cleanup() 92{ 93 94 env RUMP_SERVER=unix://commsock rump.halt 95} 96 97atf_test_case route_change_ifa cleanup 98route_change_ifa_head() 99{ 100 101 atf_set "descr" "Change the ifa (local address) of a route" 102 atf_set "require.progs" "rump_server" 103} 104 105route_change_ifa_body() 106{ 107 108 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 109 110 atf_check -s exit:0 rump.ifconfig shmif0 create 111 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 112 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 113 atf_check -s exit:0 rump.ifconfig shmif0 alias 10.0.0.11/24 114 atf_check -s exit:0 rump.ifconfig shmif0 up 115 116 atf_check -s exit:0 -o ignore \ 117 rump.route add -net 192.168.0.0/24 10.0.0.1 118 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 119 "rump.route -n show -inet | grep ^192.168" 120 $DEBUG && rump.route -n show -inet 121 cat >./expect <<-EOF 122 route to: 192.168.0.1 123destination: 192.168.0.0 124 mask: 255.255.255.0 125 gateway: 10.0.0.1 126 local addr: 10.0.0.10 127 interface: shmif0 128 flags: <UP,GATEWAY,DONE,STATIC> 129 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 130 EOF 131 rump.route -n get 192.168.0.1 > ./output 132 $DEBUG && cat ./expect ./output 133 sed -i '$d' ./output 134 atf_check -s exit:0 diff ./expect ./output 135 136 # Change the local address of the route 137 atf_check -s exit:0 -o ignore \ 138 rump.route change -net 192.168.0.0/24 10.0.0.1 -ifa 10.0.0.11 139 $DEBUG && rump.route -n show -inet 140 cat >./expect <<-EOF 141 route to: 192.168.0.1 142destination: 192.168.0.0 143 mask: 255.255.255.0 144 gateway: 10.0.0.1 145 local addr: 10.0.0.11 146 interface: shmif0 147 flags: <UP,GATEWAY,DONE,STATIC> 148 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 149 EOF 150 rump.route -n get 192.168.0.1 > ./output 151 $DEBUG && cat ./expect ./output 152 sed -i '$d' ./output 153 atf_check -s exit:0 diff ./expect ./output 154} 155 156route_change_ifa_cleanup() 157{ 158 159 env RUMP_SERVER=unix://commsock rump.halt 160} 161 162atf_test_case route_change_ifp cleanup 163route_change_ifp_head() 164{ 165 166 atf_set "descr" "Change a route based on an interface (ifp)" 167 atf_set "require.progs" "rump_server" 168} 169 170route_change_ifp_body() 171{ 172 173 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 174 175 atf_check -s exit:0 rump.ifconfig shmif0 create 176 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 177 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 178 179 atf_check -s exit:0 rump.ifconfig shmif1 create 180 atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 181 atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 182 183 atf_check -s exit:0 -o ignore \ 184 rump.route add -net 192.168.0.0/24 10.0.0.1 185 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 186 "rump.route -n show -inet | grep ^192.168" 187 $DEBUG && rump.route -n show -inet 188 cat >./expect <<-EOF 189 route to: 192.168.0.1 190destination: 192.168.0.0 191 mask: 255.255.255.0 192 gateway: 10.0.0.1 193 local addr: 10.0.0.10 194 interface: shmif0 195 flags: <UP,GATEWAY,DONE,STATIC> 196 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 197 EOF 198 rump.route -n get 192.168.0.1 > ./output 199 $DEBUG && cat ./expect ./output 200 sed -i '$d' ./output 201 atf_check -s exit:0 diff ./expect ./output 202 203 # Change a route based on an interface 204 atf_check -s exit:0 -o ignore \ 205 rump.route change -net 192.168.0.0/24 10.0.0.1 -ifp shmif1 206 $DEBUG && rump.route -n show -inet 207 cat >./expect <<-EOF 208 route to: 192.168.0.1 209destination: 192.168.0.0 210 mask: 255.255.255.0 211 gateway: 10.0.0.1 212 local addr: 10.0.0.11 213 interface: shmif1 214 flags: <UP,GATEWAY,DONE,STATIC> 215 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 216 EOF 217 rump.route -n get 192.168.0.1 > ./output 218 $DEBUG && cat ./expect ./output 219 sed -i '$d' ./output 220 atf_check -s exit:0 diff ./expect ./output 221} 222 223route_change_ifp_cleanup() 224{ 225 226 env RUMP_SERVER=unix://commsock rump.halt 227} 228 229atf_test_case route_change_ifp_ifa cleanup 230route_change_ifp_head() 231{ 232 233 atf_set "descr" "Change a route with -ifp and -ifa" 234 atf_set "require.progs" "rump_server" 235} 236 237route_change_ifp_ifa_body() 238{ 239 240 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 241 242 atf_check -s exit:0 rump.ifconfig shmif0 create 243 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 244 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 245 246 atf_check -s exit:0 rump.ifconfig shmif1 create 247 atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 248 atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 249 250 atf_check -s exit:0 -o ignore \ 251 rump.route add -net 192.168.0.0/24 10.0.0.1 252 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 253 "rump.route -n show -inet | grep ^192.168" 254 $DEBUG && rump.route -n show -inet 255 cat >./expect <<-EOF 256 route to: 192.168.0.1 257destination: 192.168.0.0 258 mask: 255.255.255.0 259 gateway: 10.0.0.1 260 local addr: 10.0.0.10 261 interface: shmif0 262 flags: <UP,GATEWAY,DONE,STATIC> 263 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 264 EOF 265 rump.route -n get 192.168.0.1 > ./output 266 $DEBUG && cat ./expect ./output 267 sed -i '$d' ./output 268 atf_check -s exit:0 diff ./expect ./output 269 270 # Change a route with -ifa and -ifp 271 atf_check -s exit:0 -o ignore \ 272 rump.route change -net 192.168.0.0/24 -ifa 10.0.0.1 -ifp shmif1 273 $DEBUG && rump.route -n show -inet 274 cat >./expect <<-EOF 275 route to: 192.168.0.1 276destination: 192.168.0.0 277 mask: 255.255.255.0 278 gateway: 10.0.0.1 279 local addr: 10.0.0.11 280 interface: shmif1 281 flags: <UP,GATEWAY,DONE,STATIC> 282 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 283 EOF 284 rump.route -n get 192.168.0.1 > ./output 285 $DEBUG && cat ./expect ./output 286 sed -i '$d' ./output 287 atf_check -s exit:0 diff ./expect ./output 288} 289 290route_change_ifp_ifa_cleanup() 291{ 292 293 env RUMP_SERVER=unix://commsock rump.halt 294} 295 296atf_init_test_cases() 297{ 298 299 atf_add_test_case route_change_reject2blackhole 300 atf_add_test_case route_change_gateway 301 atf_add_test_case route_change_ifa 302 atf_add_test_case route_change_ifp 303 atf_add_test_case route_change_ifp_ifa 304} 305