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