Added IPSec support cd ...
[tomato.git] / release / src / router / iptables / extensions / Makefile
blob45e9a3f028267706b91f0c923c1b78ff9513ec4d
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
17 PF_EXT_SLIB+=IMQ ipp2p
18 ifeq ($(CONFIG_LINUX26),y)
19 PF_EXT_SLIB+=policy
20 PF_EXT_SLIB+=hashlimit NFQUEUE NOTRACK
21 endif
23 PF_EXT_SLIB+=account
25 ifeq ($(DO_IPV6), 1)
26 PF6_EXT_SLIB:=connmark icmp6 length limit mac mark multiport standard state rt hl web
27 PF6_EXT_SLIB+=tcp udp CONNMARK LOG MARK IMQ TCPMSS REJECT
28 ifeq ($(CONFIG_LINUX26),y)
29 PF6_EXT_SLIB+=connlimit hashlimit recent NFQUEUE ROUTE HL connbytes iprange webmon dscp
30 endif
31 endif
33 ifeq ($(DO_SELINUX), 1)
34 PF_EXT_SE_SLIB:=SECMARK CONNSECMARK
35 PF6_EXT_SE_SLIB:=SECMARK CONNSECMARK
36 endif
38 # Optionals
39 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
40 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
42 PF_EXT_ALL_SLIB:=$(patsubst extensions/libipt_%.c, %, $(wildcard extensions/libipt_*.c))
43 PF6_EXT_ALL_SLIB:=$(patsubst extensions/libip6t_%.c, %, $(wildcard extensions/libip6t_*.c))
45 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)))
46 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)))
47 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)))
48 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)))
50 PF_EXT_MAN_MATCHES:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_MATCHES))
51 PF_EXT_MAN_TARGETS:=$(filter $(PF_EXT_ALL_SLIB), $(PF_EXT_MAN_ALL_TARGETS))
52 PF_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF_EXT_MAN_MATCHES), $(PF_EXT_MAN_ALL_MATCHES))
53 PF_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF_EXT_MAN_TARGETS), $(PF_EXT_MAN_ALL_TARGETS))
54 PF6_EXT_MAN_MATCHES:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_MATCHES))
55 PF6_EXT_MAN_TARGETS:=$(filter $(PF6_EXT_ALL_SLIB), $(PF6_EXT_MAN_ALL_TARGETS))
56 PF6_EXT_MAN_EXTRA_MATCHES:=$(filter-out $(PF6_EXT_MAN_MATCHES), $(PF6_EXT_MAN_ALL_MATCHES))
57 PF6_EXT_MAN_EXTRA_TARGETS:=$(filter-out $(PF6_EXT_MAN_TARGETS), $(PF6_EXT_MAN_ALL_TARGETS))
60 allman:
61 @echo ALL_SLIB: $(PF_EXT_ALL_SLIB)
62 @echo ALL_MATCH: $(PF_EXT_MAN_ALL_MATCHES)
63 @echo ALL_TARGET: $(PF_EXT_MAN_ALL_TARGETS)
65 PF_EXT_SLIB+=$(PF_EXT_SLIB_OPTS)
66 PF6_EXT_SLIB+=$(PF6_EXT_SLIB_OPTS)
68 OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
70 ifndef NO_SHARED_LIBS
71 SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
72 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
73 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
74 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libipt_$(T).so)
76 ifeq ($(DO_IPV6), 1)
77 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
78 SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
79 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
80 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
81 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DESTDIR)$(LIBDIR)/iptables/libip6t_$(T).so)
82 endif
83 else # NO_SHARED_LIBS
84 EXT_OBJS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).o)
85 EXT_OBJS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).o)
86 EXT_FUNC+=$(foreach T,$(PF_EXT_SLIB),ipt_$(T))
87 EXT_FUNC+=$(foreach T,$(PF_EXT_SE_SLIB),ipt_$(T))
88 EXT_OBJS+= extensions/initext.o
89 ifeq ($(DO_IPV6), 1)
90 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).o)
91 EXT6_OBJS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).o)
92 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SLIB),ip6t_$(T))
93 EXT6_FUNC+=$(foreach T,$(PF6_EXT_SE_SLIB),ip6t_$(T))
94 EXT6_OBJS+= extensions/initext6.o
95 endif # DO_IPV6
96 endif # NO_SHARED_LIBS
98 ifndef TOPLEVEL_INCLUDED
99 local:
100 cd .. && $(MAKE) $(SHARED_LIBS) $(SHARED_SE_LIBS)
101 endif
103 ifdef NO_SHARED_LIBS
104 extensions/libext.a: $(EXT_OBJS)
105 rm -f $@; ar crv $@ $(EXT_OBJS)
107 extensions/libext6.a: $(EXT6_OBJS)
108 rm -f $@; ar crv $@ $(EXT6_OBJS)
110 extensions/initext.o: extensions/initext.c
111 extensions/initext6.o: extensions/initext6.c
113 extensions/initext.c: extensions/Makefile
114 echo "" > $@
115 for i in $(EXT_FUNC); do \
116 echo "extern void $${i}_init(void);" >> $@; \
117 done
118 echo "void init_extensions(void) {" >> $@
119 for i in $(EXT_FUNC); do \
120 echo " $${i}_init();" >> $@; \
121 done
122 echo "}" >> $@
124 extensions/initext6.c: extensions/Makefile
125 echo "" > $@
126 for i in $(EXT6_FUNC); do \
127 echo "extern void $${i}_init(void);" >> $@; \
128 done
129 echo "void init_extensions(void) {" >> $@
130 for i in $(EXT6_FUNC); do \
131 echo " $${i}_init();" >> $@; \
132 done
133 echo "}" >> $@
135 extensions/lib%.o: extensions/lib%.c
136 $(CC) $(CFLAGS) -D_INIT=$*_init -c -o $@ $<
138 endif
140 EXTRAS += extensions/libipt_targets.man
141 extensions/libipt_targets.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_TARGETS))
142 @for ext in $(PF_EXT_MAN_TARGETS); do \
143 echo ".SS $$ext" ;\
144 cat extensions/libipt_$$ext.man ;\
145 done >extensions/libipt_targets.man
146 @if [ -n "$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
147 extra=$(PF_EXT_MAN_EXTRA_TARGETS) ;\
148 for ext in $${extra:-""}; do \
149 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
150 cat extensions/libipt_$$ext.man ;\
151 done ;\
152 fi >>extensions/libipt_targets.man
154 EXTRAS += extensions/libipt_matches.man
155 extensions/libipt_matches.man: $(patsubst %,extensions/libipt_%.man,$(PF_EXT_MAN_ALL_MATCHES))
156 @for ext in $(PF_EXT_MAN_MATCHES); do \
157 echo ".SS $$ext" ;\
158 cat extensions/libipt_$$ext.man ;\
159 done >extensions/libipt_matches.man
160 @if [ -n "$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
161 extra=$(PF_EXT_MAN_EXTRA_MATCHES) ;\
162 for ext in $${extra:-""}; do \
163 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
164 cat extensions/libipt_$$ext.man ;\
165 done ;\
166 fi >>extensions/libipt_matches.man
168 EXTRAS += extensions/libip6t_targets.man
169 extensions/libip6t_targets.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_TARGETS))
170 @for ext in $(PF6_EXT_MAN_TARGETS); do \
171 echo ".SS $$ext" ;\
172 cat extensions/libip6t_$$ext.man ;\
173 done >extensions/libip6t_targets.man
174 @if [ -n "$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
175 extra=$(PF6_EXT_MAN_EXTRA_TARGETS) ;\
176 for ext in $${extra:-""}; do \
177 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
178 cat extensions/libip6t_$$ext.man ;\
179 done ;\
180 fi >>extensions/libip6t_targets.man
182 EXTRAS += extensions/libip6t_matches.man
183 extensions/libip6t_matches.man: $(patsubst %, extensions/libip6t_%.man, $(PF6_EXT_MAN_ALL_MATCHES))
184 @for ext in $(PF6_EXT_MAN_MATCHES); do \
185 echo ".SS $$ext" ;\
186 cat extensions/libip6t_$$ext.man ;\
187 done >extensions/libip6t_matches.man
188 @if [ -n "$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
189 extra=$(PF6_EXT_MAN_EXTRA_MATCHES) ;\
190 for ext in $${extra:-""}; do \
191 echo ".SS $$ext (not supported, see Patch-O-Matic)" ;\
192 cat extensions/libip6t_$$ext.man ;\
193 done ;\
194 fi >>extensions/libip6t_matches.man
196 $(DESTDIR)$(LIBDIR)/iptables/libipt_%.so: extensions/libipt_%.so
197 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
198 cp $< $@
200 $(DESTDIR)$(LIBDIR)/iptables/libip6t_%.so: extensions/libip6t_%.so
201 @[ -d $(DESTDIR)$(LIBDIR)/iptables ] || mkdir -p $(DESTDIR)$(LIBDIR)/iptables
202 cp $< $@