1# $NetBSD: t_change.sh,v 1.14 2019/05/13 17:55:09 bad 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 -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif" 30export RUMP_SERVER=unix://commsock 31 32DEBUG=${DEBUG:-false} 33 34route_cleanup_common() 35{ 36 37 $DEBUG && dump_kernel_stats unix://commsock 38 $DEBUG && extract_rump_server_core 39 env RUMP_SERVER=unix://commsock rump.halt 40} 41 42atf_test_case route_change_reject2blackhole cleanup 43route_change_reject2blackhole_head() 44{ 45 46 atf_set "descr" "Change a reject route to blackhole" 47 atf_set "require.progs" "rump_server" 48} 49 50route_change_reject2blackhole_body() 51{ 52 53 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 54 55 atf_check -s exit:0 -o ignore \ 56 rump.route add 207.46.197.32 127.0.0.1 -reject 57 atf_check -s exit:0 -o match:UGHR -x \ 58 "rump.route -n show -inet | grep ^207.46" 59 atf_check -s exit:0 -o ignore \ 60 rump.route change 207.46.197.32 127.0.0.1 -blackhole 61 atf_check -s exit:0 -o match:' UGHBS ' -e ignore -x \ 62 "rump.netstat -rn -f inet | grep ^207.46" 63} 64 65route_change_reject2blackhole_cleanup() 66{ 67 68 route_cleanup_common 69} 70 71atf_test_case route_change_gateway cleanup 72route_change_gateway_head() 73{ 74 75 atf_set "descr" "Change the gateway of a route" 76 atf_set "require.progs" "rump_server" 77} 78 79route_change_gateway_body() 80{ 81 82 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 83 84 atf_check -s exit:0 rump.ifconfig shmif0 create 85 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 86 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 87 88 atf_check -s exit:0 -o ignore \ 89 rump.route add -net 192.168.0.0/24 10.0.0.1 90 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 91 "rump.route -n show -inet | grep ^192.168" 92 atf_check -s exit:0 -o ignore \ 93 rump.route change -net 192.168.0.0/24 10.0.0.254 94 atf_check -s exit:0 -o match:'10.0.0.254' -x \ 95 "rump.route -n show -inet | grep ^192.168" 96} 97 98route_change_gateway_cleanup() 99{ 100 101 route_cleanup_common 102} 103 104atf_test_case route_change_ifa cleanup 105route_change_ifa_head() 106{ 107 108 atf_set "descr" "Change the ifa (local address) of a route" 109 atf_set "require.progs" "rump_server" 110} 111 112route_change_ifa_body() 113{ 114 115 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 116 117 atf_check -s exit:0 rump.ifconfig shmif0 create 118 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 119 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 120 atf_check -s exit:0 rump.ifconfig shmif0 alias 10.0.0.11/24 121 atf_check -s exit:0 rump.ifconfig shmif0 up 122 123 atf_check -s exit:0 -o ignore \ 124 rump.route add -net 192.168.0.0/24 10.0.0.1 125 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 126 "rump.route -n show -inet | grep ^192.168" 127 $DEBUG && rump.route -n show -inet 128 cat >./expect <<-EOF 129 route to: 192.168.0.1 130destination: 192.168.0.0 131 mask: 255.255.255.0 132 gateway: 10.0.0.1 133 local addr: 10.0.0.10 134 interface: shmif0 135 flags: 0x843<UP,GATEWAY,DONE,STATIC> 136 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 137 EOF 138 rump.route -n get 192.168.0.1 > ./output 139 $DEBUG && cat ./expect ./output 140 sed -i '$d' ./output 141 atf_check -s exit:0 diff ./expect ./output 142 143 # Change the local address of the route 144 atf_check -s exit:0 -o ignore \ 145 rump.route change -net 192.168.0.0/24 10.0.0.1 -ifa 10.0.0.11 146 $DEBUG && rump.route -n show -inet 147 cat >./expect <<-EOF 148 route to: 192.168.0.1 149destination: 192.168.0.0 150 mask: 255.255.255.0 151 gateway: 10.0.0.1 152 local addr: 10.0.0.11 153 interface: shmif0 154 flags: 0x843<UP,GATEWAY,DONE,STATIC> 155 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 156 EOF 157 rump.route -n get 192.168.0.1 > ./output 158 $DEBUG && cat ./expect ./output 159 sed -i '$d' ./output 160 atf_check -s exit:0 diff ./expect ./output 161} 162 163route_change_ifa_cleanup() 164{ 165 166 route_cleanup_common 167} 168 169atf_test_case route_change_ifp cleanup 170route_change_ifp_head() 171{ 172 173 atf_set "descr" "Change a route based on an interface (ifp)" 174 atf_set "require.progs" "rump_server" 175} 176 177route_change_ifp_body() 178{ 179 180 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 181 182 atf_check -s exit:0 rump.ifconfig shmif0 create 183 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 184 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 185 186 atf_check -s exit:0 rump.ifconfig shmif1 create 187 atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 188 atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 189 190 atf_check -s exit:0 -o ignore \ 191 rump.route add -net 192.168.0.0/24 10.0.0.1 192 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 193 "rump.route -n show -inet | grep ^192.168" 194 $DEBUG && rump.route -n show -inet 195 cat >./expect <<-EOF 196 route to: 192.168.0.1 197destination: 192.168.0.0 198 mask: 255.255.255.0 199 gateway: 10.0.0.1 200 local addr: 10.0.0.10 201 interface: shmif0 202 flags: 0x843<UP,GATEWAY,DONE,STATIC> 203 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 204 EOF 205 rump.route -n get 192.168.0.1 > ./output 206 $DEBUG && cat ./expect ./output 207 sed -i '$d' ./output 208 atf_check -s exit:0 diff ./expect ./output 209 210 # Change a route based on an interface 211 atf_check -s exit:0 -o ignore \ 212 rump.route change -net 192.168.0.0/24 10.0.0.1 -ifp shmif1 213 $DEBUG && rump.route -n show -inet 214 cat >./expect <<-EOF 215 route to: 192.168.0.1 216destination: 192.168.0.0 217 mask: 255.255.255.0 218 gateway: 10.0.0.1 219 local addr: 10.0.0.11 220 interface: shmif1 221 flags: 0x843<UP,GATEWAY,DONE,STATIC> 222 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 223 EOF 224 rump.route -n get 192.168.0.1 > ./output 225 $DEBUG && cat ./expect ./output 226 sed -i '$d' ./output 227 atf_check -s exit:0 diff ./expect ./output 228} 229 230route_change_ifp_cleanup() 231{ 232 233 route_cleanup_common 234} 235 236atf_test_case route_change_ifp_ifa cleanup 237route_change_ifp_head() 238{ 239 240 atf_set "descr" "Change a route with -ifp and -ifa" 241 atf_set "require.progs" "rump_server" 242} 243 244route_change_ifp_ifa_body() 245{ 246 247 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 248 249 atf_check -s exit:0 rump.ifconfig shmif0 create 250 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 251 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 252 253 atf_check -s exit:0 rump.ifconfig shmif1 create 254 atf_check -s exit:0 rump.ifconfig shmif1 linkstr bus 255 atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24 up 256 257 atf_check -s exit:0 -o ignore \ 258 rump.route add -net 192.168.0.0/24 10.0.0.1 259 atf_check -s exit:0 -o match:'10.0.0.1' -x \ 260 "rump.route -n show -inet | grep ^192.168" 261 $DEBUG && rump.route -n show -inet 262 cat >./expect <<-EOF 263 route to: 192.168.0.1 264destination: 192.168.0.0 265 mask: 255.255.255.0 266 gateway: 10.0.0.1 267 local addr: 10.0.0.10 268 interface: shmif0 269 flags: 0x843<UP,GATEWAY,DONE,STATIC> 270 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 271 EOF 272 rump.route -n get 192.168.0.1 > ./output 273 $DEBUG && cat ./expect ./output 274 sed -i '$d' ./output 275 atf_check -s exit:0 diff ./expect ./output 276 277 # Change a route with -ifa and -ifp 278 atf_check -s exit:0 -o ignore \ 279 rump.route change -net 192.168.0.0/24 -ifa 10.0.0.1 -ifp shmif1 280 $DEBUG && rump.route -n show -inet 281 cat >./expect <<-EOF 282 route to: 192.168.0.1 283destination: 192.168.0.0 284 mask: 255.255.255.0 285 gateway: 10.0.0.1 286 local addr: 10.0.0.11 287 interface: shmif1 288 flags: 0x843<UP,GATEWAY,DONE,STATIC> 289 recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 290 EOF 291 rump.route -n get 192.168.0.1 > ./output 292 $DEBUG && cat ./expect ./output 293 sed -i '$d' ./output 294 atf_check -s exit:0 diff ./expect ./output 295} 296 297route_change_ifp_ifa_cleanup() 298{ 299 300 route_cleanup_common 301} 302 303atf_test_case route_change_flags cleanup 304route_change_flags_head() 305{ 306 307 atf_set "descr" "Change flags of a route" 308 atf_set "require.progs" "rump_server" 309} 310 311route_change_flags_body() 312{ 313 314 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 315 316 atf_check -s exit:0 rump.ifconfig shmif0 create 317 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 318 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 319 320 check_route 10.0.0/24 '' UC shmif0 321 # Set reject flag 322 atf_check -s exit:0 -o ignore \ 323 rump.route change -net 10.0.0.0/24 -reject 324 check_route 10.0.0/24 '' URCS shmif0 325 # Clear reject flag 326 atf_check -s exit:0 -o ignore \ 327 rump.route change -net 10.0.0.0/24 -noreject 328 check_route 10.0.0/24 '' UCS shmif0 329 330 # TODO other flags 331} 332 333route_change_flags_cleanup() 334{ 335 336 route_cleanup_common 337} 338 339atf_test_case route_change_default_flags cleanup 340route_change_default_flags_head() 341{ 342 343 atf_set "descr" "Change flags of the default route" 344 atf_set "require.progs" "rump_server" 345} 346 347route_change_default_flags_body() 348{ 349 350 atf_check -s exit:0 ${netserver} ${RUMP_SERVER} 351 352 atf_check -s exit:0 rump.ifconfig shmif0 create 353 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus 354 atf_check -s exit:0 rump.ifconfig shmif0 10.0.0.10/24 up 355 356 atf_check -s exit:0 -o ignore rump.route add default 10.0.0.1 357 check_route default 10.0.0.1 UGS shmif0 358 # Set reject flag 359 atf_check -s exit:0 -o ignore rump.route change default -reject 360 check_route default 10.0.0.1 UGRS shmif0 361 # Clear reject flag 362 atf_check -s exit:0 -o ignore rump.route change default -noreject 363 check_route default 10.0.0.1 UGS shmif0 364 365 # TODO other flags 366} 367 368route_change_default_flags_cleanup() 369{ 370 371 route_cleanup_common 372} 373 374atf_init_test_cases() 375{ 376 377 atf_add_test_case route_change_reject2blackhole 378 atf_add_test_case route_change_gateway 379 atf_add_test_case route_change_ifa 380 atf_add_test_case route_change_ifp 381 atf_add_test_case route_change_ifp_ifa 382 atf_add_test_case route_change_flags 383 atf_add_test_case route_change_default_flags 384} 385