xref: /openbsd/regress/sbin/pfctl/Makefile (revision 7b36286a)
1# $OpenBSD: Makefile,v 1.203 2008/05/09 02:44:55 markus Exp $
2
3# TARGETS
4# pf: feed pfNN.in through pfctl and check wether the output matches pfNN.ok
5# selfpf: feed pfctl output through pfctl again and verify it stays the same
6# pfail: invalid rulesets pfctl must reject; pfailNN.in and pfailNN.ok
7# pfsetup: set up lo1 and perform more tests
8# pfr: table tests
9# pfsimple: just check wether pfctl accepts a given ruleset, not checking output
10# pfload: load ruleset into anchor regress and verify pfctl -vvsr
11# pfoptimize: as pfload, with -o flag to pfctl
12# pfopt: as target pf, but supply extra command line options
13
14PFTESTS=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
15PFTESTS+=28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
16PFTESTS+=51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
17PFTESTS+=74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
18PFTESTS+=97
19PFFAIL=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 23 24 25 27
20PFFAIL+=28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
21PFSIMPLE=1 2
22PFSETUP=1 2 3 4
23PFLOAD=1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29
24PFLOAD+=30 31 32 34 36 38 39 40 44 46 47 48 49 54 56 60 61 65 66 67 68 69 70 71
25PFLOAD+=72 73 74 75 76 77 78 79 80 81 82 84 87 88 89 90 91 92
26PFALTQ=1 2 3 4 5 6 7 8 9 10 11 12 13 14
27# disabled; no altq in anchors
28# PFLOAD+=33 35 37 42 43 45 51 58 59 62 63 64
29# only testing parser, load test would be useless
30# PFLOAD+=6 22 41 50 52 53 55 57 83 85 86
31PFTABLE=1 2 3 4 5 6 7 8 9 10 11 12 13
32PFOPT=1 2 3 4 5 6
33PFIF2IP=1 2 3
34PFCHKSUM=1 2 3
35
36SHELL=/bin/sh
37
38.MAIN: all
39
40.ifmake !obj && !clean && !cleandir && !depend && !regress
41.if (${.TARGET} != all && ! make(all)) || (${.TARGET} == all)
42.BEGIN:
43	-${SUDO} ifconfig lo1000000 create
44	-${SUDO} ifconfig tun1000000 create
45	-${SUDO} ifconfig tun1000001 create
46
47.END:
48	-${SUDO} ifconfig lo1000000 destroy
49	-${SUDO} ifconfig tun1000000 destroy
50	-${SUDO} ifconfig tun1000001 destroy
51
52.INTERRUPT:
53	-${SUDO} ifconfig lo1000000 destroy
54	-${SUDO} ifconfig lo1000010 destroy
55	-${SUDO} ifconfig tun1000000 destroy
56	-${SUDO} ifconfig tun1000001 destroy
57.endif
58.endif
59
60.for n in ${PFFAIL}
61PFAIL_TARGETS+=pfail${n}
62PFAIL_UPDATES+=pfail${n}-update
63
64pfail${n}:
65	pfctl -o none -nv -f - < ${.CURDIR}/pfail${n}.in 2>&1 | \
66	    diff -u ${.CURDIR}/pfail${n}.ok /dev/stdin
67
68pfail${n}-update:
69	if pfctl -o none -nv -f - < ${.CURDIR}/pfail${n}.in > \
70	    ${.CURDIR}/pfail${n}.ok 2>&1; then \
71		true; \
72	fi;
73
74.endfor
75
76pfail:		${PFAIL_TARGETS}
77pfail-update:	${PFAIL_UPDATES}
78REGRESS_TARGETS+=pfail
79UPDATE_TARGETS+=pfail-update
80
81.for n in ${PFTESTS}
82PF_TARGETS+=pf${n}
83PF_UPDATES+=pf${n}-update
84
85pf${n}:
86	pfctl -o none -nv -f - < ${.CURDIR}/pf${n}.in | \
87	    diff -u ${.CURDIR}/pf${n}.ok /dev/stdin
88
89pf${n}-update:
90	pfctl -o none -nv -f - < ${.CURDIR}/pf${n}.in > ${.CURDIR}/pf${n}.ok
91
92SELFPF_TARGETS+=selfpf${n}
93selfpf${n}:
94	pfctl -o none -nv -f - < ${.CURDIR}/pf${n}.ok | \
95	    diff -u ${.CURDIR}/pf${n}.ok /dev/stdin
96
97.endfor
98
99pf:		${PF_TARGETS}
100selfpf:		${SELFPF_TARGETS}
101pf-update:	${PF_UPDATES}
102REGRESS_TARGETS+=pf-include-setup pf
103REGRESS_TARGETS+=selfpf
104UPDATE_TARGETS+=pf-update
105
106pf-include-setup:
107	cp ${.CURDIR}/pf95.include ${.OBJDIR}
108	chmod og-rwx ${.OBJDIR}/pf95.include
109
110.for n in ${PFSIMPLE}
111PFSIMPLE_TARGETS+=pfsimple${n}
112
113pfsimple${n}:
114	pfctl -o none -nf - < ${.CURDIR}/pfsimple${n}.in
115
116.endfor
117
118pfsimple:	${PFSIMPLE_TARGETS}
119REGRESS_TARGETS+=pfsimple
120
121.for n in ${PFLOAD}
122PFLOAD_TARGETS+=pfload${n}
123PFLOAD_UPDATES+=pfload${n}-update
124
125pfload${n}:
126	${SUDO} pfctl -o none -a regress -f - < ${.CURDIR}/pf${n}.in
127	(${SUDO} pfctl -o none -a 'regress/*' -gvvsn; \
128	${SUDO} pfctl -o none -a 'regress/*' -gvvsr) | \
129	    diff -u ${.CURDIR}/pf${n}.loaded /dev/stdin
130	${SUDO} pfctl -o none -a regress -Fn >/dev/null 2>&1
131	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
132
133pfload${n}-update:
134	${SUDO} pfctl -o none -a regress -f - < ${.CURDIR}/pf${n}.in
135	(${SUDO} pfctl -o none -a 'regress/*' -gvvsn; \
136	${SUDO} pfctl -o none -a 'regress/*' -gvvsr) > ${.CURDIR}/pf${n}.loaded
137	${SUDO} pfctl -o none -a regress -Fn >/dev/null 2>&1
138	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
139
140.endfor
141
142pfload:		${PFLOAD_TARGETS}
143pfload-update:	${PFLOAD_UPDATES}
144REGRESS_TARGETS+=pfload
145REGRESS_ROOT_TARGETS+=pfload
146UPDATE_TARGETS+=pfload-update
147
148.for n in ${PFLOAD}
149PFOPTIMIZE_TARGETS+=pfoptimize${n}
150PFOPTIMIZE_UPDATES+=pfoptimize${n}-update
151
152pfoptimize${n}:
153	${SUDO} pfctl -obasic -a regress -f - < ${.CURDIR}/pf${n}.in
154	(${SUDO} pfctl -o none -a regress -gvvsn; \
155	${SUDO} pfctl -o none -a regress -gvvsr) | \
156	    diff -u ${.CURDIR}/pf${n}.optimized /dev/stdin
157	${SUDO} pfctl -o none -a regress -Fn >/dev/null 2>&1
158	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
159
160pfoptimize${n}-update:
161	${SUDO} pfctl -obasic -a regress -f - < ${.CURDIR}/pf${n}.in
162	(${SUDO} pfctl -o none -a regress -gvvsn; \
163	${SUDO} pfctl -o none -a regress -gvvsr) > ${.CURDIR}/pf${n}.optimized
164	${SUDO} pfctl -o none -a regress -Fn >/dev/null 2>&1
165	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
166
167.endfor
168
169pfoptimize:		${PFOPTIMIZE_TARGETS}
170pfoptimize-update:	${PFOPTIMIZE_UPDATES}
171REGRESS_TARGETS+=pfoptimize
172REGRESS_ROOT_TARGETS+=pfoptimize
173UPDATE_TARGETS+=pfoptimize-update
174
175.for n in ${PFTABLE}
176PFR_TARGETS+=pfr${n}
177PFR_UPDATES+=pfr${n}-update
178
179pfr${n}:
180	${SUDO} /bin/ksh ${.CURDIR}/pfr.exec ${.CURDIR}/pfr${n}.in | \
181	    diff -u ${.CURDIR}/pfr${n}.ok /dev/stdin
182
183pfr${n}-update:
184	${SUDO} /bin/ksh ${.CURDIR}/pfr.exec ${.CURDIR}/pfr${n}.in > \
185	    ${.CURDIR}/pfr${n}.ok
186
187.endfor
188
189pfr:		${PFR_TARGETS}
190pfr-update:	${PFR_UPDATES}
191NODEFAULT_TARGETS+=pfr
192REGRESS_ROOT_TARGETS+=pfr
193
194.for n in ${PFIF2IP}
195PFI_TARGETS+=pfi${n}
196PFI_UPDATES+=pfi${n}-update
197
198pfi${n}:
199	xargs ${SUDO} /bin/ksh ${.CURDIR}/if2ip <${.CURDIR}/pfi${n}.in | \
200            diff -u ${.CURDIR}/pfi${n}.ok /dev/stdin
201
202pfi${n}-update:
203	xargs ${SUDO} /bin/ksh ${.CURDIR}/if2ip <${.CURDIR}/pfi${n}.in \
204	    > ${.CURDIR}/pfi${n}.ok
205
206.endfor
207
208pfi:            ${PFI_TARGETS}
209pfi-update:     ${PFI_UPDATES}
210REGRESS_TARGETS+=pfi
211REGRESS_ROOT_TARGETS+=pfi
212UPDATE_TARGETS+=pfi-update
213
214.for n in ${PFOPT}
215PFOPT_TARGETS+=pfopt${n}
216PFOPT_UPDATES+=pfopt${n}-update
217
218pfopt${n}:
219	pfctl -o none -nv -f - `cat ${.CURDIR}/pfopt${n}.opts` \
220	    < ${.CURDIR}/pfopt${n}.in | \
221	    diff -u ${.CURDIR}/pfopt${n}.ok /dev/stdin
222
223pfopt${n}-update:
224	pfctl -o none -nv -f - `cat ${.CURDIR}/pfopt${n}.opts` \
225	    < ${.CURDIR}/pfopt${n}.in > ${.CURDIR}/pfopt${n}.ok
226
227.endfor
228
229pfopt:		${PFOPT_TARGETS}
230pfopt-update:	${PFOPT_UPDATES}
231REGRESS_TARGETS+=pfopt
232UPDATE_TARGETS+=pfopt-update
233
234.for n in ${PFSETUP}
235PFSETUP_TARGETS+=pfsetup${n}
236PFSETUP_UPDATES+=pfsetup${n}-update
237
238pfsetup${n}:
239	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.setup
240	pfctl -o none -nv -f - < ${.CURDIR}/pfsetup${n}.in | \
241	    diff -u ${.CURDIR}/pfsetup${n}.ok /dev/stdin
242	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.clean
243
244pfsetup${n}-update:
245	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.setup
246	pfctl -o none -nv -f - < ${.CURDIR}/pfsetup${n}.in \
247	    > ${.CURDIR}/pfsetup${n}.ok
248	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.clean
249
250.endfor
251
252pfsetup:	${PFSETUP_TARGETS}
253pfsetup-update:	${PFSETUP_UPDATES}
254
255NODEFAULT_TARGETS+=pfsetup
256REGRESS_ROOT_TARGETS+=pfsetup
257
258.for n in ${PFALTQ}
259PFALTQ_TARGETS+=pfaltq${n}
260PFALTQ_UPDATES+=pfaltq${n}-update
261
262pfaltq${n}:
263	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
264	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfaltq${n}.in
265	( ${SUDO} pfctl -o none -gsq; \
266	${SUDO} pfctl -o none -gsr ) | \
267	    diff -u ${.CURDIR}/pfaltq${n}.ok /dev/stdin
268	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
269
270pfaltq${n}-update:
271	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
272	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfaltq${n}.in
273	( ${SUDO} pfctl -o none -gsq; \
274	${SUDO} pfctl -o none -gsr ) > ${.CURDIR}/pfaltq${n}.ok
275	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
276
277.endfor
278
279pfaltq:		${PFALTQ_TARGETS}
280pfaltq-update:	${PFALTQ_UPDATES}
281
282NODEFAULT_TARGETS+=pfaltq
283REGRESS_ROOT_TARGETS+=pfaltq
284
285.for n in ${PFCHKSUM}
286PFCHKSUM_TARGETS+=pfchksum${n}
287PFCHKSUM_UPDATES+=pfchksum${n}-update
288
289pfchksum${n}:
290	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
291	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfchksum${n}.in
292	${SUDO} pfctl -o none -vsi | grep '^Checksum:' | \
293		 diff -u ${.CURDIR}/pfchksum${n}.ok /dev/stdin
294	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
295
296pfchksum${n}-update:
297	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
298	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfchksum${n}.in
299	${SUDO} pfctl -o none -vsi | grep '^Checksum:' > ${.CURDIR}/pfchksum${n}.ok
300	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
301
302.endfor
303
304pfchksum:		${PFCHKSUM_TARGETS}
305pfchksum-update:	${PFCHKSUM_UPDATES}
306
307NODEFAULT_TARGETS+=pfchksum
308REGRESS_ROOT_TARGETS+=pfchksum
309
310update:	${UPDATE_TARGETS}
311
312alltests: ${REGRESS_TARGETS} ${NODEFAULT_TARGETS}
313
314.PHONY: ${REGRESS_TARGETS}
315
316.include <bsd.regress.mk>
317