17c478bd9Sstevel@tonic-gate# 233f2fefdSDarren Reed# CDDL HEADER START 37c478bd9Sstevel@tonic-gate# 433f2fefdSDarren Reed# The contents of this file are subject to the terms of the 533f2fefdSDarren Reed# Common Development and Distribution License (the "License"). 633f2fefdSDarren Reed# You may not use this file except in compliance with the License. 733f2fefdSDarren Reed# 833f2fefdSDarren Reed# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 933f2fefdSDarren Reed# or http://www.opensolaris.org/os/licensing. 1033f2fefdSDarren Reed# See the License for the specific language governing permissions 1133f2fefdSDarren Reed# and limitations under the License. 1233f2fefdSDarren Reed# 1333f2fefdSDarren Reed# When distributing Covered Code, include this CDDL HEADER in each 1433f2fefdSDarren Reed# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1533f2fefdSDarren Reed# If applicable, add the following below this CDDL HEADER, with the 1633f2fefdSDarren Reed# fields enclosed by brackets "[]" replaced with your own identifying 1733f2fefdSDarren Reed# information: Portions Copyright [yyyy] [name of copyright owner] 1833f2fefdSDarren Reed# 1933f2fefdSDarren Reed# CDDL HEADER END 2033f2fefdSDarren Reed# 2133f2fefdSDarren Reed# 2233f2fefdSDarren Reed# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 2333f2fefdSDarren Reed# Use is subject to license terms. 247c478bd9Sstevel@tonic-gate# 25f3ac6781SToomas Soome# Copyright 2013 Nexenta Systems, Inc. All rights reserved. 26f3ac6781SToomas Soome# 27f3ac6781SToomas Soome# Copyright (c) 2012, Joyent Inc. All rights reserved. 28f3ac6781SToomas Soome# 297c478bd9Sstevel@tonic-gate# cmd/ipf/tools/Makefile 307c478bd9Sstevel@tonic-gate# 317c478bd9Sstevel@tonic-gate# 327c478bd9Sstevel@tonic-gate 33f3ac6781SToomas Soomeinclude ../../Makefile.cmd 34f3ac6781SToomas Soomeinclude ../../Makefile.cmd.64 35f3ac6781SToomas Soomeinclude ../Makefile.ipf 36f3ac6781SToomas Soomeinclude ../../Makefile.ctf 37f3ac6781SToomas Soome 387c478bd9Sstevel@tonic-gateLICENCE= IPFILTER.LICENCE 397c478bd9Sstevel@tonic-gate 40f3ac6781SToomas SoomePROG= ipf ipfs ipmon ipnat ippool ipfstat 41f3ac6781SToomas SoomeIPFPROG= ipftest 427c478bd9Sstevel@tonic-gate 43f3ac6781SToomas SoomeIPF_OBJS= ipf.o ipfcomp.o ipfzone.o ipf_y.o ipf_l.o 44f3ac6781SToomas SoomeIPFS_OBJS= ipfs.o ipfzone.o 45f3ac6781SToomas SoomeIPFSTAT_OBJS= ipfstat.o ipfzone.o 46f3ac6781SToomas SoomeIPMON_OBJS= ipmon.o ipfzone.o ipmon_y.o ipmon_l.o 47f3ac6781SToomas SoomeIPNAT_OBJS= ipnat.o ipfzone.o ipnat_y.o ipnat_l.o 48f3ac6781SToomas SoomeIPPOOL_OBJS= ippool.o ipfzone.o ippool_y.o ippool_l.o 49f3ac6781SToomas SoomeIPFTEST_OBJS= ipftest.o ipfzone.o \ 50f3ac6781SToomas Soome ip_fil.o ip_state.o ip_compat.o \ 51f3ac6781SToomas Soome ip_frag.o ip_nat.o ip_nat6.o fil.o \ 52f3ac6781SToomas Soome ip_htable.o ip_lookup.o \ 53f3ac6781SToomas Soome ip_proxy.o ip_auth.o ip_log.o \ 54f3ac6781SToomas Soome ipf_y.o ipf_l.o \ 55f3ac6781SToomas Soome ipnat_y.o ipnat_l.o \ 56f3ac6781SToomas Soome ippool_y.o ippool_l.o \ 57f3ac6781SToomas Soome ip_pool.o radix.o 587c478bd9Sstevel@tonic-gate 597c478bd9Sstevel@tonic-gateUSRLIBIPF= $(ROOTLIB)/ipf 607c478bd9Sstevel@tonic-gateUSRLIBIPFLICENCE= $(LICENCE:%=$(USRLIBIPF)/%) 617c478bd9Sstevel@tonic-gate 627c478bd9Sstevel@tonic-gate$(USRLIBIPFLICENCE):=FILEMODE= 0644 637c478bd9Sstevel@tonic-gate 64f3ac6781SToomas SoomeCFLAGS += -D_ELF64 65f3ac6781SToomas SoomeLDLIBS += -L ../lib -lipf 66f3ac6781SToomas Soome 67f3ac6781SToomas SoomeLDLIBS += $(LIBBPF) 68f3ac6781SToomas SoomeLDFLAGS += $(MAPFILE.NGB:%=-Wl,-M%) 69f3ac6781SToomas Soome 70f3ac6781SToomas SoomeCPPFLAGS += -I. -DIPFILTER_LOOKUP -DIPFILTER_LOG 71f3ac6781SToomas Soome 72f3ac6781SToomas Soomeipfstat.o := CPPFLAGS += -DSTATETOP 73f3ac6781SToomas Soomeipfstat := LDLIBS += -lcurses 74f3ac6781SToomas Soome 75f3ac6781SToomas Soomeipf := LDLIBS += -lsocket -lnsl 76f3ac6781SToomas Soomeipf := OBJS += $(IPF_OBJS) 77f3ac6781SToomas Soomeipfs := OBJS += $(IPFS_OBJS) 78f3ac6781SToomas Soomeipftest := LDLIBS += -lsocket -lnsl -lmd 79f3ac6781SToomas Soomeipftest := OBJS += $(IPFTEST_OBJS) 80f3ac6781SToomas Soomeipfstat := LDLIBS += -lsocket -lnsl -lkvm -lelf 81f3ac6781SToomas Soomeipfstat := OBJS += $(IPFSTAT_OBJS) 82f3ac6781SToomas Soomeipmon := LDLIBS += -lsocket -lnsl 83f3ac6781SToomas Soomeipmon := OBJS += $(IPMON_OBJS) 84f3ac6781SToomas Soomeipnat := LDLIBS += -lsocket -lnsl -lkvm -lelf 85f3ac6781SToomas Soomeipnat := OBJS += $(IPNAT_OBJS) 86f3ac6781SToomas Soomeippool := LDLIBS += -lsocket -lnsl -lkvm -lelf 87f3ac6781SToomas Soomeippool := OBJS += $(IPPOOL_OBJS) 88f3ac6781SToomas Soome 89*33efde42SToomas Soome# because of labels from yacc 90*33efde42SToomas Soomeipf_y.o := CERRWARN += -_gcc=-Wno-unused-label 91*33efde42SToomas Soomeipmon_y.o := CERRWARN += -_gcc=-Wno-unused-label 92*33efde42SToomas Soomeipnat_y.o := CERRWARN += -_gcc=-Wno-unused-label 93*33efde42SToomas Soomeippool_y.o := CERRWARN += -_gcc=-Wno-unused-label 94*33efde42SToomas Soome 95f3ac6781SToomas SoomeCLEANFILES += $(IPF_OBJS) $(IPFS_OBJS) $(IPFTEST_OBJS) $(IPFSTAT_OBJS) 96f3ac6781SToomas SoomeCLEANFILES += $(IPMON_OBJS) $(IPNAT_OBJS) $(IPPOOL_OBJS) 97f3ac6781SToomas SoomeCLOBBERFILES += $(IPFPROG) 98f3ac6781SToomas Soome 99f3ac6781SToomas SoomeROOTIPF= $(ROOTLIB)/ipf 100f3ac6781SToomas Soome 101f3ac6781SToomas SoomeROOTIPFPROG= $(IPFPROG:%=$(ROOTIPF)/%) 102f3ac6781SToomas Soome 103f3ac6781SToomas Soome.KEEP_STATE: 104f3ac6781SToomas Soome 105f3ac6781SToomas Soomeall: $(PROG) $(IPFPROG) 106f3ac6781SToomas Soome 107f3ac6781SToomas Soomeinstall: all install_local $(ROOTIPF) $(ROOTUSRSBINPROG) $(ROOTIPFPROG) 1087c478bd9Sstevel@tonic-gate 1097c478bd9Sstevel@tonic-gate$(USRLIBIPF): 1107c478bd9Sstevel@tonic-gate $(INS.dir) 1117c478bd9Sstevel@tonic-gate 1127c478bd9Sstevel@tonic-gate$(USRLIBIPF)/% : % 1137c478bd9Sstevel@tonic-gate $(INS.file) 1147c478bd9Sstevel@tonic-gate 115f3ac6781SToomas Soome$(ROOTIPF)/%: % 116f3ac6781SToomas Soome $(INS.file) 1177c478bd9Sstevel@tonic-gate 118f3ac6781SToomas Soomeipf: $(IPF_OBJS) $(LIBIPF) $(MAPFILE.NGB) 119f3ac6781SToomas Soome $(LINK.c) -o ipf $(IPF_OBJS) $(LDLIBS) 120f3ac6781SToomas Soome $(POST_PROCESS) 1217c478bd9Sstevel@tonic-gate 122f3ac6781SToomas Soomeipf_y.o: ipf_y.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \ 123f3ac6781SToomas Soome ipf_y.c ipf_l.h 124f3ac6781SToomas Soome 125f3ac6781SToomas Soomeipf_y.c ipf_y.h: ipf_y.y 126f3ac6781SToomas Soome $(YACC) -d -b ipf ipf_y.y 127f3ac6781SToomas Soome sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.c/' \ 128f3ac6781SToomas Soome ipf.tab.c > ipf_y.c 129f3ac6781SToomas Soome sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \ 130f3ac6781SToomas Soome ipf.tab.h > ipf_y.h 131f3ac6781SToomas Soome 132f3ac6781SToomas SoomeCLEANFILES += ipf.tab.c ipf.tab.h 133f3ac6781SToomas SoomeCLEANFILES += ipf_y.c ipf_y.h 134f3ac6781SToomas Soome 135f3ac6781SToomas Soomeipf_l.o: ipf_l.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \ 136f3ac6781SToomas Soome ipf_y.h ipf_l.h 137f3ac6781SToomas Soome 138f3ac6781SToomas Soomeipf_l.c: lexer.c $(COMMONIPF)/ipf.h $(COMMONIPF)/netinet/ip_fil.h 139f3ac6781SToomas Soome sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \ 140f3ac6781SToomas Soome -e 's/lexer.h/ipf_l.h/' lexer.c > $@ 141f3ac6781SToomas Soome 142f3ac6781SToomas Soomeipf_l.h: lexer.h 143f3ac6781SToomas Soome sed -e 's/yy/ipf_yy/g' lexer.h > $@ 144f3ac6781SToomas Soome 145f3ac6781SToomas SoomeCLEANFILES += ipf_l.c ipf_l.h 146f3ac6781SToomas Soome 147f3ac6781SToomas Soomeipfs: $(IPFS_OBJS) 148f3ac6781SToomas Soome $(LINK.c) -o ipfs $(IPFS_OBJS) $(LDLIBS) 149f3ac6781SToomas Soome $(POST_PROCESS) 150f3ac6781SToomas Soome 151f3ac6781SToomas Soomeipfstat: $(IPFSTAT_OBJS) $(MAPFILE.NGB) 152f3ac6781SToomas Soome $(LINK.c) -o ipfstat $(IPFSTAT_OBJS) $(LDLIBS) 153f3ac6781SToomas Soome $(POST_PROCESS) 154f3ac6781SToomas Soome 155f3ac6781SToomas Soomeipmon: $(IPMON_OBJS) $(LIBIPF) $(MAPFILE.NGB) 156f3ac6781SToomas Soome $(LINK.c) -o ipmon $(IPMON_OBJS) $(LDLIBS) 157f3ac6781SToomas Soome $(POST_PROCESS) 158f3ac6781SToomas Soome 159f3ac6781SToomas Soomeipmon_y.o: ipmon_y.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h 160f3ac6781SToomas Soome 161f3ac6781SToomas Soomeipmon_y.c ipmon_y.h: ipmon_y.y 162f3ac6781SToomas Soome $(YACC) -d -b ipmon ipmon_y.y 163f3ac6781SToomas Soome sed -e 's/yy/ipmon_yy/g' \ 164f3ac6781SToomas Soome -e 's/extern [a-z]* .*();//' \ 165f3ac6781SToomas Soome -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 166f3ac6781SToomas Soome ipmon.tab.c > ipmon_y.c 167f3ac6781SToomas Soome sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \ 168f3ac6781SToomas Soome ipmon.tab.h > ipmon_y.h 169f3ac6781SToomas Soome 170f3ac6781SToomas SoomeCLEANFILES += ipmon.tab.c ipmon.tab.h 171f3ac6781SToomas SoomeCLEANFILES += ipmon_y.c ipmon_y.h 172f3ac6781SToomas Soome 173f3ac6781SToomas Soomeipmon_l.o: ipmon_l.c $(COMMONIPF)/ipmon.h ipmon_y.h ipmon_l.h 174f3ac6781SToomas Soome 175f3ac6781SToomas Soomeipmon_l.c: lexer.c $(COMMONIPF)/ipmon.h 176f3ac6781SToomas Soome sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \ 177f3ac6781SToomas Soome -e 's/lexer.h/ipmon_l.h/' lexer.c > $@ 178f3ac6781SToomas Soome 179f3ac6781SToomas Soomeipmon_l.h: lexer.h 180f3ac6781SToomas Soome sed -e 's/yy/ipmon_yy/g' lexer.h > $@ 181f3ac6781SToomas Soome 182f3ac6781SToomas SoomeCLEANFILES += ipmon_l.c ipmon_l.h 183f3ac6781SToomas Soome 184f3ac6781SToomas Soomeipnat: $(IPNAT_OBJS) $(LIBIPF) $(MAPFILE.NGB) 185f3ac6781SToomas Soome $(LINK.c) -o ipnat $(IPNAT_OBJS) $(LDLIBS) 186f3ac6781SToomas Soome $(POST_PROCESS) 187f3ac6781SToomas Soome 188f3ac6781SToomas Soomeipnat_y.o: ipnat_y.c $(COMMONIPF)/netinet/ip_nat.h ipnat_y.h ipnat_l.h 189f3ac6781SToomas Soome 190f3ac6781SToomas Soomeipnat_y.c ipnat_y.h: ipnat_y.y 191f3ac6781SToomas Soome $(YACC) -d -b ipnat ipnat_y.y 192f3ac6781SToomas Soome sed -e 's/yy/ipnat_yy/g' \ 193f3ac6781SToomas Soome -e 's/extern [a-z]* .*();//' \ 194f3ac6781SToomas Soome -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 195f3ac6781SToomas Soome ipnat.tab.c > ipnat_y.c 196f3ac6781SToomas Soome sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \ 197f3ac6781SToomas Soome ipnat.tab.h > ipnat_y.h 198f3ac6781SToomas Soome 199f3ac6781SToomas SoomeCLEANFILES += ipnat.tab.c ipnat.tab.h 200f3ac6781SToomas SoomeCLEANFILES += ipnat_y.c ipnat_y.h 201f3ac6781SToomas Soome 202f3ac6781SToomas Soomeipnat_l.o: ipnat_l.c $(COMMONIPF)/netinet/ip_nat.h ipnat_l.h 203f3ac6781SToomas Soome 204f3ac6781SToomas Soomeipnat_l.c: lexer.c $(COMMONIPF)/netinet/ip_nat.h 205f3ac6781SToomas Soome sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \ 206f3ac6781SToomas Soome -e 's/lexer.h/ipnat_l.h/' lexer.c > $@ 207f3ac6781SToomas Soome 208f3ac6781SToomas Soomeipnat_l.h: lexer.h 209f3ac6781SToomas Soome sed -e 's/yy/ipnat_yy/g' lexer.h > $@ 210f3ac6781SToomas Soome 211f3ac6781SToomas SoomeCLEANFILES += ipnat_l.c ipnat_l.h 212f3ac6781SToomas Soome 213f3ac6781SToomas Soomeippool: $(IPPOOL_OBJS) $(LIBIPF) $(MAPFILE.NGB) 214f3ac6781SToomas Soome $(LINK.c) -o ippool $(IPPOOL_OBJS) $(LDLIBS) 215f3ac6781SToomas Soome $(POST_PROCESS) 216f3ac6781SToomas Soome 217f3ac6781SToomas Soomeippool_y.o: ippool_y.c $(COMMONIPF)/netinet/ip_pool.h ippool_y.h ippool_l.h 218f3ac6781SToomas Soome 219f3ac6781SToomas Soomeippool_y.c ippool_y.h: ippool_y.y 220f3ac6781SToomas Soome $(YACC) -d -b ippool ippool_y.y 221f3ac6781SToomas Soome sed -e 's/yy/ippool_yy/g' \ 222f3ac6781SToomas Soome -e 's/extern [a-z]* .*();//' \ 223f3ac6781SToomas Soome -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 224f3ac6781SToomas Soome ippool.tab.c > ippool_y.c 225f3ac6781SToomas Soome sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \ 226f3ac6781SToomas Soome ippool.tab.h > ippool_y.h 227f3ac6781SToomas Soome 228f3ac6781SToomas SoomeCLEANFILES += ippool.tab.c ippool.tab.h 229f3ac6781SToomas SoomeCLEANFILES += ippool_y.c ippool_y.h 230f3ac6781SToomas Soome 231f3ac6781SToomas Soomeippool_l.o: ippool_l.c $(COMMONIPF)/netinet/ip_pool.h ippool_l.h 232f3ac6781SToomas Soome 233f3ac6781SToomas Soomeippool_l.c: lexer.c $(COMMONIPF)/netinet/ip_pool.h 234f3ac6781SToomas Soome sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \ 235f3ac6781SToomas Soome -e 's/lexer.h/ippool_l.h/' lexer.c > $@ 236f3ac6781SToomas Soome 237f3ac6781SToomas Soomeippool_l.h: lexer.h 238f3ac6781SToomas Soome sed -e 's/yy/ippool_yy/g' lexer.h > $@ 239f3ac6781SToomas Soome 240f3ac6781SToomas SoomeCLEANFILES += ippool_l.c ippool_l.h 241f3ac6781SToomas Soome 242f3ac6781SToomas Soomeipftest: $(IPFTEST_OBJS) $(LIBIPF) $(MAPFILE.NGB) 243f3ac6781SToomas Soome $(LINK.c) $(ZIGNORE) -o ipftest $(IPFTEST_OBJS) $(LDLIBS) 244f3ac6781SToomas Soome $(POST_PROCESS) 245f3ac6781SToomas Soome 246f3ac6781SToomas Soomeclean: 247f3ac6781SToomas Soome -$(RM) $(CLEANFILES) 248f3ac6781SToomas Soome 249f3ac6781SToomas Soome# 250f3ac6781SToomas Soome# NOTE: all rules must use relative paths otherwise absolute paths will be 251f3ac6781SToomas Soome# embedded into the binaries making them false positives and 252f3ac6781SToomas Soome# reported by wsdiff 253f3ac6781SToomas Soome# 254f3ac6781SToomas Soome 255f3ac6781SToomas Soome%.o: ../../../uts/common/inet/ipf/%.c 256f3ac6781SToomas Soome $(COMPILE.c) $< 257f3ac6781SToomas Soome $(POST_PROCESS_O) 258f3ac6781SToomas Soome 259f3ac6781SToomas Soome%.o: ../../../common/net/patricia/%.c 260f3ac6781SToomas Soome $(COMPILE.c) $< 261f3ac6781SToomas Soome $(POST_PROCESS_O) 2627c478bd9Sstevel@tonic-gate 263b6805bf7SGordon Rossinstall_local: $(USRLIBIPF) $(USRLIBIPFLICENCE) 2647c478bd9Sstevel@tonic-gate 265f3ac6781SToomas Soomeinclude ../../Makefile.targ 266