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