add web module for ip6tables
[tomato.git] / release / src / router / iptables / extensions / Makefile
blob97fe1eb6da342cdab2eb4bd8c4bc7f7b37579ddb
1 #! /usr/bin/make
3 # WARNING:
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
6 # package (HW)
8 #PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack ecn esp hashlimit helper icmp iprange length limit mac mark multiport owner physdev pkttype policy realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
9 #PF6_EXT_SLIB:=connmark eui64 hl icmp6 length limit mac mark multiport owner physdev policy standard state tcp udp CONNMARK HL LOG NFQUEUE MARK TRACE
12 PF_EXT_SLIB:=CLASSIFY CONNMARK DNAT DSCP LOG MARK MASQUERADE REDIRECT REJECT
13 PF_EXT_SLIB+=ROUTE SNAT TCPMSS TOS TRIGGER TTL NETMAP
14 PF_EXT_SLIB+=condition connlimit connmark geoip icmp iprange layer7
15 PF_EXT_SLIB+=length limit mac mark multiport recent standard state quota
16 PF_EXT_SLIB+=tcp tcpmss time tos u32 udp web dscp connbytes webmon string
17 PF_EXT_SLIB+=IMQ ipp2p
18 ifeq ($(CONFIG_LINUX26),y)
19 PF_EXT_SLIB+=policy
20 PF_EXT_SLIB+=hashlimit NFQUEUE NOTRACK
21 PF_EXT_SLIB+=set
22 endif
24 PF_EXT_SLIB+=account
26 ifeq ($(DO_IPV6), 1)
27 PF6_EXT_SLIB:=connmark icmp6 length limit mac mark multiport standard state rt hl web string
28 PF6_EXT_SLIB+=tcp udp CONNMARK LOG MARK IMQ TCPMSS REJECT
29 ifeq ($(CONFIG_LINUX26),y)
30 PF6_EXT_SLIB+=connlimit hashlimit recent NFQUEUE ROUTE HL connbytes iprange webmon dscp
31 endif
32 endif
34 ifeq ($(DO_SELINUX), 1)
35 PF_EXT_SE_SLIB:=SECMARK CONNSECMARK
36 PF6_EXT_SE_SLIB:=SECMARK CONNSECMARK
37 endif
39 # Optionals
40 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
41 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
43 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
44 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
46 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)))
47 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)))
48 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)))
49 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)))
51 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
52 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
53 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
54 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
55 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
56 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
57 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
58 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
61 allman:
62 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
63 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
64 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
66 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
67 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
69 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
71 ifndef NO_SHARED_LIBS
72 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
73 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
74 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
75 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
77 ifeq ($(DO_IPV6), 1)
78 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
79 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
80 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
81 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
82 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
83 endif
84 else # NO_SHARED_LIBS
85 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
86 EXT_OBJS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).o)
87 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
88 EXT_FUNC+=$(foreach T,$(PF_EXT_SE_SLIB),ipt_$(T))
89 EXT_OBJS+= extensions/initext.o
90 ifeq ($(DO_IPV6), 1)
91 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
92 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).o)
93 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
94 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SE_SLIB),ip6t_$(T))
95 EXT6_OBJS+= extensions/initext6.o
96 endif # DO_IPV6
97 endif # NO_SHARED_LIBS
99 ifndef TOPLEVEL_INCLUDED
100 local:
101 cd .. && $(MAKE) $(SHARED_LIBS) $(SHARED_SE_LIBS)
102 endif
104 ifdef NO_SHARED_LIBS
105 extensions/libext.a: $(EXT_OBJS)
106 rm -f $@; ar crv $@ $(EXT_OBJS)
108 extensions/libext6.a: $(EXT6_OBJS)
109 rm -f $@; ar crv $@ $(EXT6_OBJS)
111 extensions/initext.o: extensions/initext.c
112 extensions/initext6.o: extensions/initext6.c
114 extensions/initext.c: extensions/Makefile
115 echo "" > $@
116 for i in $(EXT_FUNC); do \
117 echo "extern void $${i}_init(void);" >> $@; \
118 done
119 echo "void init_extensions(void) {" >> $@
120 for i in $(EXT_FUNC); do \
121 echo " $${i}_init();" >> $@; \
122 done
123 echo "}" >> $@
125 extensions/initext6.c: extensions/Makefile
126 echo "" > $@
127 for i in $(EXT6_FUNC); do \
128 echo "extern void $${i}_init(void);" >> $@; \
129 done
130 echo "void init_extensions(void) {" >> $@
131 for i in $(EXT6_FUNC); do \
132 echo " $${i}_init();" >> $@; \
133 done
134 echo "}" >> $@
136 extensions/lib%.o: extensions/lib%.c
137 $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
139 endif
141 EXTRAS += extensions/libipt_targets.man
142 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
143 @for ext in $(PF_EXT_MAN_TARGETS); do \
144 echo ".SS $$ext" ;\
145 cat extensions/libipt_$$ext.man ;\
146 done >extensions/libipt_targets.man
147 @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
148 extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
149 for ext in $${extra:-""}; do \
150 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
151 cat extensions/libipt_$$ext.man ;\
152 done ;\
153 fi >>extensions/libipt_targets.man
155 EXTRAS += extensions/libipt_matches.man
156 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
157 @for ext in $(PF_EXT_MAN_MATCHES); do \
158 echo ".SS $$ext" ;\
159 cat extensions/libipt_$$ext.man ;\
160 done >extensions/libipt_matches.man
161 @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
162 extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
163 for ext in $${extra:-""}; do \
164 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
165 cat extensions/libipt_$$ext.man ;\
166 done ;\
167 fi >>extensions/libipt_matches.man
169 EXTRAS += extensions/libip6t_targets.man
170 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
171 @for ext in $(PF6_EXT_MAN_TARGETS); do \
172 echo ".SS $$ext" ;\
173 cat extensions/libip6t_$$ext.man ;\
174 done >extensions/libip6t_targets.man
175 @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
176 extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
177 for ext in $${extra:-""}; do \
178 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
179 cat extensions/libip6t_$$ext.man ;\
180 done ;\
181 fi >>extensions/libip6t_targets.man
183 EXTRAS += extensions/libip6t_matches.man
184 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
185 @for ext in $(PF6_EXT_MAN_MATCHES); do \
186 echo ".SS $$ext" ;\
187 cat extensions/libip6t_$$ext.man ;\
188 done >extensions/libip6t_matches.man
189 @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
190 extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
191 for ext in $${extra:-""}; do \
192 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
193 cat extensions/libip6t_$$ext.man ;\
194 done ;\
195 fi >>extensions/libip6t_matches.man
197 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
198 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
199 cp $< $@
201 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
202 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
203 cp $< $@