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