xref: /openbsd/regress/sbin/ifconfig/Makefile (revision 9cfd9950)
1# $OpenBSD: Makefile,v 1.7 2024/10/19 07:10:55 anton Exp $
2
3# Copyright (c) 2019 Alexander Bluhm <bluhm@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
17# test ifconfig address configuration for ethernet and point-to-point
18
19IFCONFIG ?=	${SUDO} ${KTRACE} /sbin/ifconfig
20IFADDR =	${SUDO} ${KTRACE} ./ifaddr
21
22ETHER_IF ?=	vether99
23ETHER_ADDR ?=	10.188.254.74
24ETHER_ADDR6 ?=	fdd7:e83e:66bc:254::74
25ETHER_NET =	${ETHER_ADDR:C/\.[0-9][0-9]*$//}
26ETHER_NET6 =	${ETHER_ADDR6:C/::[0-9a-f:]*$/::/}
27PPP_IF ?=	tun99
28PPP_ADDR ?=	10.188.253.74
29PPP_ADDR6 ?=	fdd7:e83e:66bc:253::74
30PPP_DEST ?=	10.188.253.75
31PPP_DEST6 ?=	fdd7:e83e:66bc:253::75
32PPP_NET =	${PPP_ADDR:C/\.[0-9][0-9]*$//}
33PPP_NET6 =	${PPP_ADDR6:C/::[0-9a-f:]*$/::/}
34
35PROG =		ifaddr
36
37CLEANFILES =	ifconfig.out ktrace.out
38
39### ether
40
41REGRESS_TARGETS +=	run-ether-addr
42run-ether-addr:
43	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR}
44	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
45	grep 'inet ${ETHER_ADDR} ' ifconfig.out
46
47REGRESS_TARGETS +=	run-ether-inet
48run-ether-inet:
49	${IFCONFIG} ${ETHER_IF} inet ${ETHER_ADDR}
50	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
51	grep 'inet ${ETHER_ADDR} ' ifconfig.out
52
53REGRESS_TARGETS +=	run-ether-netmask
54run-ether-netmask:
55	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
56	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
57	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
58
59REGRESS_TARGETS +=	run-ether-contiguous-netmask
60run-ether-contiguous-netmask:
61	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
62	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} delete
63	! ${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.64
64	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
65	! grep 'inet ${ETHER_ADDR} ' ifconfig.out
66
67REGRESS_TARGETS +=	run-ether-len
68run-ether-len:
69	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR}/24
70	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
71	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
72
73REGRESS_TARGETS +=	run-ether-prefixlen
74run-ether-prefixlen:
75	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} prefixlen 24
76	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
77	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
78
79REGRESS_TARGETS +=	run-ether-hexmask
80run-ether-hexmask:
81	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 0xffffff00
82	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
83	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
84
85REGRESS_TARGETS +=	run-ether-broadcast
86run-ether-broadcast:
87	${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR}/24
88	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
89	grep 'inet ${ETHER_ADDR} .* broadcast ${ETHER_NET}.255$$' ifconfig.out
90
91REGRESS_TARGETS +=	run-ether-replace
92run-ether-replace:
93	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
94	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24
95	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
96	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
97	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
98
99REGRESS_TARGETS +=	run-ether-duplicate
100run-ether-duplicate:
101	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
102	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
103	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
104	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
105	grep -c 'inet ' ifconfig.out | grep -q 1
106
107REGRESS_TARGETS +=	run-ether-host
108run-ether-host:
109	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
110	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/32
111	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
112	grep 'inet ${ETHER_NET}.1 netmask 0xffffffff$$' ifconfig.out
113	grep -c 'inet ' ifconfig.out | grep -q 1
114
115REGRESS_TARGETS +=	run-ether-alias
116run-ether-alias:
117	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
118	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
119	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
120	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
121	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
122
123REGRESS_TARGETS +=	run-ether-alias-duplicate
124run-ether-alias-duplicate:
125	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
126	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24 alias
127	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
128	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
129	grep -c 'inet ' ifconfig.out | grep -q 1
130
131REGRESS_TARGETS +=	run-ether-replace-first
132run-ether-replace-first:
133	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
134	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
135	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.3/24
136	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
137	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
138	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
139	grep 'inet ${ETHER_NET}.3 ' ifconfig.out
140
141REGRESS_TARGETS +=	run-ether-alias-host
142run-ether-alias-host:
143	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
144	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/32 alias
145	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
146	grep 'inet ${ETHER_NET}.1 netmask 0xffffffff$$' ifconfig.out
147	grep -c 'inet ' ifconfig.out | grep -q 1
148
149REGRESS_TARGETS +=	run-ether-change-netmask
150run-ether-change-netmask:
151	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
152	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
153	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/32
154	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
155	grep 'inet ${ETHER_NET}.1 netmask 0xffffffff$$' ifconfig.out
156	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
157	grep -c 'inet ' ifconfig.out | grep -q 2
158
159REGRESS_TARGETS +=	run-ether-delete-netmask
160run-ether-delete-netmask:
161	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
162	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
163	# XXX ifconfig deletes .1 and changes .2 netmask
164	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/32
165	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
166	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
167	grep 'inet ${ETHER_NET}.2 netmask 0xffffffff$$' ifconfig.out
168	grep -c 'inet ' ifconfig.out | grep -q 1
169
170REGRESS_TARGETS +=	run-ether-alias-netmask
171run-ether-alias-netmask:
172	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
173	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
174	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/32 alias
175	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
176	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
177	grep 'inet ${ETHER_NET}.2 netmask 0xffffffff$$' ifconfig.out
178	grep -c 'inet ${ETHER_NET}.2 ' ifconfig.out | grep -q 1
179
180REGRESS_TARGETS +=	run-ether-delete
181run-ether-delete:
182	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
183	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1 delete
184	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
185	! grep 'inet ' ifconfig.out
186
187REGRESS_TARGETS +=	run-ether-delete-first
188run-ether-delete-first:
189	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
190	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
191	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1 delete
192	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
193	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
194	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
195
196REGRESS_TARGETS +=	run-ether-delete-second
197run-ether-delete-second:
198	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.1/24
199	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2/24 alias
200	${IFCONFIG} ${ETHER_IF} ${ETHER_NET}.2 delete
201	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
202	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
203	! grep 'inet ${ETHER_NET}.2 ' ifconfig.out
204
205### ppp
206
207REGRESS_TARGETS +=	run-ppp-addr
208run-ppp-addr:
209	${IFCONFIG} ${PPP_IF} ${PPP_ADDR}
210	/sbin/ifconfig ${PPP_IF} >ifconfig.out
211	grep 'inet ${PPP_ADDR} ' ifconfig.out
212
213REGRESS_TARGETS +=	run-ppp-inet
214run-ppp-inet:
215	${IFCONFIG} ${PPP_IF} inet ${PPP_ADDR}
216	/sbin/ifconfig ${PPP_IF} >ifconfig.out
217	grep 'inet ${PPP_ADDR} ' ifconfig.out
218
219REGRESS_TARGETS +=	run-ppp-netmask
220run-ppp-netmask:
221	${IFCONFIG} ${PPP_IF} ${PPP_ADDR} netmask 255.255.255.0
222	/sbin/ifconfig ${PPP_IF} >ifconfig.out
223	grep 'inet ${PPP_ADDR} .* netmask 0xffffff00$$' ifconfig.out
224
225REGRESS_TARGETS +=	run-ppp-len
226run-ppp-len:
227	${IFCONFIG} ${PPP_IF} ${PPP_ADDR}/24
228	/sbin/ifconfig ${PPP_IF} >ifconfig.out
229	grep 'inet ${PPP_ADDR} .* netmask 0xffffff00$$' ifconfig.out
230
231REGRESS_TARGETS +=	run-ppp-prefixlen
232run-ppp-prefixlen:
233	${IFCONFIG} ${PPP_IF} ${PPP_ADDR} prefixlen 24
234	/sbin/ifconfig ${PPP_IF} >ifconfig.out
235	grep 'inet ${PPP_ADDR} .* netmask 0xffffff00$$' ifconfig.out
236
237REGRESS_TARGETS +=	run-ppp-destination
238run-ppp-destination:
239	${IFCONFIG} ${PPP_IF} ${PPP_ADDR}/24 ${PPP_DEST}
240	/sbin/ifconfig ${PPP_IF} >ifconfig.out
241	grep 'inet ${PPP_ADDR} --> ${PPP_DEST} ' ifconfig.out
242
243REGRESS_TARGETS +=	run-ppp-replace
244run-ppp-replace:
245	${IFCONFIG} ${PPP_IF} ${PPP_NET}.1/24 ${PPP_DEST}
246	${IFCONFIG} ${PPP_IF} ${PPP_NET}.2/24 ${PPP_DEST}
247	/sbin/ifconfig ${PPP_IF} >ifconfig.out
248	grep 'inet ${PPP_NET}.2 --> ${PPP_DEST} ' ifconfig.out
249	! grep 'inet ${PPP_NET}.1 --> ${PPP_DEST} ' ifconfig.out
250
251REGRESS_TARGETS +=	run-ppp-alias
252run-ppp-alias:
253	${IFCONFIG} ${PPP_IF} ${PPP_NET}.1/24 ${PPP_DEST}
254	${IFCONFIG} ${PPP_IF} ${PPP_NET}.2/24 ${PPP_DEST} alias
255	/sbin/ifconfig ${PPP_IF} >ifconfig.out
256	grep 'inet ${PPP_NET}.1 --> ${PPP_DEST} ' ifconfig.out
257	grep 'inet ${PPP_NET}.2 --> ${PPP_DEST} ' ifconfig.out
258
259### ifaddr
260
261REGRESS_TARGETS +=	run-ether-ifaddr-set
262run-ether-ifaddr-set:
263	${IFADDR} ${ETHER_IF} ${ETHER_ADDR}
264	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
265	grep 'inet ${ETHER_ADDR} ' ifconfig.out
266
267REGRESS_TARGETS +=	run-ether-ifaddr-get
268run-ether-ifaddr-get:
269	${IFADDR} ${ETHER_IF} ${ETHER_ADDR}
270	${KTRACE} ./ifaddr ${ETHER_IF} >ifconfig.out
271	grep 'inet ${ETHER_ADDR} ' ifconfig.out
272
273REGRESS_TARGETS +=	run-ether-ifaddr-netmask
274run-ether-ifaddr-netmask:
275	${IFADDR} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
276	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
277	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
278
279REGRESS_TARGETS +=	run-ether-ifaddr-contiguous-netmask
280run-ether-ifaddr-contiguous-netmask:
281	${IFADDR} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
282	${IFADDR} ${ETHER_IF} ${ETHER_ADDR} delete
283	! ${IFADDR} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.64
284	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
285	! grep 'inet ${ETHER_ADDR} netmask 0xffffff' ifconfig.out
286
287REGRESS_TARGETS +=	run-ether-ifaddr-prefixlen
288run-ether-ifaddr-prefixlen:
289	${IFADDR} ${ETHER_IF} ${ETHER_ADDR}/24
290	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
291	grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
292
293REGRESS_TARGETS +=	run-ppp-ifaddr-destination
294# XXX uses unsupported SIOCSIFDSTADDR ioctl command.
295REGRESS_EXPECTED_FAILURES += run-ppp-ifaddr-destination
296run-ppp-ifaddr-destination:
297	${IFADDR} ${PPP_IF} ${PPP_ADDR} ${PPP_DEST}
298	/sbin/ifconfig ${PPP_IF} >ifconfig.out
299	grep 'inet ${PPP_ADDR} --> ${PPP_DEST} ' ifconfig.out
300
301REGRESS_TARGETS +=	run-ether-ifaddr-broadcast
302run-ether-ifaddr-broadcast:
303	${IFADDR} ${ETHER_IF} ${ETHER_ADDR} broadcast ${ETHER_NET}.255
304	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
305	grep 'inet ${ETHER_ADDR} .* broadcast ${ETHER_NET}.255$$' ifconfig.out
306
307REGRESS_TARGETS +=	run-ether-ifaddr-alias
308run-ether-ifaddr-alias:
309	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
310	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 alias
311	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
312	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
313	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
314
315REGRESS_TARGETS +=	run-ether-ifaddr-change-netmask
316run-ether-ifaddr-change-netmask:
317	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
318	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 alias
319	${IFADDR} ${ETHER_IF} netmask 255.255.255.255
320	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
321	grep 'inet ${ETHER_NET}.1 netmask 0xffffffff ' ifconfig.out
322	grep 'inet ${ETHER_NET}.2 netmask 0xffffff00 ' ifconfig.out
323
324REGRESS_TARGETS +=	run-ppp-ifaddr-change-destination
325# XXX uses unsupported SIOCSIFDSTADDR ioctl command.
326REGRESS_EXPECTED_FAILURES += run-ppp-ifaddr-change-destination
327run-ppp-ifaddr-change-destination:
328	${IFADDR} ${PPP_IF} ${PPP_NET}.1 ${PPP_NET}.11
329	${IFADDR} ${PPP_IF} ${PPP_NET}.2 ${PPP_NET}.12 alias
330	${IFADDR} ${PPP_IF} ipdst ${PPP_NET}.13
331	/sbin/ifconfig ${PPP_IF} >ifconfig.out
332	grep 'inet ${PPP_NET}.1 --> ${PPP_NET}.13 ' ifconfig.out
333	grep 'inet ${PPP_NET}.2 --> ${PPP_NET}.12 ' ifconfig.out
334
335REGRESS_TARGETS +=	run-ether-ifaddr-change-broadcast
336run-ether-ifaddr-change-broadcast:
337	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24 broadcast ${ETHER_NET}.255
338	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 broadcast ${ETHER_NET}.255 alias
339	${IFADDR} ${ETHER_IF} broadcast 255.255.255.255
340	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
341	grep 'inet ${ETHER_NET}.1 .* broadcast 255.255.255.255$$' ifconfig.out
342	grep 'inet ${ETHER_NET}.2 .* broadcast ${ETHER_NET}.255$$' ifconfig.out
343
344REGRESS_TARGETS +=	run-ether-ifaddr-duplicate
345run-ether-ifaddr-duplicate:
346	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
347	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/16 alias
348	# XXX replace the first address and create two identical addresses
349	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24
350	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
351	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
352	grep 'inet ${ETHER_NET}.2 netmask 0xffffff00 ' ifconfig.out
353	grep -c 'inet ' ifconfig.out | grep -q 2
354
355### ether-inet6
356
357REGRESS_TARGETS +=	run-ether-inet6-eui64
358run-ether-inet6-eui64:
359	${IFCONFIG} ${ETHER_IF} inet6 eui64
360	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
361	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${ETHER_IF} ' ifconfig.out
362
363REGRESS_TARGETS +=	run-ether-inet6-addr
364run-ether-inet6-addr:
365	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}
366	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
367	grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
368	# setting an address creates eui64 automatically
369	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${ETHER_IF} ' ifconfig.out
370
371REGRESS_TARGETS +=	run-ether-inet6-netmask
372run-ether-inet6-netmask:
373	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
374	    netmask ffff:ffff:ffff:ffff:ffff::
375	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
376	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
377
378REGRESS_TARGETS +=	run-ether-inet6-contiguous-netmask
379run-ether-inet6-contiguous-netmask:
380	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
381	    netmask ffff:ffff:ffff:ffff:ffff::
382	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
383	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
384	    netmask ffff:ffff:ffff:ffff:ffff:4000::
385	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
386	! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
387
388REGRESS_TARGETS +=	run-ether-inet6-contiguous-gap
389run-ether-inet6-contiguous-gap:
390	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::
391	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
392	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::ff00:8
393	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
394	! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
395
396REGRESS_TARGETS +=	run-ether-inet6-len
397run-ether-inet6-len:
398	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}/80
399	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
400	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
401
402REGRESS_TARGETS +=	run-ether-inet6-prefixlen
403run-ether-inet6-prefixlen:
404	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} prefixlen 80
405	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
406	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
407
408REGRESS_TARGETS +=	run-ether-inet6-noreplace
409run-ether-inet6-noreplace:
410	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
411	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2
412	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
413	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
414	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
415
416REGRESS_TARGETS +=	run-ether-inet6-duplicate
417run-ether-inet6-duplicate:
418	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
419	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
420	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
421	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
422	grep -c 'inet6 ${ETHER_NET6}' ifconfig.out | grep -q 1
423
424REGRESS_TARGETS +=	run-ether-inet6-host
425run-ether-inet6-host:
426	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1/128
427	# changing netmask of an exisintg address is not allowed
428	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1/64
429	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
430	grep 'inet6 ${ETHER_NET6}1 prefixlen 128 ' ifconfig.out
431	grep -c 'inet6 ${ETHER_NET6}' ifconfig.out | grep -q 1
432
433REGRESS_TARGETS +=	run-ether-inet6-alias
434run-ether-inet6-alias:
435	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
436	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
437	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
438	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
439	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
440
441REGRESS_TARGETS +=	run-ether-inet6-delete
442run-ether-inet6-delete:
443	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
444	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1 delete
445	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
446	! grep 'inet6 ${ETHER_NET6}' ifconfig.out
447
448REGRESS_TARGETS +=	run-ether-inet6-delete-first
449run-ether-inet6-delete-first:
450	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
451	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
452	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1 delete
453	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
454	! grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
455	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
456
457REGRESS_TARGETS +=	run-ether-inet6-delete-second
458run-ether-inet6-delete-second:
459	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
460	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
461	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 delete
462	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
463	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
464	! grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
465
466### ppp-inet6
467
468REGRESS_TARGETS +=	run-ppp-inet6-eui64
469run-ppp-inet6-eui64:
470	${IFCONFIG} ${PPP_IF} inet6 eui64
471	/sbin/ifconfig ${PPP_IF} >ifconfig.out
472	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${PPP_IF} ' ifconfig.out
473
474REGRESS_TARGETS +=	run-ppp-inet6-addr
475run-ppp-inet6-addr:
476	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6}
477	/sbin/ifconfig ${PPP_IF} >ifconfig.out
478	grep 'inet6 ${PPP_ADDR6} ' ifconfig.out
479	# setting an address creates eui64 automatically
480	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${PPP_IF} ' ifconfig.out
481
482REGRESS_TARGETS +=	run-ppp-inet6-len
483run-ppp-inet6-len:
484	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6}/80
485	/sbin/ifconfig ${PPP_IF} >ifconfig.out
486	grep 'inet6 ${PPP_ADDR6} .* prefixlen 80 ' ifconfig.out
487
488REGRESS_TARGETS +=	run-ppp-inet6-destination
489run-ppp-inet6-destination:
490	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6} ${PPP_DEST6}
491	/sbin/ifconfig ${PPP_IF} >ifconfig.out
492	grep 'inet6 ${PPP_ADDR6} --> ${PPP_DEST6} ' ifconfig.out
493
494REGRESS_TARGETS +=	run-ppp-inet6-noreplace
495run-ppp-inet6-noreplace:
496	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}1 ${PPP_DEST6}
497	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}2 ${PPP_DEST6}
498	/sbin/ifconfig ${PPP_IF} >ifconfig.out
499	grep 'inet6 ${PPP_NET6}1 --> ${PPP_DEST6} ' ifconfig.out
500	grep 'inet6 ${PPP_NET6}2 --> ${PPP_DEST6} ' ifconfig.out
501
502REGRESS_TARGETS +=	run-ppp-inet6-alias
503run-ppp-inet6-alias:
504	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}1 ${PPP_DEST6}
505	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}2 ${PPP_DEST6} alias
506	/sbin/ifconfig ${PPP_IF} >ifconfig.out
507	grep 'inet6 ${PPP_NET6}1 --> ${PPP_DEST6} ' ifconfig.out
508	grep 'inet6 ${PPP_NET6}2 --> ${PPP_DEST6} ' ifconfig.out
509
510### setup cleanup
511
512REGRESS_ROOT_TARGETS =	${REGRESS_TARGETS}
513
514${REGRESS_TARGETS:Mrun-*-ifaddr-*}: ifaddr
515
516${REGRESS_TARGETS:Mrun-ether-*}: setup-ether
517setup-ether:
518	${SUDO} /sbin/ifconfig ${ETHER_IF} destroy 2>/dev/null || true
519	${SUDO} /sbin/ifconfig ${ETHER_IF} create
520
521${REGRESS_TARGETS:Mrun-ppp-*}: setup-ppp
522setup-ppp:
523	${SUDO} /sbin/ifconfig ${PPP_IF} destroy 2>/dev/null || true
524	${SUDO} /sbin/ifconfig ${PPP_IF} create
525
526REGRESS_CLEANUP =	cleanup
527cleanup:
528	${SUDO} /sbin/ifconfig ${ETHER_IF} destroy || true
529	${SUDO} /sbin/ifconfig ${PPP_IF} destroy || true
530
531### check
532
533check: check-targets
534
535check-targets:
536	# REGRESS_TARGETS must not contain duplicates, prevent copy paste error
537	! echo ${REGRESS_TARGETS} | tr ' ' '\n' | sort | uniq -d | grep .
538
539.include <bsd.regress.mk>
540