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: