1 # 2 # CDDL HEADER START 3 # 4 # The contents of this file are subject to the terms of the 5 # Common Development and Distribution License (the "License"). 6 # You may not use this file except in compliance with the License. 7 # 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 # or http://www.opensolaris.org/os/licensing. 10 # See the License for the specific language governing permissions 11 # and limitations under the License. 12 # 13 # When distributing Covered Code, include this CDDL HEADER in each 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 # If applicable, add the following below this CDDL HEADER, with the 16 # fields enclosed by brackets "[]" replaced with your own identifying 17 # information: Portions Copyright [yyyy] [name of copyright owner] 18 # 19 # CDDL HEADER END 20 # 21 # 22 # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 # Use is subject to license terms. 24 # 25 # Copyright 2013 Nexenta Systems, Inc. All rights reserved. 26 # Copyright (c) 2012, Joyent Inc. All rights reserved. 27 # 28 29 PROG= ipf ipfs ipmon ipnat ippool ipfstat 30 IPFPROG= ipftest 31 32 IPF_OBJS= ipf.o ipfcomp.o ipfzone.o ipf_y.o ipf_l.o 33 IPFS_OBJS= ipfs.o ipfzone.o 34 IPFSTAT_OBJS= ipfstat.o ipfzone.o 35 IPMON_OBJS= ipmon.o ipfzone.o ipmon_y.o ipmon_l.o 36 IPNAT_OBJS= ipnat.o ipfzone.o ipnat_y.o ipnat_l.o 37 IPPOOL_OBJS= ippool.o ipfzone.o ippool_y.o ippool_l.o 38 IPFTEST_OBJS= ipftest.o ipfzone.o \ 39 ip_fil.o ip_state.o ip_compat.o \ 40 ip_frag.o ip_nat.o ip_nat6.o fil.o \ 41 ip_htable.o ip_lookup.o \ 42 ip_proxy.o ip_auth.o ip_log.o \ 43 ipf_y.o ipf_l.o \ 44 ipnat_y.o ipnat_l.o \ 45 ippool_y.o ippool_l.o \ 46 ip_pool.o radix.o 47 48 OBJS= $(IPF_OBJS) $(IPFS_OBJS) $(IPFSTAT_OBJS) \ 49 $(IPMON_OBJS) $(IPNAT_OBJS) $(IPPOOL_OBJS) $(IPFTEST_OBJS) 50 51 OBJSL= $(IPF_OBJS) $(IPFS_OBJS) $(IPFSTAT_OBJS) \ 52 $(IPMON_OBJS) $(IPNAT_OBJS) 53 54 SRCS= $(OBJSL:%.o=../%.c) 55 56 include ../../../Makefile.cmd 57 include ../../Makefile.ipf 58 59 LDLIBS += $(LIBBPF) 60 LDFLAGS += $(MAPFILE.NGB:%=-M%) 61 62 CPPFLAGS += -I. -DIPFILTER_LOOKUP -DIPFILTER_LOG 63 64 ipfstat.o := CPPFLAGS += -DSTATETOP 65 ipfstat := LDLIBS += -lcurses 66 67 ipf := LDLIBS += -lsocket -lnsl 68 ipftest := LDLIBS += -lsocket -lnsl -lmd 69 ipfstat := LDLIBS += -lsocket -lnsl -lkvm -lelf 70 ipmon := LDLIBS += -lsocket -lnsl 71 ipnat := LDLIBS += -lsocket -lnsl -lkvm -lelf 72 ippool := LDLIBS += -lsocket -lnsl -lkvm -lelf 73 74 CLEANFILES += $(OBJS) 75 CLOBBERFILES += $(IPFPROG) 76 77 ROOTIPF= $(ROOTLIB)/ipf 78 ROOTIPF32= $(ROOTIPF)/$(MACH32) 79 ROOTIPF64= $(ROOTIPF)/$(MACH64) 80 81 ROOTIPFPROG32= $(IPFPROG:%=$(ROOTIPF32)/%) 82 ROOTIPFPROG64= $(IPFPROG:%=$(ROOTIPF64)/%) 83 84 ROOTIPFLINKS= $(IPFPROG:%=$(ROOTIPF)/%) 85 ROOTUSRSBINLINKS= $(PROG:%=$(ROOTUSRSBIN)/%) 86 87 all: 88 89 $(ROOTIPF32): 90 $(INS.dir) 91 92 $(ROOTIPF64): 93 $(INS.dir) 94 95 $(ROOTIPF)/%: % 96 $(INS.file) 97 98 $(ROOTIPF32)/%: % 99 $(INS.file) 100 101 $(ROOTIPF64)/%: % 102 $(INS.file) 103 104 $(ROOTUSRSBINLINKS): FRC 105 -$(RM) $@; $(LN) $(ISAEXEC) $@ 106 107 $(ROOTIPFLINKS): FRC 108 -$(RM) $@; $(LN) $(ISAEXEC) $@ 109 110 111 .KEEP_STATE: 112 113 ipf: $(IPF_OBJS) $(LIBIPF) $(MAPFILE.NGB) 114 $(LINK.c) -o ipf $(IPF_OBJS) $(LDLIBS) 115 $(POST_PROCESS) 116 117 ipf_y.o: ../ipf_y.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \ 118 ../ipf_y.c ../ipf_l.h 119 120 ../ipf_y.c ../ipf_y.h: ../ipf_y.y 121 $(YACC) -d -b ipf ../ipf_y.y 122 sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.c/' \ 123 ipf.tab.c > ../ipf_y.c 124 sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \ 125 ipf.tab.h > ../ipf_y.h 126 127 CLEANFILES += ipf.tab.c ipf.tab.h 128 CLEANFILES += ../ipf_y.c ../ipf_y.h 129 130 ipf_l.o: ../ipf_l.c $(COMMONIPF)/netinet/ip_fil.h $(COMMONIPF)/ipf.h \ 131 ../ipf_y.h ../ipf_l.h 132 $(COMPILE.c) ../ipf_l.c -o $@ 133 134 ../ipf_l.c: ../lexer.c $(COMMONIPF)/ipf.h $(COMMONIPF)/netinet/ip_fil.h 135 sed -e 's/yy/ipf_yy/g' -e 's/y.tab.h/ipf_y.h/' \ 136 -e 's/lexer.h/ipf_l.h/' ../lexer.c > $@ 137 138 ../ipf_l.h: ../lexer.h 139 sed -e 's/yy/ipf_yy/g' ../lexer.h > $@ 140 141 CLEANFILES += ../ipf_l.c ../ipf_l.h 142 143 144 ipfs: $(IPFS_OBJS) 145 $(LINK.c) -o ipfs $(IPFS_OBJS) $(LDLIBS) 146 $(POST_PROCESS) 147 148 ipfstat: $(IPFSTAT_OBJS) $(MAPFILE.NGB) 149 $(LINK.c) -o ipfstat $(IPFSTAT_OBJS) $(LDLIBS) 150 $(POST_PROCESS) 151 152 ipmon: $(IPMON_OBJS) $(LIBIPF) $(MAPFILE.NGB) 153 $(LINK.c) -o ipmon $(IPMON_OBJS) $(LDLIBS) 154 $(POST_PROCESS) 155 156 ipmon_y.o: ../ipmon_y.c $(COMMONIPF)/ipmon.h \ 157 ../ipmon_y.h ../ipmon_l.h 158 159 ../ipmon_y.c ../ipmon_y.h: ../ipmon_y.y 160 $(YACC) -d -b ipmon ../ipmon_y.y 161 sed -e 's/yy/ipmon_yy/g' \ 162 -e 's/extern [a-z]* .*();//' \ 163 -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 164 ipmon.tab.c > ../ipmon_y.c 165 sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \ 166 ipmon.tab.h > ../ipmon_y.h 167 168 CLEANFILES += ipmon.tab.c ipmon.tab.h 169 CLEANFILES += ../ipmon_y.c ../ipmon_y.h 170 171 ipmon_l.o: ../ipmon_l.c $(COMMONIPF)/ipmon.h ../ipmon_y.h ../ipmon_l.h 172 $(COMPILE.c) ../ipmon_l.c -o $@ 173 174 ../ipmon_l.c: ../lexer.c $(COMMONIPF)/ipmon.h 175 sed -e 's/yy/ipmon_yy/g' -e 's/y.tab.h/ipmon_y.h/' \ 176 -e 's/lexer.h/ipmon_l.h/' ../lexer.c > $@ 177 178 ../ipmon_l.h: ../lexer.h 179 sed -e 's/yy/ipmon_yy/g' ../lexer.h > $@ 180 181 CLEANFILES += ../ipmon_l.c ../ipmon_l.h 182 183 ipnat: $(IPNAT_OBJS) $(LIBIPF) $(MAPFILE.NGB) 184 $(LINK.c) -o ipnat $(IPNAT_OBJS) $(LDLIBS) 185 $(POST_PROCESS) 186 187 ipnat_y.o: ../ipnat_y.c $(COMMONIPF)/netinet/ip_nat.h \ 188 ../ipnat_y.h ../ipnat_l.h 189 190 ../ipnat_y.c ../ipnat_y.h: ../ipnat_y.y 191 $(YACC) -d -b ipnat ../ipnat_y.y 192 sed -e 's/yy/ipnat_yy/g' \ 193 -e 's/extern [a-z]* .*();//' \ 194 -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 195 ipnat.tab.c > ../ipnat_y.c 196 sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \ 197 ipnat.tab.h > ../ipnat_y.h 198 199 CLEANFILES += ipnat.tab.c ipnat.tab.h 200 CLEANFILES += ../ipnat_y.c ../ipnat_y.h 201 202 ipnat_l.o: ../ipnat_l.c $(COMMONIPF)/netinet/ip_nat.h ../ipnat_l.h 203 $(COMPILE.c) ../ipnat_l.c -o $@ 204 205 ../ipnat_l.c: ../lexer.c $(COMMONIPF)/netinet/ip_nat.h 206 sed -e 's/yy/ipnat_yy/g' -e 's/y.tab.h/ipnat_y.h/' \ 207 -e 's/lexer.h/ipnat_l.h/' ../lexer.c > $@ 208 209 ../ipnat_l.h: ../lexer.h 210 sed -e 's/yy/ipnat_yy/g' ../lexer.h > $@ 211 212 CLEANFILES += ../ipnat_l.c ../ipnat_l.h 213 214 ippool: $(IPPOOL_OBJS) $(LIBIPF) $(MAPFILE.NGB) 215 $(LINK.c) -o ippool $(IPPOOL_OBJS) $(LDLIBS) 216 $(POST_PROCESS) 217 218 ippool_y.o: ../ippool_y.c $(COMMONIPF)/netinet/ip_pool.h \ 219 ../ippool_y.h ../ippool_l.h 220 221 ../ippool_y.c ../ippool_y.h: ../ippool_y.y 222 $(YACC) -d -b ippool ../ippool_y.y 223 sed -e 's/yy/ippool_yy/g' \ 224 -e 's/extern [a-z]* .*();//' \ 225 -e 's/^\(static [a-z]* .*\)();/\1(void);/' \ 226 ippool.tab.c > ../ippool_y.c 227 sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \ 228 ippool.tab.h > ../ippool_y.h 229 230 CLEANFILES += ippool.tab.c ippool.tab.h 231 CLEANFILES += ../ippool_y.c ../ippool_y.h 232 233 ippool_l.o: ../ippool_l.c $(COMMONIPF)/netinet/ip_pool.h ../ippool_l.h 234 $(COMPILE.c) ../ippool_l.c -o $@ 235 236 ../ippool_l.c: ../lexer.c $(COMMONIPF)/netinet/ip_pool.h 237 sed -e 's/yy/ippool_yy/g' -e 's/y.tab.h/ippool_y.h/' \ 238 -e 's/lexer.h/ippool_l.h/' ../lexer.c > $@ 239 240 ../ippool_l.h: ../lexer.h 241 sed -e 's/yy/ippool_yy/g' ../lexer.h > $@ 242 243 CLEANFILES += ../ippool_l.c ../ippool_l.h 244 245 ipftest: $(IPFTEST_OBJS) $(LIBIPF) $(MAPFILE.NGB) 246 $(LINK.c) $(ZIGNORE) -o ipftest $(IPFTEST_OBJS) $(LDLIBS) 247 $(POST_PROCESS) 248 249 clean: 250 -$(RM) $(CLEANFILES) 251 252 lint: lint_SRCS 253 254 # 255 # NOTE: all rules must use relative paths otherwise absolute paths will be 256 # embedded into the binaries making them false positives and 257 # reported by wsdiff 258 # 259 260 %.o: ../../../../uts/common/inet/ipf/%.c 261 $(COMPILE.c) $< 262 263 %.o: ../%.c 264 $(COMPILE.c) $< 265 266 %.o: ../../../../common/net/patricia/%.c 267 $(COMPILE.c) $< 268 269 include ../../../Makefile.targ 270 271 FRC: