t_ifconfig.sh revision 1.21 1 1.21 ozaki # $NetBSD: t_ifconfig.sh,v 1.21 2019/08/15 04:21:33 ozaki-r Exp $
2 1.1 ozaki #
3 1.1 ozaki # Copyright (c) 2015 The NetBSD Foundation, Inc.
4 1.1 ozaki # All rights reserved.
5 1.1 ozaki #
6 1.1 ozaki # Redistribution and use in source and binary forms, with or without
7 1.1 ozaki # modification, are permitted provided that the following conditions
8 1.1 ozaki # are met:
9 1.1 ozaki # 1. Redistributions of source code must retain the above copyright
10 1.1 ozaki # notice, this list of conditions and the following disclaimer.
11 1.1 ozaki # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 ozaki # notice, this list of conditions and the following disclaimer in the
13 1.1 ozaki # documentation and/or other materials provided with the distribution.
14 1.1 ozaki #
15 1.1 ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 ozaki # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 ozaki # POSSIBILITY OF SUCH DAMAGE.
26 1.1 ozaki #
27 1.1 ozaki
28 1.1 ozaki RUMP_SERVER1=unix://./r1
29 1.4 ozaki RUMP_SERVER2=unix://./r2
30 1.1 ozaki
31 1.1 ozaki RUMP_FLAGS=\
32 1.1 ozaki "-lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_netinet6 -lrumpnet_shmif"
33 1.19 bad RUMP_FLAGS="${RUMP_FLAGS}"
34 1.1 ozaki
35 1.6 ozaki TIMEOUT=3
36 1.6 ozaki
37 1.12 christos anycast="[Aa][Nn][Yy][Cc][Aa][Ss][Tt]"
38 1.12 christos deprecated="[Dd][Ee][Pp][Rr][Ee][Cc][Aa][Tt][Ee][Dd]"
39 1.12 christos
40 1.10 ozaki atf_test_case ifconfig_create_destroy cleanup
41 1.10 ozaki ifconfig_create_destroy_head()
42 1.1 ozaki {
43 1.1 ozaki
44 1.1 ozaki atf_set "descr" "tests of ifconfig create and destroy"
45 1.1 ozaki atf_set "require.progs" "rump_server"
46 1.1 ozaki }
47 1.1 ozaki
48 1.10 ozaki ifconfig_create_destroy_body()
49 1.1 ozaki {
50 1.1 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1}
51 1.1 ozaki
52 1.1 ozaki export RUMP_SERVER=${RUMP_SERVER1}
53 1.1 ozaki
54 1.1 ozaki # Create and destroy (no address)
55 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
56 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy
57 1.1 ozaki
58 1.1 ozaki # Create and destroy (with an IPv4 address)
59 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
60 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus
61 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24
62 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
63 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy
64 1.1 ozaki
65 1.1 ozaki # Create and destroy (with an IPv6 address)
66 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
67 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus
68 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1
69 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
70 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy
71 1.1 ozaki
72 1.21 ozaki # Check if ifconfig (ioctl) works after a failure of ifconfig destroy
73 1.21 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0
74 1.21 ozaki atf_check -s not-exit:0 -e ignore rump.ifconfig lo0 destroy
75 1.21 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0
76 1.21 ozaki
77 1.1 ozaki unset RUMP_SERVER
78 1.1 ozaki }
79 1.1 ozaki
80 1.10 ozaki ifconfig_create_destroy_cleanup()
81 1.1 ozaki {
82 1.1 ozaki
83 1.1 ozaki RUMP_SERVER=${RUMP_SERVER1} rump.halt
84 1.1 ozaki }
85 1.1 ozaki
86 1.10 ozaki atf_test_case ifconfig_options cleanup
87 1.10 ozaki ifconfig_options_head()
88 1.2 ozaki {
89 1.2 ozaki
90 1.2 ozaki atf_set "descr" "tests of ifconfig options"
91 1.2 ozaki atf_set "require.progs" "rump_server"
92 1.2 ozaki }
93 1.2 ozaki
94 1.10 ozaki ifconfig_options_body()
95 1.2 ozaki {
96 1.2 ozaki
97 1.2 ozaki export RUMP_SERVER=${RUMP_SERVER1}
98 1.2 ozaki atf_check -s exit:0 rump_server $RUMP_FLAGS $RUMP_SERVER1
99 1.2 ozaki
100 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 create
101 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 linkstr bus1
102 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet 10.0.0.1/24
103 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::1/64
104 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
105 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -w 10
106 1.2 ozaki $DEBUG && rump.ifconfig shmif0
107 1.2 ozaki
108 1.2 ozaki # ifconfig [-N] interface address_family
109 1.2 ozaki # -N resolves hostnames
110 1.2 ozaki atf_check -s exit:0 -o match:'inet 127.0.0.1' rump.ifconfig lo0 inet
111 1.2 ozaki atf_check -s exit:0 -o match:'inet localhost' rump.ifconfig -N lo0 inet
112 1.2 ozaki atf_check -s exit:0 -o match:'inet6 ::1' rump.ifconfig lo0 inet6
113 1.2 ozaki atf_check -s exit:0 -o match:'inet6 localhost' rump.ifconfig -N lo0 inet6
114 1.2 ozaki atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig lo0 atalk
115 1.2 ozaki atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig -N lo0 atalk
116 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0 link
117 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -N lo0 link
118 1.2 ozaki
119 1.2 ozaki # ifconfig [-hLmNvz] interface
120 1.2 ozaki # -h -v shows statistics in human readable format
121 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -h -v lo0
122 1.2 ozaki # -L shows IPv6 lifetime
123 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::2 \
124 1.2 ozaki pltime 100
125 1.2 ozaki $DEBUG && rump.ifconfig -L shmif0
126 1.2 ozaki atf_check -s exit:0 -o match:'pltime' rump.ifconfig -L shmif0
127 1.2 ozaki atf_check -s exit:0 -o match:'vltime' rump.ifconfig -L shmif0
128 1.2 ozaki # -m shows all of the supported media (not supported in shmif)
129 1.2 ozaki $DEBUG && rump.ifconfig -m shmif0
130 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -m shmif0
131 1.2 ozaki atf_check -s exit:0 -o match:'localhost' rump.ifconfig -N lo0
132 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0
133 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost
134 1.2 ozaki # -z clears and shows statistics at that point
135 1.2 ozaki atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -z lo0
136 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0
137 1.2 ozaki
138 1.2 ozaki # ifconfig -a [-bdhLNmsuvz]
139 1.2 ozaki # -a shows all interfaces in the system
140 1.2 ozaki $DEBUG && rump.ifconfig -a
141 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' -o match:'lo0' rump.ifconfig -a
142 1.2 ozaki # -a -b shows only broadcast interfaces
143 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' -o not-match:'lo0' rump.ifconfig -a -b
144 1.2 ozaki # -a -d shows only down interfaces
145 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down
146 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -d
147 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
148 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -d
149 1.2 ozaki atf_check -s exit:0 -o match:'pltime' rump.ifconfig -a -L
150 1.2 ozaki atf_check -s exit:0 -o match:'vltime' rump.ifconfig -a -L
151 1.2 ozaki atf_check -s exit:0 -o match:'localhost' rump.ifconfig -a -N
152 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -a -m
153 1.2 ozaki # -a -s shows only interfaces connected to a network
154 1.2 ozaki # (shmif is always connected)
155 1.2 ozaki $DEBUG && rump.ifconfig -a -s
156 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -a -s
157 1.2 ozaki # -a -u shows only up interfaces
158 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -u
159 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down
160 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -u
161 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
162 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v
163 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost
164 1.3 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down
165 1.2 ozaki atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -a -z
166 1.2 ozaki atf_check -s exit:0 -o not-match:'2 packets' rump.ifconfig -a -v
167 1.3 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v
168 1.3 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
169 1.2 ozaki
170 1.2 ozaki # ifconfig -l [-bdsu]
171 1.2 ozaki # -l shows only inteface names
172 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l
173 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l
174 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -b
175 1.9 ozaki atf_check -s exit:0 -o not-match:'lo0' rump.ifconfig -l -b
176 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -l -d
177 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -s
178 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -s
179 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -u
180 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -u
181 1.2 ozaki
182 1.2 ozaki # ifconfig -s interface
183 1.2 ozaki # -s interface exists with 0 / 1 if connected / disconnected
184 1.2 ozaki atf_check -s exit:0 -o empty rump.ifconfig -s lo0
185 1.2 ozaki atf_check -s exit:0 -o empty rump.ifconfig -s shmif0
186 1.2 ozaki
187 1.2 ozaki # ifconfig -C
188 1.2 ozaki # -C shows all of the interface cloners available on the system
189 1.15 ozaki atf_check -s exit:0 -o match:'shmif carp lo' rump.ifconfig -C
190 1.2 ozaki
191 1.2 ozaki unset RUMP_SERVER
192 1.2 ozaki }
193 1.2 ozaki
194 1.10 ozaki ifconfig_options_cleanup()
195 1.2 ozaki {
196 1.2 ozaki
197 1.2 ozaki env RUMP_SERVER=${RUMP_SERVER1} rump.halt
198 1.2 ozaki }
199 1.2 ozaki
200 1.4 ozaki
201 1.10 ozaki atf_test_case ifconfig_parameters cleanup
202 1.10 ozaki ifconfig_parameters_head()
203 1.4 ozaki {
204 1.10 ozaki atf_set "descr" "tests of interface parameters"
205 1.4 ozaki atf_set "require.progs" "rump_server"
206 1.4 ozaki }
207 1.4 ozaki
208 1.10 ozaki ifconfig_parameters_body()
209 1.4 ozaki {
210 1.5 ozaki local interval=
211 1.5 ozaki
212 1.4 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1}
213 1.4 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER2}
214 1.4 ozaki
215 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER1}
216 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
217 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus
218 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24
219 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
220 1.4 ozaki unset RUMP_SERVER
221 1.4 ozaki
222 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER2}
223 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
224 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus
225 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.2/24
226 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.3/24 alias
227 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
228 1.4 ozaki unset RUMP_SERVER
229 1.4 ozaki
230 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER1}
231 1.4 ozaki
232 1.4 ozaki # active
233 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:01 active
234 1.4 ozaki atf_check -s exit:0 -o match:'address:.b2:a0:75:00:00:01' \
235 1.4 ozaki rump.ifconfig shmif0
236 1.4 ozaki # down, up
237 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 down
238 1.14 kre atf_check -s not-exit:0 -o ignore -e ignore rump.ping -c 1 \
239 1.6 ozaki -w $TIMEOUT -n 192.168.0.2
240 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
241 1.13 roy atf_check -s exit:0 rump.ifconfig -w 10
242 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT -n 192.168.0.2
243 1.4 ozaki
244 1.4 ozaki # alias
245 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 alias
246 1.13 roy atf_check -s exit:0 -o match:'192.168.1.1/24' rump.ifconfig shmif0
247 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 -alias
248 1.13 roy atf_check -s exit:0 -o not-match:'192.168.1.1/24' rump.ifconfig shmif0
249 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1
250 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2
251 1.4 ozaki atf_check -s exit:0 -o match:'fc00::1' rump.ifconfig shmif0 inet6
252 1.4 ozaki atf_check -s exit:0 -o match:'fc00::2' rump.ifconfig shmif0 inet6
253 1.4 ozaki
254 1.4 ozaki # delete
255 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 alias
256 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 delete
257 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.1.1' rump.ifconfig shmif0 inet
258 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1 delete
259 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.0.1' rump.ifconfig shmif0 inet
260 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 delete
261 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 delete
262 1.4 ozaki atf_check -s exit:0 -o not-match:'fc00::1' rump.ifconfig shmif0 inet6
263 1.4 ozaki atf_check -s exit:0 -o not-match:'fc00::2' rump.ifconfig shmif0 inet6
264 1.7 ozaki # can delete inactive link
265 1.7 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02
266 1.7 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02 delete
267 1.7 ozaki # cannot delete active link
268 1.7 ozaki atf_check -s not-exit:0 -e match:'SIOCDLIFADDR: Device busy' \
269 1.7 ozaki rump.ifconfig shmif0 link b2:a0:75:00:00:01 delete
270 1.4 ozaki
271 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1/24
272 1.4 ozaki
273 1.4 ozaki # arp
274 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 -arp
275 1.4 ozaki atf_check -s not-exit:0 -o ignore -e ignore \
276 1.6 ozaki rump.ping -c 1 -w $TIMEOUT -n 192.168.0.3
277 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.0.3' rump.arp -an
278 1.8 ozaki # The entry shouldn't appear in the routing table anymore
279 1.8 ozaki atf_check -s exit:0 -o not-match:'192.168.0.3' rump.netstat -nr
280 1.4 ozaki
281 1.4 ozaki # netmask
282 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 netmask 255.255.255.0 alias
283 1.4 ozaki atf_check -s exit:0 -o match:'172.16.0/24' rump.netstat -rn -f inet
284 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 delete
285 1.4 ozaki
286 1.4 ozaki # broadcast (does it not work?)
287 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 \
288 1.4 ozaki broadcast 255.255.255.255 alias
289 1.4 ozaki atf_check -s exit:0 -o match:'broadcast 255.255.255.255' \
290 1.4 ozaki rump.ifconfig shmif0 inet
291 1.4 ozaki
292 1.4 ozaki # metric (external only)
293 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 metric 10
294 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 metric 0
295 1.4 ozaki
296 1.4 ozaki # prefixlen
297 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 prefixlen 70
298 1.4 ozaki atf_check -s exit:0 -o match:'fc00::/70' rump.netstat -rn -f inet6
299 1.4 ozaki
300 1.4 ozaki # anycast
301 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 anycast
302 1.12 christos atf_check -s exit:0 -o match:"fc00::2.+$anycast" rump.ifconfig shmif0 inet6
303 1.4 ozaki
304 1.4 ozaki # deprecated
305 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 deprecated
306 1.5 ozaki # Not deprecated immediately. Need to wait nd6_timer that does it is scheduled.
307 1.5 ozaki interval=$(sysctl -n net.inet6.icmp6.nd6_prune)
308 1.5 ozaki atf_check -s exit:0 sleep $((interval + 1))
309 1.12 christos atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6
310 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 -deprecated
311 1.12 christos atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6
312 1.4 ozaki
313 1.4 ozaki # pltime
314 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 pltime 3
315 1.12 christos atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6
316 1.4 ozaki atf_check -s exit:0 sleep 5
317 1.12 christos atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6
318 1.4 ozaki
319 1.4 ozaki # eui64
320 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00:1::0 eui64
321 1.4 ozaki atf_check -s exit:0 -o match:'fc00:1::' rump.ifconfig shmif0 inet6
322 1.4 ozaki
323 1.4 ozaki unset RUMP_SERVER
324 1.4 ozaki }
325 1.4 ozaki
326 1.10 ozaki ifconfig_parameters_cleanup()
327 1.4 ozaki {
328 1.4 ozaki env RUMP_SERVER=${RUMP_SERVER1} rump.halt
329 1.4 ozaki env RUMP_SERVER=${RUMP_SERVER2} rump.halt
330 1.4 ozaki }
331 1.4 ozaki
332 1.16 ozaki ifconfig_up_down_common()
333 1.16 ozaki {
334 1.16 ozaki local family=$1
335 1.16 ozaki local ip=$2
336 1.16 ozaki
337 1.16 ozaki if [ $family = inet6 ]; then
338 1.16 ozaki rump_server_start $RUMP_SERVER1 netinet6
339 1.16 ozaki else
340 1.16 ozaki rump_server_start $RUMP_SERVER1
341 1.16 ozaki fi
342 1.16 ozaki rump_server_add_iface $RUMP_SERVER1 shmif0 bus1
343 1.16 ozaki
344 1.16 ozaki export RUMP_SERVER=$RUMP_SERVER1
345 1.16 ozaki rump.ifconfig shmif0
346 1.16 ozaki
347 1.16 ozaki # Set the same number of trials to make the following test
348 1.16 ozaki # work for both IPv4 and IPv6
349 1.16 ozaki if [ $family = inet6 ]; then
350 1.16 ozaki atf_check -s exit:0 -o ignore \
351 1.17 ozaki rump.sysctl -w net.inet6.ip6.dad_count=5
352 1.16 ozaki else
353 1.16 ozaki atf_check -s exit:0 -o ignore \
354 1.17 ozaki rump.sysctl -w net.inet.ip.dad_count=5
355 1.16 ozaki fi
356 1.16 ozaki
357 1.16 ozaki #
358 1.16 ozaki # Assign an address and up the interface at once
359 1.16 ozaki #
360 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip/24 up
361 1.16 ozaki # UP
362 1.16 ozaki atf_check -s exit:0 \
363 1.16 ozaki -o match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0
364 1.16 ozaki # The address is TENTATIVE
365 1.16 ozaki atf_check -s exit:0 \
366 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0
367 1.16 ozaki # Waiting for DAD completion
368 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10
369 1.16 ozaki # The address left TENTATIVE
370 1.16 ozaki atf_check -s exit:0 \
371 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0
372 1.16 ozaki
373 1.16 ozaki #
374 1.16 ozaki # ifconfig down
375 1.16 ozaki #
376 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 down
377 1.16 ozaki atf_check -s exit:0 \
378 1.16 ozaki -o not-match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0
379 1.16 ozaki # The address becomes DETATCHED
380 1.16 ozaki atf_check -s exit:0 \
381 1.16 ozaki -o match:"$ip.*DETACHED" rump.ifconfig shmif0
382 1.16 ozaki # ifconfig up
383 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
384 1.16 ozaki # The address becomes TENTATIVE
385 1.16 ozaki atf_check -s exit:0 \
386 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0
387 1.16 ozaki # Waiting for DAD completion
388 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10
389 1.16 ozaki # The address left TENTATIVE
390 1.16 ozaki atf_check -s exit:0 \
391 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0
392 1.16 ozaki
393 1.16 ozaki # Clean up
394 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip delete
395 1.16 ozaki
396 1.16 ozaki #
397 1.16 ozaki # Assign an address
398 1.16 ozaki #
399 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip/24
400 1.16 ozaki # UP automatically
401 1.16 ozaki atf_check -s exit:0 \
402 1.16 ozaki -o match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0
403 1.16 ozaki # Need some delay
404 1.16 ozaki sleep 1
405 1.16 ozaki # The IP becomes TENTATIVE
406 1.16 ozaki atf_check -s exit:0 \
407 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0
408 1.16 ozaki # Waiting for DAD completion
409 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10
410 1.16 ozaki # The address left TENTATIVE
411 1.16 ozaki atf_check -s exit:0 \
412 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0
413 1.16 ozaki
414 1.16 ozaki rump_server_destroy_ifaces
415 1.16 ozaki }
416 1.16 ozaki
417 1.16 ozaki atf_test_case ifconfig_up_down_ipv4 cleanup
418 1.16 ozaki ifconfig_up_down_ipv4_head()
419 1.16 ozaki {
420 1.16 ozaki atf_set "descr" "tests of interface up/down (IPv4)"
421 1.16 ozaki atf_set "require.progs" "rump_server"
422 1.16 ozaki }
423 1.16 ozaki
424 1.16 ozaki ifconfig_up_down_ipv4_body()
425 1.16 ozaki {
426 1.16 ozaki
427 1.16 ozaki ifconfig_up_down_common inet 10.0.0.1
428 1.16 ozaki }
429 1.16 ozaki
430 1.16 ozaki ifconfig_up_down_ipv4_cleanup()
431 1.16 ozaki {
432 1.16 ozaki
433 1.16 ozaki $DEBUG && dump
434 1.16 ozaki cleanup
435 1.16 ozaki }
436 1.16 ozaki
437 1.16 ozaki atf_test_case ifconfig_up_down_ipv6 cleanup
438 1.16 ozaki ifconfig_up_down_ipv6_head()
439 1.16 ozaki {
440 1.16 ozaki atf_set "descr" "tests of interface up/down (IPv6)"
441 1.16 ozaki atf_set "require.progs" "rump_server"
442 1.16 ozaki }
443 1.16 ozaki
444 1.16 ozaki ifconfig_up_down_ipv6_body()
445 1.16 ozaki {
446 1.16 ozaki
447 1.16 ozaki ifconfig_up_down_common inet6 fc00::1
448 1.16 ozaki }
449 1.16 ozaki
450 1.16 ozaki ifconfig_up_down_ipv6_cleanup()
451 1.16 ozaki {
452 1.16 ozaki
453 1.16 ozaki $DEBUG && dump
454 1.16 ozaki cleanup
455 1.16 ozaki }
456 1.16 ozaki
457 1.18 ozaki atf_test_case ifconfig_number cleanup
458 1.18 ozaki ifconfig_number_head()
459 1.18 ozaki {
460 1.18 ozaki atf_set "descr" "tests of passing a number (if_index) to ifconfig"
461 1.18 ozaki atf_set "require.progs" "rump_server"
462 1.18 ozaki }
463 1.18 ozaki
464 1.18 ozaki ifconfig_number_body()
465 1.18 ozaki {
466 1.18 ozaki
467 1.18 ozaki rump_server_start $RUMP_SERVER1
468 1.18 ozaki rump_server_add_iface $RUMP_SERVER1 shmif0 bus1
469 1.18 ozaki
470 1.18 ozaki export RUMP_SERVER=$RUMP_SERVER1
471 1.18 ozaki atf_check -s not-exit:0 -e match:'Device not configured' rump.ifconfig 0
472 1.18 ozaki atf_check -s exit:0 rump.ifconfig 1 # lo0
473 1.18 ozaki atf_check -s exit:0 rump.ifconfig 2 # shmif0
474 1.18 ozaki atf_check -s not-exit:0 -e match:'Device not configured' rump.ifconfig 3
475 1.18 ozaki
476 1.18 ozaki rump_server_destroy_ifaces
477 1.18 ozaki }
478 1.18 ozaki
479 1.18 ozaki ifconfig_number_cleanup()
480 1.18 ozaki {
481 1.18 ozaki
482 1.18 ozaki $DEBUG && dump
483 1.18 ozaki cleanup
484 1.18 ozaki }
485 1.18 ozaki
486 1.20 ozaki atf_test_case ifconfig_description cleanup
487 1.20 ozaki ifconfig_description_head()
488 1.20 ozaki {
489 1.20 ozaki atf_set "descr" "tests of setting and unsetting interface description"
490 1.20 ozaki atf_set "require.progs" "rump_server"
491 1.20 ozaki }
492 1.20 ozaki
493 1.20 ozaki ifconfig_description_body()
494 1.20 ozaki {
495 1.20 ozaki
496 1.20 ozaki rump_server_start $RUMP_SERVER1
497 1.20 ozaki
498 1.20 ozaki export RUMP_SERVER=$RUMP_SERVER1
499 1.20 ozaki for descr in description descr; do
500 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr DESCRIPTION-TEST
501 1.20 ozaki atf_check -s exit:0 -o match:"DESCRIPTION-TEST" rump.ifconfig lo0
502 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr DESCRIPTION-TEST-MODIFIED
503 1.20 ozaki atf_check -s exit:0 -o match:"DESCRIPTION-TEST-MODIFIED" rump.ifconfig lo0
504 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 -$descr
505 1.20 ozaki atf_check -s exit:0 -o not-match:'DESCRIPTION-TEST-MODIFIED' rump.ifconfig lo0
506 1.20 ozaki
507 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr `printf "%063d" 0`
508 1.20 ozaki atf_check -s not-exit:0 -e match:"description too long" rump.ifconfig lo0 $descr `printf "%064d" 0`
509 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr ""
510 1.20 ozaki done
511 1.20 ozaki }
512 1.20 ozaki
513 1.20 ozaki ifconfig_description_cleanup()
514 1.20 ozaki {
515 1.20 ozaki
516 1.20 ozaki $DEBUG && dump
517 1.20 ozaki cleanup
518 1.20 ozaki }
519 1.20 ozaki
520 1.1 ozaki atf_init_test_cases()
521 1.1 ozaki {
522 1.1 ozaki
523 1.10 ozaki atf_add_test_case ifconfig_create_destroy
524 1.10 ozaki atf_add_test_case ifconfig_options
525 1.10 ozaki atf_add_test_case ifconfig_parameters
526 1.16 ozaki atf_add_test_case ifconfig_up_down_ipv4
527 1.16 ozaki atf_add_test_case ifconfig_up_down_ipv6
528 1.18 ozaki atf_add_test_case ifconfig_number
529 1.20 ozaki atf_add_test_case ifconfig_description
530 1.1 ozaki }
531