xref: /openbsd/regress/sbin/pfctl/Makefile (revision 17df1aa7)
1# $OpenBSD: Makefile,v 1.210 2010/05/10 02:00:50 krw Exp $
2
3# TARGETS
4# pf: feed pfNN.in through pfctl and check whether 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 whether 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 98
19PFFAIL=1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 19 20 23 25 27
20PFFAIL+=29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 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 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 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/*' -gvvsr | \
128	    sed -e 's/__automatic_[0-9a-f]*_/__automatic_/g' ) | \
129	    diff -u ${.CURDIR}/pf${n}.loaded /dev/stdin
130	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
131
132pfload${n}-update:
133	${SUDO} pfctl -o none -a regress -f - < ${.CURDIR}/pf${n}.in
134	(${SUDO} pfctl -o none -a 'regress/*' -gvvsr | \
135	    sed -e 's/__automatic_[0-9a-f]*_/__automatic_/g' ) \
136	    > ${.CURDIR}/pf${n}.loaded
137	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
138
139.endfor
140
141pfload:		${PFLOAD_TARGETS}
142pfload-update:	${PFLOAD_UPDATES}
143REGRESS_TARGETS+=pfload
144REGRESS_ROOT_TARGETS+=pfload
145UPDATE_TARGETS+=pfload-update
146
147.for n in ${PFLOAD}
148PFOPTIMIZE_TARGETS+=pfoptimize${n}
149PFOPTIMIZE_UPDATES+=pfoptimize${n}-update
150
151pfoptimize${n}:
152	${SUDO} pfctl -obasic -a regress -f - < ${.CURDIR}/pf${n}.in
153	(${SUDO} pfctl -o none -a regress -gvvsr | \
154	    sed -e 's/__automatic_[0-9a-f]*_/__automatic_/g') | \
155	    diff -u ${.CURDIR}/pf${n}.optimized /dev/stdin
156	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
157
158pfoptimize${n}-update:
159	${SUDO} pfctl -obasic -a regress -f - < ${.CURDIR}/pf${n}.in
160	(${SUDO} pfctl -o none -a regress -gvvsr | \
161	    sed -e 's/__automatic_[0-9a-f]*_/__automatic_/g' ) \
162	    > ${.CURDIR}/pf${n}.optimized
163	${SUDO} pfctl -o none -a regress -Fr >/dev/null 2>&1
164
165.endfor
166
167pfoptimize:		${PFOPTIMIZE_TARGETS}
168pfoptimize-update:	${PFOPTIMIZE_UPDATES}
169REGRESS_TARGETS+=pfoptimize
170REGRESS_ROOT_TARGETS+=pfoptimize
171UPDATE_TARGETS+=pfoptimize-update
172
173.for n in ${PFTABLE}
174PFR_TARGETS+=pfr${n}
175PFR_UPDATES+=pfr${n}-update
176
177pfr${n}:
178	${SUDO} /bin/ksh ${.CURDIR}/pfr.exec ${.CURDIR}/pfr${n}.in | \
179	    diff -u ${.CURDIR}/pfr${n}.ok /dev/stdin
180
181pfr${n}-update:
182	${SUDO} /bin/ksh ${.CURDIR}/pfr.exec ${.CURDIR}/pfr${n}.in > \
183	    ${.CURDIR}/pfr${n}.ok
184
185.endfor
186
187pfr:		${PFR_TARGETS}
188pfr-update:	${PFR_UPDATES}
189NODEFAULT_TARGETS+=pfr
190REGRESS_ROOT_TARGETS+=pfr
191
192.for n in ${PFIF2IP}
193PFI_TARGETS+=pfi${n}
194PFI_UPDATES+=pfi${n}-update
195
196pfi${n}:
197	xargs ${SUDO} /bin/ksh ${.CURDIR}/if2ip <${.CURDIR}/pfi${n}.in | \
198            diff -u ${.CURDIR}/pfi${n}.ok /dev/stdin
199
200pfi${n}-update:
201	xargs ${SUDO} /bin/ksh ${.CURDIR}/if2ip <${.CURDIR}/pfi${n}.in \
202	    > ${.CURDIR}/pfi${n}.ok
203
204.endfor
205
206pfi:            ${PFI_TARGETS}
207pfi-update:     ${PFI_UPDATES}
208REGRESS_TARGETS+=pfi
209REGRESS_ROOT_TARGETS+=pfi
210UPDATE_TARGETS+=pfi-update
211
212.for n in ${PFOPT}
213PFOPT_TARGETS+=pfopt${n}
214PFOPT_UPDATES+=pfopt${n}-update
215
216pfopt${n}:
217	pfctl -o none -nv -f - `cat ${.CURDIR}/pfopt${n}.opts` \
218	    < ${.CURDIR}/pfopt${n}.in | \
219	    diff -u ${.CURDIR}/pfopt${n}.ok /dev/stdin
220
221pfopt${n}-update:
222	pfctl -o none -nv -f - `cat ${.CURDIR}/pfopt${n}.opts` \
223	    < ${.CURDIR}/pfopt${n}.in > ${.CURDIR}/pfopt${n}.ok
224
225.endfor
226
227pfopt:		${PFOPT_TARGETS}
228pfopt-update:	${PFOPT_UPDATES}
229REGRESS_TARGETS+=pfopt
230UPDATE_TARGETS+=pfopt-update
231
232.for n in ${PFSETUP}
233PFSETUP_TARGETS+=pfsetup${n}
234PFSETUP_UPDATES+=pfsetup${n}-update
235
236pfsetup${n}:
237	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.setup
238	pfctl -o none -nv -f - < ${.CURDIR}/pfsetup${n}.in | \
239	    diff -u ${.CURDIR}/pfsetup${n}.ok /dev/stdin
240	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.clean
241
242pfsetup${n}-update:
243	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.setup
244	pfctl -o none -nv -f - < ${.CURDIR}/pfsetup${n}.in \
245	    > ${.CURDIR}/pfsetup${n}.ok
246	${SUDO} ${SHELL} ${.CURDIR}/pfsetup${n}.clean
247
248.endfor
249
250pfsetup:	${PFSETUP_TARGETS}
251pfsetup-update:	${PFSETUP_UPDATES}
252
253NODEFAULT_TARGETS+=pfsetup
254REGRESS_ROOT_TARGETS+=pfsetup
255
256.for n in ${PFALTQ}
257PFALTQ_TARGETS+=pfaltq${n}
258PFALTQ_UPDATES+=pfaltq${n}-update
259
260pfaltq${n}:
261	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
262	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfaltq${n}.in
263	( ${SUDO} pfctl -o none -gsq; \
264	${SUDO} pfctl -o none -gsr ) | \
265	    diff -u ${.CURDIR}/pfaltq${n}.ok /dev/stdin
266	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
267
268pfaltq${n}-update:
269	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
270	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfaltq${n}.in
271	( ${SUDO} pfctl -o none -gsq; \
272	${SUDO} pfctl -o none -gsr ) > ${.CURDIR}/pfaltq${n}.ok
273	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
274
275.endfor
276
277pfaltq:		${PFALTQ_TARGETS}
278pfaltq-update:	${PFALTQ_UPDATES}
279
280NODEFAULT_TARGETS+=pfaltq
281REGRESS_ROOT_TARGETS+=pfaltq
282
283.for n in ${PFCHKSUM}
284PFCHKSUM_TARGETS+=pfchksum${n}
285PFCHKSUM_UPDATES+=pfchksum${n}-update
286
287pfchksum${n}:
288	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
289	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfchksum${n}.in
290	${SUDO} pfctl -o none -vsi | grep '^Checksum:' | \
291		 diff -u ${.CURDIR}/pfchksum${n}.ok /dev/stdin
292	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
293
294pfchksum${n}-update:
295	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
296	${SUDO} pfctl -o none -f - < ${.CURDIR}/pfchksum${n}.in
297	${SUDO} pfctl -o none -vsi | grep '^Checksum:' > ${.CURDIR}/pfchksum${n}.ok
298	${SUDO} pfctl -o none -Fa >/dev/null 2>&1
299
300.endfor
301
302pfchksum:		${PFCHKSUM_TARGETS}
303pfchksum-update:	${PFCHKSUM_UPDATES}
304
305NODEFAULT_TARGETS+=pfchksum
306REGRESS_ROOT_TARGETS+=pfchksum
307
308update:	${UPDATE_TARGETS}
309
310alltests: ${REGRESS_TARGETS} ${NODEFAULT_TARGETS}
311
312.PHONY: ${REGRESS_TARGETS}
313
314.include <bsd.regress.mk>
315