1# 2# Copyright (C) 2012 by Darren Reed. 3# 4# Redistribution and use in source and binary forms are permitted 5# provided that this notice is preserved and due credit is given 6# to the original author and the contributors. 7# 8# $FreeBSD$ 9# Id: Makefile,v 2.76.2.24 2007/09/26 10:04:03 darrenr Exp $ 10# 11SHELL=/bin/sh 12BINDEST=/usr/local/bin 13SBINDEST=/sbin 14MANDIR=/usr/local/man 15#To test prototyping 16CC=gcc -Wstrict-prototypes -Wmissing-prototypes -Wunused -Wuninitialized 17#CC=gcc 18#CC=cc -Dconst= 19DEBUG=-g 20# -O 21CFLAGS=-I$$(TOP) -D_BSD_SOURCE 22CPU=`uname -m` 23CPUDIR=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m` 24OBJ=. 25# 26# To enable this to work as a Loadable Kernel Module... 27# 28IPFLKM=-DIPFILTER_LKM 29# 30# To enable logging of blocked/passed packets... 31# 32IPFLOG=-DIPFILTER_LOG 33# 34# To enable loading filter rules compiled to C code... 35# 36#COMPIPF=-DIPFILTER_COMPILED 37# 38# To enable IPFilter compatibility with older CLI utilities 39# 40#COMPATIPF=-DIPFILTER_COMPAT 41# 42# To enable synchronisation between IPFilter hosts 43# 44#SYNC=-DIPFILTER_SYNC 45# 46# The facility you wish to log messages from ipmon to syslogd with. 47# 48LOGFAC=-DLOGFAC=LOG_SECURITY 49# 50# To enable rules to be written with BPF syntax, uncomment these two lines. 51# 52# WARNING: If you're building a commercial product based on IPFilter, using 53# this options *may* infringe at least one patent held by CheckPoint 54# (5,606,668.) 55# 56#IPFBPF=-DIPFILTER_BPF -I/usr/local/include 57#LIBBPF=-L/usr/local/lib -lpcap 58# 59# HP-UX and Solaris require this uncommented for BPF. 60# 61#BPFILTER=bpf_filter.o 62# 63# LINUXKERNEL is the path to the top of your Linux kernel source tree. 64# By default IPFilter looks for /usr/src/linux, but you may have to change 65# it to /usr/src/linux-2.4 or similar. 66# 67LINUXKERNEL=/usr/src/kernels/2.6.29.5-191.fc11.i586 68LINUX=`uname -r | awk -F. ' { printf"%d",$$1;for(i=1;i<NF&&i<3;i++){printf("%02d",$$(i+1));}}'` 69# 70# 71# 72#BUILDROOT=/usr/src/redhat/BUILD/ipfilter 73BUILDROOT=${HOME}/rpmbuild/BUILDROOT/ipfilter-4.1.32-1.i386 74 75# 76# All of the compile-time options are here, used for compiling the userland 77# tools for regression testing. Well, all except for IPFILTER_LKM, of course. 78# 79ALLOPTS=-DIPFILTER_LOG -DIPFILTER_LOOKUP \ 80 -DIPFILTER_SYNC -DIPFILTER_CKSUM 81 82# 83# Uncomment the next 3 lines if you want to view the state table a la top(1) 84# (requires that you have installed ncurses). 85#STATETOP_CFLAGS=-DSTATETOP 86# 87# Where to find the ncurses include files (if not in default path), 88# 89#STATETOP_INC= 90#STATETOP_INC=-I/usr/local/include 91# 92# How to link the ncurses library 93# 94#STATETOP_LIB=-lncurses 95#STATETOP_LIB=-L/usr/local/lib -lncurses 96 97# 98# Uncomment this when building IPv6 capability. 99# 100INET6=-DUSE_INET6 101# 102# For packets which don't match any pass rules or any block rules, set either 103# FR_PASS or FR_BLOCK (respectively). It defaults to FR_PASS if left 104# undefined. This is ignored for ipftest, which can thus return three 105# results: pass, block and nomatch. This is the sort of "block unless 106# explicitly allowed" type #define switch. 107# 108POLICY=-DIPF_DEFAULT_PASS=FR_PASS 109# 110MFLAGS1='CFLAGS=$(CFLAGS) $(ARCHINC) $(SOLARIS2) $(SGIREV) $(INET6)' \ 111 "IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \ 112 "SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "DCPU=$(CPU)" \ 113 "LIBBPF=$(LIBBPF)" "CPUDIR=$(CPUDIR)" "IPFBPF=$(IPFBPF)" \ 114 'STATETOP_CFLAGS=$(STATETOP_CFLAGS)' "BPFILTER=$(BPFILTER)" \ 115 'STATETOP_INC=$(STATETOP_INC)' 'STATETOP_LIB=$(STATETOP_LIB)' \ 116 "BITS=$(BITS)" "OBJ=$(OBJ)" "LOOKUP=$(LOOKUP)" "COMPIPF=$(COMPIPF)" \ 117 "COMPATIPF=$(COMPATIPF)" \ 118 'SYNC=$(SYNC)' 'ALLOPTS=$(ALLOPTS)' 'LIBBPF=$(LIBBPF)' 119MFLAGS=$(MFLAGS1) "IPFLKM=$(IPFLKM)" 120MACHASSERT=`/bin/ls -1 /usr/sys/*/mach_assert.h | head -1` 121# 122SHELL=/bin/sh 123# 124########## ########## ########## ########## ########## ########## ########## 125# 126CP=/bin/cp 127RM=/bin/rm 128CHMOD=/bin/chmod 129INSTALL=install 130# 131 132all: 133 @echo "Chose one of the following targets for making IP filter:" 134 @echo "" 135 @echo "solaris - auto-selects SunOS4.1.x/Solaris 2.3-6/Solaris2.4-6x86" 136 @echo "netbsd - compile for NetBSD" 137 @echo "openbsd - compile for OpenBSD" 138 @echo "freebsd20 - compile for FreeBSD 2.0, 2.1 or earlier" 139 @echo "freebsd22 - compile for FreeBSD-2.2 or greater" 140 @echo "freebsd - compile for all other versions of FreeBSD" 141 @echo "bsd - compile for generic 4.4BSD systems" 142 @echo "bsdi - compile for BSD/OS" 143 @echo "irix - compile for SGI IRIX" 144 @echo "hpux - compile for HP-UX 11.00" 145 @echo "osf - compile for OSF/Tru64 5.1" 146 @echo "" 147 148tests: 149 @if [ -d test ]; then (cd test; make) \ 150 else echo test directory not present, sorry; fi 151 152retest: 153 @if [ -d test ]; then (cd test; make clean && make) \ 154 else echo test directory not present, sorry; fi 155 156include: 157 -mkdir -p net netinet 158 if [ ! -f netinet/done ] ; then \ 159 (cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .;); \ 160 (cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); \ 161 touch netinet/done; \ 162 fi 163 -(cd netinet; ln -s ../ip_rules.h ip_rules.h) 164 165sunos solaris: include 166 MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" BPFILTER=$(BPFILTER) \ 167 CC="$(CC)" DEBUG="$(DEBUG)" ./buildsunos 168 169freebsd: 170 make freebsd`uname -r|cut -c1` 171 172freebsd22: include 173 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 174 -rm -f BSD/$(CPUDIR)/ioconf.h 175 -if [ x$(IPFILKERN) != x ] ; then \ 176 if [ -f /sys/compile/$(IPFILKERN)/ioconf.h ] ; then \ 177 ln -s /sys/compile/$(IPFILKERN)/ioconf.h BSD/$$y; \ 178 else \ 179 ln -s /sys/$(IPFILKERN)/ioconf.h BSD/$$y; \ 180 fi \ 181 else \ 182 x=`uname -v|sed -e 's@^.*:\(/[^: ]*\).*$$@\1/ioconf.h@'`; \ 183 y=`uname -s|sed -e 's@/@@g'`-`uname -r`-`uname -m`; \ 184 if [ ! -f $$x ] ; then \ 185 echo -n "Can't find ioconf.h at $$x "; \ 186 exit 1;\ 187 else \ 188 ln -s $$x BSD/$$y ; \ 189 fi \ 190 fi 191 make freebsd20 192 193freebsd5 freebsd6 freebsd7 freebsd8: include 194 if [ x$(INET6) = x ] ; then \ 195 echo "#undef INET6" > opt_inet6.h; \ 196 else \ 197 echo "#define INET6" > opt_inet6.h; \ 198 fi 199 if [ "x$(IPFBPF)" = "x" ] ; then \ 200 echo "#undef NBPF" > opt_bpf.h; \ 201 echo "#undef NBPFILTER" > opt_bpf.h; \ 202 echo "#undef DEV_BPF" > opt_bpf.h; \ 203 else \ 204 echo "#define NBPF" > opt_bpf.h; \ 205 echo "#define NBPFILTER" > opt_bpf.h; \ 206 echo "#define DEV_BPF" > opt_bpf.h; \ 207 fi 208 if [ x$(ENABLE_PFIL) = x ] ; then \ 209 echo "#undef PFIL_HOOKS" > opt_pfil.h; \ 210 else \ 211 echo "#define PFIL_HOOKS" > opt_pfil.h; \ 212 fi 213 214 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 215 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko.5" "LKMR=ipfrule.ko.5" "DLKM=-DKLD_MODULE" "MLR=mlfk_rule.o"; cd ..) 216# (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 217 218freebsd4 : include 219 if [ x$(INET6) = x ] ; then \ 220 echo "#undef INET6" > opt_inet6.h; \ 221 else \ 222 echo "#define INET6" > opt_inet6.h; \ 223 fi 224 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 225 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlfk_ipl.c" "MLD=mlfk_ipl.c" "LKM=ipf.ko" "LKMR=ipfrule.ko" "DLKM=-DKLD_MODULE" "MLR=mlfk_rule.o"; cd ..) 226 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 227 228freebsd3 freebsd30: include 229 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 230 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS1) "ML=mlf_ipl.c" "MLR=mlf_rule.o" LKM= LKMR=; cd ..) 231 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS1); cd ..) 232 233netbsd: include 234 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 235 @if [ ! -d /sys -o ! -d /sys/arch ] ; then \ 236 echo "*****************************************************"; \ 237 echo "* *"; \ 238 echo "* Please extract source code to create /sys and *";\ 239 echo "* /sys/arch and run 'config GENERIC' *"; \ 240 echo "* *"; \ 241 echo "*****************************************************"; \ 242 exit 1; \ 243 fi 244 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" LKMR= "MLR=mln_rule.o"; cd ..) 245# (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 246 247openbsd: include 248 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 249 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mlo_ipl.c" LKMR= "MLR=mlo_rule.o"; cd ..) 250 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 251 252freebsd20 freebsd21: include 253 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 254 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) "ML=mlf_ipl.c" "MLR=mlf_rule.o"; cd ..) 255 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 256 257osf tru64: null include 258 make setup "TARGOS=OSF" "CPUDIR=`OSF/cpurev`" 259 (cd OSF/`OSF/cpurev`; make build TRU64=`uname -v` TOP=../.. "DEBUG=-g" $(MFLAGS) "MACHASSERT=$(MACHASSERT)" "OSREV=`../cpurev`"; cd ..) 260 (cd OSF/`OSF/cpurev`; make -f Makefile.ipsend build TRU64=`uname -v` TOP=../.. $(MFLAGS) "OSREV=`../cpurev`"; cd ..) 261 262aix: null include 263 make setup "TARGOS=AIX" "CPUDIR=`AIX/cpurev`" 264 (cd AIX/`AIX/cpurev`; make build AIX=`uname -v` TOP=../.. "DEBUG=-g" $(MFLAGS) "OSREV=`../cpurev`" BITS=`../bootbits.sh`; cd ..) 265# (cd AIX/`AIX/cpurev`; make -f Makefile.ipsend build AIX=`uname -v` TOP=../.. $(MFLAGS) "OSREV=`../cpurev`"; cd ..) 266 267bsd: include 268 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 269 (cd BSD/$(CPUDIR); make build TOP=../.. $(MFLAGS) 'DLKM=-D_LKM' "ML=mln_ipl.c" "MLR=mln_rule.o"; cd ..) 270 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build TOP=../.. $(MFLAGS); cd ..) 271 272bsdi bsdos: include 273 make setup "TARGOS=BSD" "CPUDIR=$(CPUDIR)" 274 (cd BSD/$(CPUDIR); make build "CC=$(CC)" TOP=../.. $(MFLAGS) LKM= LKMR= ; cd ..) 275 (cd BSD/$(CPUDIR); make -f Makefile.ipsend build "CC=$(CC)" TOP=../.. $(MFLAGS); cd ..) 276 277irix IRIX: include 278 make setup TARGOS=IRIX CPUDIR=`IRIX/cpurev` 279 if [ "x${SGIREV}" = "x" ] ; then \ 280 make irix "SGIREV=-D_KMEMUSER -DIRIX=`IRIX/getrev`"; \ 281 else \ 282 (cd IRIX/`IRIX/cpurev`; smake -l -J 1 build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \ 283 (cd IRIX/`IRIX/cpurev`; make -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) IRIX=`../getrev` SGI=$$(IRIX) CPUDIR=`../cpurev`; cd ..); \ 284 fi 285 286setup: 287 -if [ ! -d $(TARGOS)/$(CPUDIR) ] ; then mkdir $(TARGOS)/$(CPUDIR); fi 288 -rm -f $(TARGOS)/$(CPUDIR)/Makefile $(TARGOS)/$(CPUDIR)/Makefile.ipsend 289 -ln -s ../Makefile $(TARGOS)/$(CPUDIR)/Makefile 290 -ln -s ../Makefile.ipsend $(TARGOS)/$(CPUDIR)/Makefile.ipsend 291 -if [ -f $(TARGOS)/Makefile.common ] ; then \ 292 rm -f $(TARGOS)/$(CPUDIR)/Makefile.common; \ 293 ln -s ../Makefile.common $(TARGOS)/$(CPUDIR)/Makefile.common;\ 294 fi 295 296clean: clean-include 297 /bin/rm -rf h y.output 298 ${RM} -f core *.o ipt fils ipf ipfstat ipftest ipmon if_ipl ipflkm \ 299 vnode_if.h $(LKM) *~ 300 /bin/rm -rf sparcv7 sparcv9 mdbgen_build 301 (cd SunOS4; $(MAKE) TOP=.. clean) 302 -(cd SunOS5; $(MAKE) TOP=.. clean) 303 (cd BSD; $(MAKE) TOP=.. clean) 304 (cd HPUX; $(MAKE) BITS=32 TOP=.. clean) 305 (cd Linux; $(MAKE) TOP=.. clean) 306 (cd OSF; $(MAKE) TOP=.. clean) 307 (cd AIX; $(MAKE) TOP=.. clean) 308 if [ "`uname -s`" = "IRIX" ]; then (cd IRIX; $(MAKE) clean); fi 309 [ -d test ] && (cd test; $(MAKE) clean) 310 (cd ipsend; $(MAKE) clean) 311 312clean-include: 313 sh -c 'if [ -d netinet ] ; then cd netinet; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi' 314 sh -c 'if [ -d net ] ; then cd net; for i in *; do if [ -h $$i ] ; then /bin/rm -f $$i; fi; done fi' 315 ${RM} -f netinet/done net/done 316 317clean-bsd: clean-include 318 (cd BSD; make TOP=.. clean) 319 320clean-hpux: clean-include 321 (cd HPUX; $(MAKE) BITS=32 clean) 322 323clean-osf: clean-include 324 (cd OSF; make clean) 325 326clean-aix: clean-include 327 (cd AIX; make clean) 328 329clean-linux: clean-include 330 (cd Linux; make clean) 331 332clean-sunos4: clean-include 333 (cd SunOS4; make clean) 334 335clean-sunos5: clean-include 336 (cd SunOS5; $(MAKE) clean) 337 /bin/rm -rf sparcv? 338 339clean-irix: clean-include 340 (cd IRIX; $(MAKE) clean) 341 342h/xti.h: 343 mkdir -p h 344 ln -s /usr/include/sys/xti.h h 345 346hpux: include h/xti.h 347 make setup CPUDIR=`HPUX/cpurev` TARGOS=HPUX 348 (cd HPUX/`HPUX/cpurev`; $(MAKE) build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..) 349 (cd HPUX/`HPUX/cpurev`; $(MAKE) -f Makefile.ipsend build TOP=../.. $(DEST) $(MFLAGS) "BITS=`getconf KERNEL_BITS`" `../makeargs`; cd ..) 350 351sunos4 solaris1: 352 (cd SunOS4; make build TOP=.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..) 353 (cd SunOS4; make -f Makefile.ipsend build "CC=$(CC)" TOP=.. $(DEST) $(MFLAGS); cd ..) 354 355sunos5 solaris2: null 356 (cd SunOS5/$(CPUDIR); $(MAKE) build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS) "SOLARIS2=$(SOLARIS2)" INSTANCE=$(INSTANCE); cd ..) 357 (cd SunOS5/$(CPUDIR); $(MAKE) -f Makefile.ipsend build TOP=../.. "CC=$(CC)" $(DEST) $(MFLAGS); cd ..) 358 359linux: include 360 (cd Linux; make build LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL); cd ..) 361 (cd Linux; make ipflkm LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) LINUXKERNEL=$(LINUXKERNEL) WORKDIR=`pwd`; cd ..) 362# (cd Linux; make -f Makefile.ipsend build LINUX=$(LINUX) TOP=.. "CC=$(CC)" $(MFLAGS); cd ..) 363 364install-linux: linux 365 (cd Linux/; make LINUX=$(LINUX) TOP=.. "DEBUG=-g" "CC=$(CC)" $(MFLAGS) OBJ=$(CPUDIR) ROOTDIR=$(BUILDROOT) install ; cd ..) 366 367install-bsd: 368 (cd BSD/$(CPUDIR); make install "TOP=../.." $(MFLAGS); cd ..) 369 (cd BSD/$(CPUDIR); make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..) 370 371install-sunos4: solaris 372 (cd SunOS4; $(MAKE) CPU=$(CPU) TOP=.. install) 373 374install-sunos5: solaris null 375 (cd SunOS5; $(MAKE) TOP=.. install) 376 377install-aix: 378 (cd AIX/`AIX/cpurev`; make install "TOP=../.." $(MFLAGS); cd ..) 379# (cd AIX/`AIX/cpurev`; make -f Makefile.ipsend INSTALL=$(INSTALL) install "TOP=../.." $(MFLAGS); cd ..) 380 381install-hpux: hpux 382 (cd HPUX/`HPUX/cpurev`; $(MAKE) CPU=$(CPU) TOP=../.. "BITS=`getconf KERNEL_BITS`" install) 383 384install-irix: irix 385 (cd IRIX; smake install CPU=$(CPU) TOP=.. $(DEST) $(MFLAGS) CPUDIR=`./cpurev`) 386 387install-osf install-tru64: 388 (cd OSF/`OSF/cpurev`; make install "TOP=../.." $(MFLAGS); cd ..) 389 390do-cvs: 391 find . -type d -name CVS -print | xargs /bin/rm -rf 392 find . -type f -name .cvsignore -print | xargs /bin/rm -f 393 /bin/rm -f ip_msnrpc_pxy.c ip_sunrpc_pxy.c 394 395ip_rules.c ip_rules.h: rules/ip_rules tools/ipfcomp.c 396 -./ipf -n -cc -f rules/ip_rules 2>/dev/null 1>&2 397 398null: 399 @if [ "`$(MAKE) -v 2>&1 | sed -ne 's/GNU.*/GNU/p'`" = "GNU" ] ; then \ 400 echo 'Do not use GNU make (gmake) to compile IPFilter'; \ 401 exit 1; \ 402 fi 403 -@echo make ok 404 405mdb: 406 /bin/rm -rf mdbgen_build 407 mdbgen -D_KERNEL -DIPFILTER_LOG -DIPFILTER_LOOKUP -DSUNDDI \ 408 -DIPFILTER_SCAN -DIPFILTER_LKM -DSOLARIS2=10 -n ipf_mdb -k \ 409 -I/home/dr146992/pfil -I/home/dr146992/ipf -f \ 410 /usr/include/netinet/in_systm.h,/usr/include/sys/ethernet.h,/usr/include/netinet/in.h,/usr/include/netinet/ip.h,/usr/include/netinet/ip_var.h,/usr/include/netinet/tcp.h,/usr/include/netinet/tcpip.h,/usr/include/netinet/ip_icmp.h,/usr/include/netinet/udp.h,ip_compat.h,ip_fil.h,ip_nat.h,ip_state.h,ip_proxy.h,ip_scan.h 411