4 # only add extensions here that are either present in the kernel, or whose
5 # header files are present in the include/linux directory of this iptables
10 #PF_EXT_SLIB:=ah connlimit connmark conntrack dscp ecn esp helper icmp iprange length limit mac mark multiport owner physdev pkttype realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
12 ifneq ($(strip $(BRCM_KERNEL_NF_FIREWALL)),)
13 PF_EXT_SLIB+=connlimit icmp limit standard state tcp udp LOG
15 ifneq ($(strip $(BRCM_KERNEL_NF_NAT)),)
16 PF_EXT_SLIB+=DNAT MASQUERADE REDIRECT SNAT
18 ifneq ($(strip $(BRCM_KERNEL_NF_MANGLE)),)
19 PF_EXT_SLIB+=mark MARK FTOS
23 #PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner standard tcp udp HL LOG MARK TRACE
26 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
27 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
31 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
32 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
34 PF_EXT_MAN_ALL_MATCHES:=$(foreach T,$(PF_EXT_ALL_SLIB),$(shell test -f extensions/libipt_$(T).man && grep -q register_match extensions/libipt_$(T).c && echo $(T)))
35 PF_EXT_MAN_ALL_TARGETS:=$(foreach T,$(PF_EXT_ALL_SLIB),$(shell test -f extensions/libipt_$(T).man && grep -q register_target extensions/libipt_$(T).c && echo $(T)))
36 PF6_EXT_MAN_ALL_MATCHES:=$(foreach T,$(PF6_EXT_ALL_SLIB),$(shell test -f extensions/libip6t_$(T).man && grep -q register_match6 extensions/libip6t_$(T).c && echo $(T)))
37 PF6_EXT_MAN_ALL_TARGETS:=$(foreach T,$(PF6_EXT_ALL_SLIB),$(shell test -f extensions/libip6t_$(T).man && grep -q register_target6 extensions/libip6t_$(T).c && echo $(T)))
39 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
40 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
41 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
42 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
43 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
44 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
45 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
46 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
50 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
51 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
52 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
54 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
55 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
57 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
58 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
61 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
62 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
65 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
66 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
69 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
70 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
71 EXT_OBJS+= extensions/initext.o
73 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
74 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
75 EXT6_OBJS+= extensions/initext6.o
77 endif # NO_SHARED_LIBS
79 ifndef TOPLEVEL_INCLUDED
81 cd .. && $(MAKE) $(SHARED_LIBS)
86 extensions/libext.a: $(EXT_OBJS)
87 # rm -f $@; ar crv $@ $(EXT_OBJS)
88 rm -f $@; $(AR) crv $@ $(EXT_OBJS)
90 extensions/libext6.a: $(EXT6_OBJS)
91 # rm -f $@; ar crv $@ $(EXT6_OBJS)
92 rm -f $@; $(AR) crv $@ $(EXT6_OBJS)
95 extensions/initext.o: extensions/initext.c
96 extensions/initext6.o: extensions/initext6.c
98 extensions/initext.c: extensions/Makefile
100 for i in $(EXT_FUNC); do \
101 echo "extern void $${i}_init(void);" >> $@; \
103 echo "void init_extensions(void) {" >> $@
104 for i in $(EXT_FUNC); do \
105 echo " $${i}_init();" >> $@; \
109 extensions/initext6.c: extensions/Makefile
111 for i in $(EXT6_FUNC); do \
112 echo "extern void $${i}_init(void);" >> $@; \
114 echo "void init_extensions(void) {" >> $@
115 for i in $(EXT6_FUNC); do \
116 echo " $${i}_init();" >> $@; \
120 extensions/lib%.o: extensions/lib%.c
121 $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
125 EXTRAS += extensions/libipt_targets.man
126 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
127 @for ext in $(PF_EXT_MAN_TARGETS); do \
129 cat extensions/libipt_$$ext.man ;\
130 done >extensions/libipt_targets.man
131 @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
132 extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
133 for ext in $${extra:-""}; do \
134 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
135 cat extensions/libipt_$$ext.man ;\
137 fi >>extensions/libipt_targets.man
139 EXTRAS += extensions/libipt_matches.man
140 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
141 @for ext in $(PF_EXT_MAN_MATCHES); do \
143 cat extensions/libipt_$$ext.man ;\
144 done >extensions/libipt_matches.man
145 @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
146 extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
147 for ext in $${extra:-""}; do \
148 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
149 cat extensions/libipt_$$ext.man ;\
151 fi >>extensions/libipt_matches.man
153 EXTRAS += extensions/libip6t_targets.man
154 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
155 @for ext in $(PF6_EXT_MAN_TARGETS); do \
157 cat extensions/libip6t_$$ext.man ;\
158 done >extensions/libip6t_targets.man
159 @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
160 extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
161 for ext in $${extra:-""}; do \
162 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
163 cat extensions/libip6t_$$ext.man ;\
165 fi >>extensions/libip6t_targets.man
167 EXTRAS += extensions/libip6t_matches.man
168 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
169 @for ext in $(PF6_EXT_MAN_MATCHES); do \
171 cat extensions/libip6t_$$ext.man ;\
172 done >extensions/libip6t_matches.man
173 @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
174 extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
175 for ext in $${extra:-""}; do \
176 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
177 cat extensions/libip6t_$$ext.man ;\
179 fi >>extensions/libip6t_matches.man
181 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
182 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
185 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
186 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables