xref: /openbsd/regress/sbin/ifconfig/Makefile (revision 097a140d)
1# $OpenBSD: Makefile,v 1.6 2020/12/17 00:51:12 bluhm 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
294run-ppp-ifaddr-destination:
295	${IFADDR} ${PPP_IF} ${PPP_ADDR} ${PPP_DEST}
296	/sbin/ifconfig ${PPP_IF} >ifconfig.out
297	grep 'inet ${PPP_ADDR} --> ${PPP_DEST} ' ifconfig.out
298
299REGRESS_TARGETS +=	run-ether-ifaddr-broadcast
300run-ether-ifaddr-broadcast:
301	${IFADDR} ${ETHER_IF} ${ETHER_ADDR} broadcast ${ETHER_NET}.255
302	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
303	grep 'inet ${ETHER_ADDR} .* broadcast ${ETHER_NET}.255$$' ifconfig.out
304
305REGRESS_TARGETS +=	run-ether-ifaddr-alias
306run-ether-ifaddr-alias:
307	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
308	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 alias
309	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
310	grep 'inet ${ETHER_NET}.1 ' ifconfig.out
311	grep 'inet ${ETHER_NET}.2 ' ifconfig.out
312
313REGRESS_TARGETS +=	run-ether-ifaddr-change-netmask
314run-ether-ifaddr-change-netmask:
315	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
316	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 alias
317	${IFADDR} ${ETHER_IF} netmask 255.255.255.255
318	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
319	grep 'inet ${ETHER_NET}.1 netmask 0xffffffff ' ifconfig.out
320	grep 'inet ${ETHER_NET}.2 netmask 0xffffff00 ' ifconfig.out
321
322REGRESS_TARGETS +=	run-ppp-ifaddr-change-destination
323run-ppp-ifaddr-change-destination:
324	${IFADDR} ${PPP_IF} ${PPP_NET}.1 ${PPP_NET}.11
325	${IFADDR} ${PPP_IF} ${PPP_NET}.2 ${PPP_NET}.12 alias
326	${IFADDR} ${PPP_IF} ipdst ${PPP_NET}.13
327	/sbin/ifconfig ${PPP_IF} >ifconfig.out
328	grep 'inet ${PPP_NET}.1 --> ${PPP_NET}.13 ' ifconfig.out
329	grep 'inet ${PPP_NET}.2 --> ${PPP_NET}.12 ' ifconfig.out
330
331REGRESS_TARGETS +=	run-ether-ifaddr-change-broadcast
332run-ether-ifaddr-change-broadcast:
333	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24 broadcast ${ETHER_NET}.255
334	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24 broadcast ${ETHER_NET}.255 alias
335	${IFADDR} ${ETHER_IF} broadcast 255.255.255.255
336	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
337	grep 'inet ${ETHER_NET}.1 .* broadcast 255.255.255.255$$' ifconfig.out
338	grep 'inet ${ETHER_NET}.2 .* broadcast ${ETHER_NET}.255$$' ifconfig.out
339
340REGRESS_TARGETS +=	run-ether-ifaddr-duplicate
341run-ether-ifaddr-duplicate:
342	${IFADDR} ${ETHER_IF} ${ETHER_NET}.1/24
343	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/16 alias
344	# XXX replace the first address and create two identical addresses
345	${IFADDR} ${ETHER_IF} ${ETHER_NET}.2/24
346	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
347	! grep 'inet ${ETHER_NET}.1 ' ifconfig.out
348	grep 'inet ${ETHER_NET}.2 netmask 0xffffff00 ' ifconfig.out
349	grep -c 'inet ' ifconfig.out | grep -q 2
350
351### ether-inet6
352
353REGRESS_TARGETS +=	run-ether-inet6-eui64
354run-ether-inet6-eui64:
355	${IFCONFIG} ${ETHER_IF} inet6 eui64
356	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
357	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${ETHER_IF} ' ifconfig.out
358
359REGRESS_TARGETS +=	run-ether-inet6-addr
360run-ether-inet6-addr:
361	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}
362	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
363	grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
364	# setting an address creates eui64 automatically
365	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${ETHER_IF} ' ifconfig.out
366
367REGRESS_TARGETS +=	run-ether-inet6-netmask
368run-ether-inet6-netmask:
369	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
370	    netmask ffff:ffff:ffff:ffff:ffff::
371	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
372	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
373
374REGRESS_TARGETS +=	run-ether-inet6-contiguous-netmask
375run-ether-inet6-contiguous-netmask:
376	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
377	    netmask ffff:ffff:ffff:ffff:ffff::
378	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
379	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
380	    netmask ffff:ffff:ffff:ffff:ffff:4000::
381	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
382	! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
383
384REGRESS_TARGETS +=	run-ether-inet6-contiguous-gap
385run-ether-inet6-contiguous-gap:
386	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::
387	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
388	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::ff00:8
389	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
390	! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
391
392REGRESS_TARGETS +=	run-ether-inet6-len
393run-ether-inet6-len:
394	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}/80
395	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
396	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
397
398REGRESS_TARGETS +=	run-ether-inet6-prefixlen
399run-ether-inet6-prefixlen:
400	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} prefixlen 80
401	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
402	grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
403
404REGRESS_TARGETS +=	run-ether-inet6-noreplace
405run-ether-inet6-noreplace:
406	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
407	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2
408	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
409	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
410	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
411
412REGRESS_TARGETS +=	run-ether-inet6-duplicate
413run-ether-inet6-duplicate:
414	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
415	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
416	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
417	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
418	grep -c 'inet6 ${ETHER_NET6}' ifconfig.out | grep -q 1
419
420REGRESS_TARGETS +=	run-ether-inet6-host
421run-ether-inet6-host:
422	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1/128
423	# changing netmask of an exisintg address is not allowed
424	! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1/64
425	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
426	grep 'inet6 ${ETHER_NET6}1 prefixlen 128 ' ifconfig.out
427	grep -c 'inet6 ${ETHER_NET6}' ifconfig.out | grep -q 1
428
429REGRESS_TARGETS +=	run-ether-inet6-alias
430run-ether-inet6-alias:
431	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
432	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
433	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
434	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
435	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
436
437REGRESS_TARGETS +=	run-ether-inet6-delete
438run-ether-inet6-delete:
439	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
440	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1 delete
441	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
442	! grep 'inet6 ${ETHER_NET6}' ifconfig.out
443
444REGRESS_TARGETS +=	run-ether-inet6-delete-first
445run-ether-inet6-delete-first:
446	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
447	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
448	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1 delete
449	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
450	! grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
451	grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
452
453REGRESS_TARGETS +=	run-ether-inet6-delete-second
454run-ether-inet6-delete-second:
455	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}1
456	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 alias
457	${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_NET6}2 delete
458	/sbin/ifconfig ${ETHER_IF} >ifconfig.out
459	grep 'inet6 ${ETHER_NET6}1 ' ifconfig.out
460	! grep 'inet6 ${ETHER_NET6}2 ' ifconfig.out
461
462### ppp-inet6
463
464REGRESS_TARGETS +=	run-ppp-inet6-eui64
465run-ppp-inet6-eui64:
466	${IFCONFIG} ${PPP_IF} inet6 eui64
467	/sbin/ifconfig ${PPP_IF} >ifconfig.out
468	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${PPP_IF} ' ifconfig.out
469
470REGRESS_TARGETS +=	run-ppp-inet6-addr
471run-ppp-inet6-addr:
472	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6}
473	/sbin/ifconfig ${PPP_IF} >ifconfig.out
474	grep 'inet6 ${PPP_ADDR6} ' ifconfig.out
475	# setting an address creates eui64 automatically
476	grep 'inet6 fe80::[0-9a-f:]*ff:fe[0-9a-f:]*%${PPP_IF} ' ifconfig.out
477
478REGRESS_TARGETS +=	run-ppp-inet6-len
479run-ppp-inet6-len:
480	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6}/80
481	/sbin/ifconfig ${PPP_IF} >ifconfig.out
482	grep 'inet6 ${PPP_ADDR6} .* prefixlen 80 ' ifconfig.out
483
484REGRESS_TARGETS +=	run-ppp-inet6-destination
485run-ppp-inet6-destination:
486	${IFCONFIG} ${PPP_IF} inet6 ${PPP_ADDR6} ${PPP_DEST6}
487	/sbin/ifconfig ${PPP_IF} >ifconfig.out
488	grep 'inet6 ${PPP_ADDR6} --> ${PPP_DEST6} ' ifconfig.out
489
490REGRESS_TARGETS +=	run-ppp-inet6-noreplace
491run-ppp-inet6-noreplace:
492	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}1 ${PPP_DEST6}
493	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}2 ${PPP_DEST6}
494	/sbin/ifconfig ${PPP_IF} >ifconfig.out
495	grep 'inet6 ${PPP_NET6}1 --> ${PPP_DEST6} ' ifconfig.out
496	grep 'inet6 ${PPP_NET6}2 --> ${PPP_DEST6} ' ifconfig.out
497
498REGRESS_TARGETS +=	run-ppp-inet6-alias
499run-ppp-inet6-alias:
500	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}1 ${PPP_DEST6}
501	${IFCONFIG} ${PPP_IF} inet6 ${PPP_NET6}2 ${PPP_DEST6} alias
502	/sbin/ifconfig ${PPP_IF} >ifconfig.out
503	grep 'inet6 ${PPP_NET6}1 --> ${PPP_DEST6} ' ifconfig.out
504	grep 'inet6 ${PPP_NET6}2 --> ${PPP_DEST6} ' ifconfig.out
505
506### setup cleanup
507
508REGRESS_ROOT_TARGETS =	${REGRESS_TARGETS}
509
510${REGRESS_TARGETS:Mrun-*-ifaddr-*}: ifaddr
511
512${REGRESS_TARGETS:Mrun-ether-*}: setup-ether
513setup-ether:
514	${SUDO} /sbin/ifconfig ${ETHER_IF} destroy 2>/dev/null || true
515	${SUDO} /sbin/ifconfig ${ETHER_IF} create
516
517${REGRESS_TARGETS:Mrun-ppp-*}: setup-ppp
518setup-ppp:
519	${SUDO} /sbin/ifconfig ${PPP_IF} destroy 2>/dev/null || true
520	${SUDO} /sbin/ifconfig ${PPP_IF} create
521
522REGRESS_CLEANUP =	cleanup
523cleanup:
524	${SUDO} /sbin/ifconfig ${ETHER_IF} destroy || true
525	${SUDO} /sbin/ifconfig ${PPP_IF} destroy || true
526
527### check
528
529check: check-targets
530
531check-targets:
532	# REGRESS_TARGETS must not contain duplicates, prevent copy paste error
533	! echo ${REGRESS_TARGETS} | tr ' ' '\n' | sort | uniq -d | grep .
534
535.include <bsd.regress.mk>
536