# # Copyright (C) 2012 by Darren Reed. # # See the IPFILTER.LICENCE file for details on licencing. # TOP=$(shell echo `pwd`/..) TOP:sh=echo `pwd`/.. BINDEST=/usr/local/bin SBINDEST=/sbin/$(OBJ) MANDIR=/usr/share/man CC=cc CFLAGS=-I$(TOP) # # For SunOS 5.x # CPUDIR=$(shell echo `uname -p`-`uname -r`) CPUDIR:sh=echo `uname -p`-`uname -r` ROOT=$(CPUDIR)/root PKGDIR=$(ROOT)/opt/ipf PKGMAN=$(PKGDIR)/man PKGBIN=$(PKGDIR)/bin/$(OBJ) #CTFCONVERT=ctfconvert -i -l IPF CTFCONVERT=echo #CTFMERGE=ctfmerge -l IPF -o CTFMERGE=echo # DEST=$(OBJ) TOOL=$(TOP)/tools #CPU=$(shell uname -p) #REV=$(shell uname -v) #CPU:sh=uname -p #REV:sh=uname -r HERE=SunOS5/$(CPUDIR) BITS=$(shell if optisa amd64 sparcv9 >/dev/null 2>&1; then echo "64"; else echo "32"; fi) BITS:sh=if optisa amd64 sparcv9 >/dev/null 2>&1; then echo "64"; else echo "32"; fi ARCH=$(shell uname -p) ARCH:sh=uname -p OBJ32_i386=i86 OBJ64_i386=amd64 OBJ32_sparc=sparcv7 OBJ64_sparc=sparcv9 OBJ32=$(OBJ32_$(ARCH)) OBJ64=$(OBJ64_$(ARCH)) PROTO32_i386=prototype_ia32 PROTO64_i386=prototype_amd64 PROTO32_sparc=prototype32 PROTO64_sparc=prototype64 PROTO32=$(PROTO32_$(ARCH)) PROTO64=$(PROTO64_$(ARCH)) CC=gcc -Wall DEBUG=-g LIBS=-lsocket -lnsl -lelf -L$(OBJ) -lipf $(LIBBPF) DEF=-I$(TOP)/../pfil -D_KERNEL -DSUNDDI $(IPFBPF) $(INSTANCE) -gdwarf-2 OBJ=. PKG=ipf PROTO=prototype BITTYPE=`if [ "$(BITS)" = 64 ];then echo ' (64-bit)'; fi` OBJDIR=$(CPUDIR)/$(OBJ) TMP=/tmp/ipfpkgs ATON=-DNEED_INET_ATON ROOTINC=$(ROOT)/usr/include # MFLAGS="BINDEST=$(BINDEST)" "SBINDEST=$(SBINDEST)" "MANDIR=$(MANDIR)" \ 'CFLAGS=$(CFLAGS) $(ARCHINC) $(SOLARIS2)' "IPFLKM=$(IPFLKM)" \ "IPFLOG=$(IPFLOG)" "LOGFAC=$(LOGFAC)" "POLICY=$(POLICY)" \ "SOLARIS2=$(SOLARIS2)" "DEBUG=$(DEBUG)" "CPUDIR=$(CPUDIR)" \ "BITS=$(BITS)" "OBJ=$(OBJ)" "LOOKUP=$(LOOKUP)" "SYNC=$(SYNC)" \ "XID=$(XID)" "ALLOPTS=$(ALLOPTS)" # ########## ########## ########## ########## ########## ########## ########## # CP=/bin/cp RM=/bin/rm CHMOD=/bin/chmod INSTALL=$(TOP)/bsdinstall LIBSRC=$(TOP)/lib RANLIB=echo AROPTS=crs # DFLAGS=$(IPFLKM) $(DEF) $(SOLARIS2) $(IPFLOG) $(LOOKUP) $(SYNC) $(XID) #-DIPFDEBUG MODOBJS=$(OBJ)/ip_fil.o $(OBJ)/fil.o $(OBJ)/solaris.o $(OBJ)/ip_state.o \ $(OBJ)/ip_frag.o $(OBJ)/ip_nat.o $(OBJ)/ip_proxy.o $(OBJ)/ip_auth.o \ $(OBJ)/ip_pool.o $(OBJ)/ip_htable.o $(OBJ)/ip_lookup.o $(OBJ)/ip_log.o \ $(OBJ)/ip_scan.o $(OBJ)/ip_sync.o $(OBJ)/radix_ipf.o $(OBJ)/md5.o \ $(OBJ)/ip_nat6.o $(OBJ)/ip_dstlist.o $(OBJ)/ip_fil_compat.o \ $(OBJ)/arc4random.o $(OBJ)/mblk_misc.o $(BPFILTER) # $(OBJ)/ip_trafcon.o IPF=$(OBJ)/ipf.o $(OBJ)/ipfcomp.o $(OBJ)/ipf_y.o $(OBJ)/ipf_l.o IPT=$(OBJ)/ipftest.o $(OBJ)/ip_fil_u.o $(OBJ)/ip_state_u.o \ $(OBJ)/ip_frag_u.o $(OBJ)/ip_nat_u.o $(OBJ)/fil_u.o \ $(OBJ)/ip_scan_u.o $(OBJ)/ip_sync_u.o $(OBJ)/ip_pool_u.o \ $(OBJ)/ip_htable_u.o $(OBJ)/ip_lookup_u.o $(OBJ)/ip_proxy_u.o \ $(OBJ)/ip_auth_u.o $(OBJ)/ip_log_u.o $(OBJ)/ip_rules_u.o\ $(OBJ)/ippool_y.o $(OBJ)/ippool_l.o $(OBJ)/ipnat_y.o $(OBJ)/ipnat_l.o \ $(OBJ)/ipf_y.o $(OBJ)/ipf_l.o $(OBJ)/radix_ipf_u.o $(OBJ)/md5_u.o \ $(OBJ)/ip_nat6_u.o $(OBJ)/ip_dstlist_u.o # $(OBJ)/ip_trafcon_u.o IPNAT=$(OBJ)/ipnat.o $(OBJ)/ipnat_y.o $(OBJ)/ipnat_l.o IPMON=$(OBJ)/ipmon.o $(OBJ)/ipmon_y.o $(OBJ)/ipmon_l.o IPPOOL=$(OBJ)/ippool_y.o $(OBJ)/ippool_l.o $(OBJ)/kmem.o $(OBJ)/ippool.o IPTRAFCON=$(OBJ)/iptrafcon.o FILS=$(OBJ)/ipfstat.o # CCARGS=-I. $(DEBUG) $(CFLAGS) EXTRA=$(ALLOPTS) include $(TOP)/lib/Makefile $(OBJ): @if [ ! -d $(OBJ) ]; then mkdir $(OBJ); fi sunos5 solaris2 build: $(OBJ) $(OBJ)/libipf.a $(OBJ)/ipf.exe $(OBJ)/ipfstat \ $(OBJ)/ipftest $(OBJ)/ipmon $(OBJ)/ipnat $(OBJ)/ipf $(OBJ)/ipfs \ $(OBJ)/ippool $(OBJ)/ipfrule /bin/rm -f $(TOP)/ipf $(TOP)/$(OBJ)/ipf if [ -f /usr/lib/isaexec -a "$(OBJ)" != . ] ; then \ mkdir -p $(TOP)/$(OBJ); \ cp /usr/lib/isaexec $(TOP)/ipf; \ fi ln -s `pwd`/$(OBJ)/ipf.exe $(TOP)/$(OBJ)/ipf -(for i in ipftest ipmon ippool ipnat ipscan ipsyncm ipsyncs; do \ /bin/rm -f $(TOP)/$$i $(TOP)/$(OBJ)/$$i; \ if [ -f /usr/lib/isaexec -a "$(OBJ)" != "." ] ; then \ ln $(TOP)/ipf $(TOP)/$$i; \ fi; \ ln -s `pwd`/$(OBJ)/$$i $(TOP)/$(OBJ)/$$i; \ done;\ ) pkg: $(CPUDIR)/ipf.pkg $(OBJ)/ipfstat: $(FILS) $(OBJ)/libipf.a $(CC) $(CCARGS) $(FILS) -o $@ $(LIBS) $(STATETOP_LIB) -lkvm $(OBJ)/ipf.exe: $(IPF) $(OBJ)/libipf.a $(CC) $(CCARGS) $(IPF) -o $@ $(LIBS) -ll $(LIBBPF) # Magic dependency on ipf.exe creates the $(TOP)/$(OBJ{32,64}) directories. $(OBJ)/ipftest: $(IPT) $(OBJ)/ipf.exe $(OBJ)/libipf.a $(CC) $(CCARGS) $(IPT) -o $@ $(LIBS) -ll $(LIBBPF) $(OBJ)/ipnat: $(IPNAT) $(OBJ)/libipf.a $(CC) $(CFLAGS) $(IPNAT) -o $@ $(LIBS) -lkvm -ll $(OBJ)/ipfs: $(OBJ)/ipfs.o $(CC) $(CCARGS) $(OBJ)/ipfs.o -o $@ $(OBJ)/ipsyncm: $(OBJ)/ipsyncm.o $(OBJ)/libipf.a $(CC) $(CCARGS) $(OBJ)/ipsyncm.o -o $@ $(LIBS) $(OBJ)/ipsyncs: $(OBJ)/ipsyncs.o $(OBJ)/libipf.a $(CC) $(CCARGS) $(OBJ)/ipsyncs.o -o $@ $(LIBS) $(OBJ)/ipsyncm.o: $(TOOL)/ipsyncm.c $(TOP)/ip_sync.h $(CC) $(CCARGS) -c $(TOOL)/ipsyncm.c -o $@ $(OBJ)/ipsyncs.o: $(TOOL)/ipsyncs.c $(TOP)/ip_sync.h $(CC) $(CCARGS) -c $(TOOL)/ipsyncs.c -o $@ tests: (cd test; make ) $(OBJ)/ipfstat.o: $(TOOL)/ipfstat.c $(TOP)/ip_fil.h $(TOP)/ipf.h \ $(TOP)/ip_state.h $(TOP)/ip_frag.h $(CC) $(CCARGS) $(STATETOP_CFLAGS) $(STATETOP_INC) \ -c $(TOOL)/ipfstat.c -o $@ $(OBJ)/ipfs.o: $(TOOL)/ipfs.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_state.h \ $(TOP)/ip_nat.h $(CC) $(CCARGS) -c $(TOOL)/ipfs.c -o $@ $(OBJ)/fil_u.o: $(TOP)/fil.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_nat.h $(CC) $(CCARGS) $(EXTRA) $(IPFBPF) -c $(TOP)/fil.c -o $@ $(OBJ)/fil.o: $(TOP)/fil.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_nat.h $(CC) -I$(TOP) $(POLICY) $(DFLAGS) $(IPFBPF) $(COMPATIPF) \ -c $(TOP)/fil.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ipf.o: $(TOOL)/ipf.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(CC) $(CCARGS) -c $(TOOL)/ipf.c -o $@ $(OBJ)/ipfcomp.o: $(TOOL)/ipfcomp.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(CC) $(CCARGS) -c $(TOOL)/ipfcomp.c -o $@ $(OBJ)/ipf_y.o: ipf_y.c $(TOP)/ip_fil.h $(TOP)/ipf.h ipf_y.h ipf_l.h $(CC) $(CCARGS) $(IPFBPF) -c ipf_y.c -o $@ $(OBJ)/ipf_l.o: ipf_l.c $(TOP)/ip_fil.h $(TOP)/ipf.h ipf_y.h ipf_l.h $(CC) $(CCARGS) -I. -I$(TOP)/tools -c ipf_l.c -o $@ ipf_y.h ipf_y.c: $(TOOL)/ipf_y.y $(TOP)/ipf.h $(TOP)/ip_fil.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipf_l.c: $(TOOL)/lexer.c $(TOP)/ipf.h $(TOP)/ip_fil.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipf_l.h: $(TOOL)/lexer.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) $(OBJ)/ipftest.o: $(TOOL)/ipftest.c $(TOP)/ip_fil.h $(TOP)/ipt.h $(TOP)/ipf.h $(CC) $(CCARGS) -c $(TOOL)/ipftest.c -o $@ $(OBJ)/ipnat.o: $(TOOL)/ipnat.c $(TOP)/ip_fil.h $(TOP)/ipf.h $(TOP)/ip_nat.h $(CC) $(CCARGS) -c $(TOOL)/ipnat.c -o $@ $(OBJ)/ipnat_y.o: ipnat_y.c ipnat_y.h $(TOP)/ip_nat.h ipnat_l.h $(CC) $(CCARGS) -c ipnat_y.c -o $@ $(OBJ)/ipnat_l.o: ipnat_l.c ipnat_y.h $(TOP)/ip_nat.h ipnat_l.h $(CC) $(CCARGS) -I. -I$(TOP)/tools -c ipnat_l.c -o $@ ipnat_y.h ipnat_y.c: $(TOOL)/ipnat_y.y $(TOP)/ip_nat.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipnat_l.c: $(TOOL)/lexer.c $(TOP)/ip_nat.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipnat_l.h: $(TOOL)/lexer.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) $(OBJ)/mlso_rule.o: $(TOP)/mlso_rule.c $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/mlso_rule.c -o $@ $(OBJ)/ip_rules.o: $(OBJ)/ip_rules.c $(TOP)/ip_rules.h $(CC) -I$(TOP) $(DFLAGS) -c $(OBJ)/ip_rules.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_rulesx.o: $(OBJ)/ip_rules.c $(TOP)/ip_rules.h $(CC) -I$(TOP) -DIPFILTER_COMPILED $(DFLAGS) -c $(OBJ)/ip_rules.c -o $@ $(OBJ)/ipfrule: $(OBJ)/ip_rulesx.o $(OBJ)/mlso_rule.o ld -r $(OBJ)/ip_rulesx.o $(OBJ)/mlso_rule.o -o $@ $(OBJ)/ipf: $(MODOBJS) if [ -f /kernel/misc/sparcv9/neti -o -f /kernel/misc/neti ] ; then \ ld -dy -Nmisc/hook -Nmisc/neti -Nmisc/md5 -Ndrv/ip -r $(MODOBJS) -o $@; \ else \ ld -dy -Ndrv/ip -Ndrv/pfil -Nmisc/md5 -r $(MODOBJS) -o $@; \ fi $(CTFMERGE) $@ $(MODOBJS) $(OBJ)/md5.o: $(TOP)/md5.c $(TOP)/md5.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/md5.c -o $@ $(CTFCONVERT) $@ $(OBJ)/radix_ipf.o: $(TOP)/md5.c $(TOP)/radix_ipf.h $(TOP)/radix_ipf.c $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/radix_ipf.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_nat.o: $(TOP)/ip_nat.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_nat.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_nat6.o: $(TOP)/ip_nat6.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_nat6.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_state.o: $(TOP)/ip_state.c $(TOP)/ip_state.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_state.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_scan.o: $(TOP)/ip_scan.c $(TOP)/ip_scan.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_scan.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_sync.o: $(TOP)/ip_sync.c $(TOP)/ip_sync.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_sync.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_proxy.o: $(TOP)/ip_proxy.c $(TOP)/ip_proxy.h $(TOP)/ip_compat.h \ $(TOP)/ip_ftp_pxy.c $(TOP)/ip_rcmd_pxy.c $(TOP)/ip_raudio_pxy.c \ $(TOP)/ip_rpcb_pxy.c $(TOP)/ip_ipsec_pxy.c $(TOP)/ip_dns_pxy.c \ $(TOP)/ip_tftp_pxy.c $(TOP)/ip_nat.h $(TOP)/ip_pptp_pxy.c \ $(TOP)/ip_fil.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_proxy.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_frag.o: $(TOP)/ip_frag.c $(TOP)/ip_frag.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_frag.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_auth.o: $(TOP)/ip_auth.c $(TOP)/ip_auth.h $(TOP)/ip_compat.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_auth.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_pool.o: $(TOP)/ip_pool.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_pool.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/ip_pool.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_htable.o: $(TOP)/ip_htable.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_htable.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/ip_htable.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_dstlist.o: $(TOP)/ip_dstlist.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_dstlist.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/ip_dstlist.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_fil_compat.o: $(TOP)/ip_fil_compat.c $(TOP)/ip_compat.h \ $(TOP)/ip_fil.h $(TOP)/ip_state.h $(TOP)/ip_nat.h $(CC) $(CCARGS) $(DFLAGS) $(COMPATIPF) -c $(TOP)/ip_fil_compat.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_lookup.o: $(TOP)/ip_lookup.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_pool.h $(TOP)/ip_htable.h $(TOP)/ip_lookup.h \ $(TOP)/ip_dstlist.h $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/ip_lookup.c -o $@ $(CTFCONVERT) $@ $(OBJ)/arc4random.o: $(TOP)/arc4random.c $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/arc4random.c -o $@ $(CTFCONVERT) $@ $(OBJ)/mblk_misc.o: $(TOP)/SunOS5/mblk_misc.c $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/SunOS5/mblk_misc.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_trafcon.o: $(TOP)/ip_trafcon.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_trafcon.h $(CC) $(CCARGS) $(DFLAGS) -c $(TOP)/ip_trafcon.c -o $@ $(OBJ)/bpf_filter.o: $(TOP)/bpf_filter.c $(TOP)/bpf-ipf.h $(TOP)/pcap-ipf.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/bpf_filter.c -o $@ $(CTFCONVERT) $@ $(OBJ)/bpf_filter_u.o: $(TOP)/bpf_filter.c $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/bpf_filter.c -o $@ $(OBJ)/md5_u.o: $(TOP)/md5.c $(TOP)/md5.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/md5.c -o $@ $(OBJ)/radix_ipf_u.o: $(TOP)/radix_ipf.c $(TOP)/radix_ipf.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/radix_ipf.c -o $@ $(OBJ)/ip_nat_u.o: $(TOP)/ip_nat.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_nat.c -o $@ $(OBJ)/ip_nat6_u.o: $(TOP)/ip_nat6.c $(TOP)/ip_nat.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_nat6.c -o $@ $(OBJ)/ip_frag_u.o: $(TOP)/ip_frag.c $(TOP)/ip_frag.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_frag.c -o $@ $(OBJ)/ip_state_u.o: $(TOP)/ip_state.c $(TOP)/ip_state.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_state.c -o $@ $(OBJ)/ip_scan_u.o: $(TOP)/ip_scan.c $(TOP)/ip_scan.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_scan.c -o $@ $(OBJ)/ip_sync_u.o: $(TOP)/ip_sync.c $(TOP)/ip_sync.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_sync.c -o $@ $(OBJ)/ip_pool_u.o: $(TOP)/ip_pool.c $(TOP)/ip_pool.h $(TOP)/ip_compat.h \ $(TOP)/ip_fil.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_pool.c -o $@ $(OBJ)/ip_htable_u.o: $(TOP)/ip_htable.c $(TOP)/ip_htable.h $(TOP)/ip_compat.h \ $(TOP)/ip_fil.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_htable.c -o $@ $(OBJ)/ip_dstlist_u.o: $(TOP)/ip_dstlist.c $(TOP)/ip_dstlist.h \ $(TOP)/ip_compat.h $(TOP)/ip_fil.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_dstlist.c -o $@ $(OBJ)/ip_lookup_u.o: $(TOP)/ip_lookup.c $(TOP)/ip_lookup.h $(TOP)/ip_compat.h \ $(TOP)/ip_fil.h $(TOP)/ip_lookup.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_lookup.c -o $@ $(OBJ)/ip_trafcon_u.o: $(TOP)/ip_trafcon.c $(TOP)/ip_compat.h $(TOP)/ip_fil.h \ $(TOP)/ip_trafcon.h $(CC) $(CCARGS) -c $(TOP)/ip_trafcon.c -o $@ $(OBJ)/ip_auth_u.o: $(TOP)/ip_auth.c $(TOP)/ip_auth.h $(TOP)/ip_compat.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_auth.c -o $@ $(OBJ)/ip_proxy_u.o: $(TOP)/ip_proxy.c $(TOP)/ip_proxy.h $(TOP)/ip_compat.h \ $(TOP)/ip_ftp_pxy.c $(TOP)/ip_rcmd_pxy.c $(TOP)/ip_raudio_pxy.c \ $(TOP)/ip_rpcb_pxy.c $(TOP)/ip_ipsec_pxy.c $(TOP)/ip_dns_pxy.c \ $(TOP)/ip_tftp_pxy.c $(TOP)/ip_pptp_pxy.c $(TOP)/ip_nat.h \ $(TOP)/ip_fil.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_proxy.c -o $@ $(OBJ)/ip_rules.c: $(OBJ)/ipf.exe $(TOP)/tools/ipfcomp.c $(TOP)/rules/ip_rules $(OBJ)/ipf.exe -cc -nf $(TOP)/rules/ip_rules -/bin/mv -f ip_rules.c $(OBJ) $(TOP)/ip_rules.h: $(OBJ)/ip_rules.c if [ -f ip_rules.h ] ; then \ /bin/mv -f ip_rules.h $(TOP) ; \ fi $(OBJ)/ip_rules_u.o: $(OBJ)/ip_rules.c $(TOP)/ip_fil.h $(TOP)/ip_rules.h $(CC) $(CCARGS) $(EXTRA) -c $(OBJ)/ip_rules.c -o $@ $(OBJ)/ip_fil_u.o: $(TOP)/ip_fil.c $(TOP)/ip_fil.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_fil.c -o $@ $(OBJ)/ip_fil.o: $(TOP)/ip_fil_solaris.c $(TOP)/ip_fil.h $(CC) -I$(TOP) $(DFLAGS) $(COMPIPF) -c $(TOP)/ip_fil_solaris.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ip_log_u.o: $(TOP)/ip_log.c $(TOP)/ip_fil.h $(CC) $(CCARGS) $(EXTRA) -c $(TOP)/ip_log.c -o $@ $(OBJ)/ip_log.o: $(TOP)/ip_log.c $(TOP)/ip_fil.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/ip_log.c -o $@ $(CTFCONVERT) $@ $(OBJ)/solaris.o: $(TOP)/solaris.c $(TOP)/ipl.h $(CC) -I$(TOP) $(DFLAGS) -c $(TOP)/solaris.c -o $@ $(CTFCONVERT) $@ $(OBJ)/ipmon: $(IPMON) $(OBJ)/libipf.a $(CC) $(CCARGS) $(LOGFAC) $(IPMON) -o $@ $(LIBS) -ll -ldl $(OBJ)/ipmon.o: $(TOOL)/ipmon.c $(TOP)/ipmon.h $(CC) $(CCARGS) $(LOGFAC) -c $(TOOL)/ipmon.c -o $@ $(OBJ)/ipmon_y.o: ipmon_y.c $(TOP)/ipmon.h ipmon_y.h ipmon_l.h $(CC) $(CCARGS) -c ipmon_y.c -o $@ $(OBJ)/ipmon_l.o: ipmon_l.c $(TOP)/ipmon.h ipmon_y.h ipmon_l.h $(CC) $(CCARGS) -I. -I$(TOP)/tools -c ipmon_l.c -o $@ ipmon_y.c $(OBJ)/ipmon_y.h: $(TOOL)/ipmon_y.y $(TOP)/ipmon.h (cd $(TOOL); make DEST=../$(HERE) ../$(HERE)/$@) mv ipmon_y.c y.tab.c sed -e 's/extern [a-z]* .*();//' \ -e 's/^\(static [a-z]* .*\)();/\1(void);/' y.tab.c > $@ /bin/rm -f y.tab.c ipmon_l.c: $(TOOL)/lexer.c $(TOP)/ipmon.h (cd $(TOOL); make DEST=../$(HERE) ../$(HERE)/$@) ipmon_l.h: $(TOOL)/lexer.h (cd $(TOOL); make DEST=../$(HERE) ../$(HERE)/$@) $(OBJ)/ipscan: $(OBJ)/ipscan_y.o $(OBJ)/ipscan_l.o $(OBJ)/libipf.a $(CC) $(DEBUG) $(OBJ)/ipscan_y.o $(OBJ)/ipscan_l.o -o $@ -ll $(LIBS) $(OBJ)/ipscan_y.o: ipscan_y.c ipscan_y.h $(TOP)/ip_scan.h $(CC) $(CCARGS) -c ipscan_y.c -o $@ $(OBJ)/ipscan_l.o: ipscan_l.c ipscan_y.h $(TOP)/ip_scan.h ipscan_l.h $(CC) $(CCARGS) -I. -I$(TOP)/tools -c ipscan_l.c -o $@ ipscan_y.h ipscan_y.c: $(TOOL)/ipscan_y.y $(TOP)/ip_scan.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipscan_l.c: $(TOOL)/lexer.c $(TOP)/ip_scan.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ipscan_l.h: $(TOOL)/lexer.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) $(OBJ)/ippool: $(IPPOOL) $(OBJ)/libipf.a $(CC) $(CCARGS) -I. $(IPPOOL) -o $@ $(LIBS) -ll -lkvm $(OBJ)/ippool.o: $(TOOL)/ippool.c $(TOP)/ip_pool.h $(TOP)/ip_htable.h \ $(TOP)/ip_dstlist.h $(CC) $(CCARGS) -c $(TOOL)/ippool.c -o $@ $(OBJ)/ippool_y.o: ippool_y.c ippool_y.h $(TOP)/ip_pool.h ippool_l.h \ $(TOP)/ip_htable.h $(TOP)/ip_dstlist.h $(CC) $(CCARGS) -c ippool_y.c -o $@ $(OBJ)/ippool_l.o: ippool_l.c ippool_y.h $(TOP)/ip_pool.h ippool_l.h $(CC) $(CCARGS) -I. -I$(TOP)/tools -c ippool_l.c -o $@ ippool_y.h ippool_y.c: $(TOOL)/ippool_y.y $(TOP)/ip_pool.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ippool_l.c: $(TOOL)/lexer.c $(TOP)/ip_pool.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) ippool_l.h: $(TOOL)/lexer.h (cd $(TOOL); make "DEST=../$(HERE)" ../$(HERE)/$@) $(OBJ)/iptrafcon.o: $(TOP)/iptrafcon.c $(CC) $(CCARGS) -c $(TOP)/iptrafcon.c -o $@ $(OBJ)/iptrafcon: $(IPTRAFCON) $(OBJ)/libipf.a $(CC) $(CCARGS) $(IPTRAFCON) -o $@ $(LIBS) .y.c: .l.c: clean: ${RM} -f $(TOP)/ipf $(TOP)/ipnat $(TOP)/ipmon $(TOP)/ippool ${RM} -f $(TOP)/ipftest $(TOP)/ipscan $(TOP)/ipsyncm $(TOP)/ipsyncs if [ `basename \`pwd\`` != SunOS5 ] ; then \ ${RM} -f core *.o ipfrule ipf ipfstat ipftest ipmon ipnat ; \ ${RM} -f ipf.exe ipfs ipsyncm ipsyncs libipf.a; \ ${RM} -f ipnat.5 ipnat.4 ipnat.8 ipfilter.4 ipfilter.5; \ ${RM} -f ippool.8 ippool.5 ipscan.8 ipscan.5 ipmon.5; \ ${RM} -f prototype pkginfo postinstall postremove copyright; \ ${RM} -f ip_fil.c ipf_l.c ipf_y.c ipf_y.h ipf_l.h; \ ${RM} -f ipscan ipscan_y.c ipscan_y.h ipscan_l.c; \ ${RM} -f ippool ippool_y.c ippool_y.h ippool_l.c; \ ${RM} -f ipscan_l.h ippool_l.h ip_rules.c ip_rules.h; \ ${RM} -f ipnat_y.c ipnat_y.h ipnat_l.c ipnat_l.h; \ ${RM} -f ipmon_y.c ipmon_y.h ipmon_l.c ipmon_l.h; \ ${RM} -f ipsyncm ipsyncs ipfs; \ fi /bin/rm -rf */root ipf.pkg* $(OBJ32) $(OBJ64) make -f Makefile.ipsend clean "TOP=${TOP}" -(for i in *; do \ if [ -d $${i} -a -h $${i}/Makefile ] ; then \ (cd $${i}; make TOP=`cd ..; cd $(TOP); pwd` clean); \ rm $${i}/Makefile $${i}/Makefile.ipsend; \ rmdir $${i}; \ fi \ done) $(CPUDIR)/ipf.pkg: $(CPUDIR)/ipf.pkg.common if [ -d $(CPUDIR)/$(OBJ32) ]; then \ $(MAKE) PROTO=$(PROTO32) PKG=ipf OBJ=$(OBJ32) \ BITS=32 TOP=$(TOP) ipf.pkg.bin; \ $(MAKE) PROTO=$(PROTO64) PKG=ipfx OBJ=$(OBJ64) \ BITS=64 TOP=$(TOP) ipf.pkg.bin; \ else \ ($(MAKE) PROTO=prototype OBJ=. BITS=${BITS} \ TOP=$(TOP) ipf.pkg.bin) \ fi touch $(CPUDIR)/ipf.pkg pkgtrans -s $(TMP) $(CPUDIR)/ipf.pkg `ls $(TMP)` /bin/rm -f ipf.pkg rm -rf $(TMP)/ipf* $(CPUDIR)/ipf.pkg.common: mkdir -p $(ROOTINC)/ipfilter $(PKGDIR)/examples $(ROOT)/usr/kernel/drv mkdir -p $(ROOT)/etc/init.d $(TMP) mkdir -p $(PKGMAN)/man1 $(PKGMAN)/man4 $(PKGMAN)/man5 $(PKGMAN)/man8 -$(INSTALL) -c ipfboot $(ROOT)/etc/init.d -cp $(TOP)/man/*.[0-9] . -$(INSTALL) -c ipf.conf $(ROOT)/usr/kernel/drv -$(INSTALL) ipf.8 $(PKGMAN)/man8 -$(INSTALL) ipfs.8 $(PKGMAN)/man8 -$(INSTALL) ipnat.8 $(PKGMAN)/man8 -$(INSTALL) ipftest.1 $(PKGMAN)/man1 -$(INSTALL) mkfilters.1 $(PKGMAN)/man1 -$(INSTALL) ipf.4 $(PKGMAN)/man4 -$(INSTALL) ipfilter.4 $(PKGMAN)/man4 -$(INSTALL) ipnat.4 $(PKGMAN)/man4 -$(INSTALL) ipl.4 $(PKGMAN)/man4 -$(INSTALL) ipf.5 $(PKGMAN)/man5 -$(INSTALL) ipnat.5 $(PKGMAN)/man5 -$(INSTALL) ippool.5 $(PKGMAN)/man5 -$(INSTALL) ipfilter.5 $(PKGMAN)/man5 -$(INSTALL) ipfstat.8 $(PKGMAN)/man8 -$(INSTALL) ipmon.8 $(PKGMAN)/man8 -$(INSTALL) ippool.8 $(PKGMAN)/man8 -cp $(TOP)/rules/* $(PKGDIR)/examples -cp $(TOP)/ip_fil.h $(TOP)/ip_compat.h $(TOP)/ip_state.h . -cp $(TOP)/ip_nat.h $(TOP)/ip_frag.h $(TOP)/ip_proxy.h . -cp $(TOP)/ip_auth.h $(TOP)/ip_htable.h $(TOP)/ip_pool.h . -cp $(TOP)/ip_lookup.h $(TOP)/ip_dstlist.h . -$(INSTALL) ip_fil.h $(ROOTINC)/ipfilter -$(INSTALL) ip_compat.h $(ROOTINC)/ipfilter -$(INSTALL) ip_state.h $(ROOTINC)/ipfilter -$(INSTALL) ip_nat.h $(ROOTINC)/ipfilter -$(INSTALL) ip_frag.h $(ROOTINC)/ipfilter -$(INSTALL) ip_htable.h $(ROOTINC)/ipfilter -$(INSTALL) ip_dstlist.h $(ROOTINC)/ipfilter -$(INSTALL) ip_lookup.h $(ROOTINC)/ipfilter -$(INSTALL) ip_pool.h $(ROOTINC)/ipfilter -$(INSTALL) ip_proxy.h $(ROOTINC)/ipfilter -$(INSTALL) ip_auth.h $(ROOTINC)/ipfilter touch $@ # # For 64 bit Solaris, we build 32 and 64 bit packages, but the 64 bit package # is smaller and only contains the 64 bit specific and not the common stuff. # ipf.pkg.bin: mkdir -p $(PKGBIN) $(ROOT)/$(SBINDEST) $(ROOT)/usr/kernel/drv/$(OBJ) -$(INSTALL) -c -s $(OBJDIR)/ipftest $(PKGBIN)/ipftest -$(INSTALL) -c -s $(OBJDIR)/ipmon $(PKGBIN)/ipmon -$(INSTALL) -c -s $(OBJDIR)/ipsend $(PKGBIN)/ipsend -$(INSTALL) -c -s $(OBJDIR)/ipresend $(PKGBIN)/ipresend -$(INSTALL) -c $(TOP)/mkfilters $(PKGBIN)/mkfilters -$(INSTALL) -c $(OBJDIR)/ipf $(ROOT)/usr/kernel/drv/$(OBJ)/ipf -$(INSTALL) -c -s $(OBJDIR)/ipnat $(ROOT)/$(SBINDEST)/ipnat -$(INSTALL) -c -s $(OBJDIR)/ippool $(ROOT)/$(SBINDEST)/ippool -$(INSTALL) -c -s $(OBJDIR)/ipf.exe $(ROOT)/$(SBINDEST)/ipf -$(INSTALL) -c -s $(OBJDIR)/ipfs $(ROOT)/$(SBINDEST)/ipfs -$(INSTALL) -c -s $(OBJDIR)/ipfstat $(ROOT)/$(SBINDEST)/ipfstat # -(cd $(CPUDIR); rm -f copyright post* prototype pkginfo) -(cd $(CPUDIR); rm -f prototype) # -(cd $(CPUDIR); ln -s ../copyright ../postinstall ../postremove .) -(cd $(CPUDIR); ln -s ../$(PROTO) prototype) -sed -e 's/ipf/$(PKG)/' -e "s/NAME=.*/&$(BITTYPE)/" \ -e "s/ARCH=.*/ARCH=`uname -p` (${BITS}-bit)/" \ < pkginfo > $(CPUDIR)/pkginfo -if [ "$(BITS)" = 64 ]; then echo 'SUNW_ISA=$(OBJ64)' >> $(CPUDIR)/pkginfo; fi (cd $(CPUDIR); pkgmk -a `uname -p` -o -d $(TMP)) package install: $(CPUDIR)/ipf.pkg /bin/rm -f ipf.pkg ln -s $(CPUDIR)/ipf.pkg ipf.pkg @if [ `id|sed -e 's/^.[^(]*(\([^)]*\)).*/\1/'` != root ] ; then \ echo "Can only install if root"; \ exit 1; \ fi # Must add ipfx before ipf or driver attach fails. -[ -d $(CPUDIR)/$(OBJ64) ] && pkgadd -d ipf.pkg ipfx -pkgadd -d ipf.pkg ipf