xref: /freebsd/contrib/netbsd-tests/net/route/t_change.sh (revision d370fd1cd8fc69e87dc63f4f4a82e5a8b4956c93)
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