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
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
14 PF_EXT_SLIB
+=condition connlimit connmark geoip icmp iprange layer7
15 PF_EXT_SLIB
+=length limit mac mark mport multiport recent standard state
16 PF_EXT_SLIB
+=tcp tcpmss time tos u32 udp web dscp
17 PF_EXT_SLIB
+=bcount BCOUNT
18 PF_EXT_SLIB
+=IMQ ipp2p
21 ifeq ($(DO_SELINUX
), 1)
22 PF_EXT_SE_SLIB
:=SECMARK CONNSECMARK
23 PF6_EXT_SE_SLIB
:=SECMARK CONNSECMARK
27 #PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
28 #PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
30 PF_EXT_ALL_SLIB
:=$(patsubst extensions
/libipt_
%.c
, %, $(wildcard extensions
/libipt_
*.c
))
31 PF6_EXT_ALL_SLIB
:=$(patsubst extensions
/libip6t_
%.c
, %, $(wildcard extensions
/libip6t_
*.c
))
33 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
)))
34 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
)))
35 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
)))
36 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
)))
38 PF_EXT_MAN_MATCHES
:=$(filter $(PF_EXT_ALL_SLIB
), $(PF_EXT_MAN_ALL_MATCHES
))
39 PF_EXT_MAN_TARGETS
:=$(filter $(PF_EXT_ALL_SLIB
), $(PF_EXT_MAN_ALL_TARGETS
))
40 PF_EXT_MAN_EXTRA_MATCHES
:=$(filter-out $(PF_EXT_MAN_MATCHES
), $(PF_EXT_MAN_ALL_MATCHES
))
41 PF_EXT_MAN_EXTRA_TARGETS
:=$(filter-out $(PF_EXT_MAN_TARGETS
), $(PF_EXT_MAN_ALL_TARGETS
))
42 PF6_EXT_MAN_MATCHES
:=$(filter $(PF6_EXT_ALL_SLIB
), $(PF6_EXT_MAN_ALL_MATCHES
))
43 PF6_EXT_MAN_TARGETS
:=$(filter $(PF6_EXT_ALL_SLIB
), $(PF6_EXT_MAN_ALL_TARGETS
))
44 PF6_EXT_MAN_EXTRA_MATCHES
:=$(filter-out $(PF6_EXT_MAN_MATCHES
), $(PF6_EXT_MAN_ALL_MATCHES
))
45 PF6_EXT_MAN_EXTRA_TARGETS
:=$(filter-out $(PF6_EXT_MAN_TARGETS
), $(PF6_EXT_MAN_ALL_TARGETS
))
49 @echo ALL_SLIB
: $(PF_EXT_ALL_SLIB
)
50 @echo ALL_MATCH
: $(PF_EXT_MAN_ALL_MATCHES
)
51 @echo ALL_TARGET
: $(PF_EXT_MAN_ALL_TARGETS
)
53 PF_EXT_SLIB
+=$(PF_EXT_SLIB_OPTS
)
54 PF6_EXT_SLIB
+=$(PF6_EXT_SLIB_OPTS
)
56 OPTIONALS
+=$(patsubst %,IPv4
:%,$(PF_EXT_SLIB_OPTS
))
57 OPTIONALS
+=$(patsubst %,IPv6
:%,$(PF6_EXT_SLIB_OPTS
))
60 SHARED_LIBS
+=$(foreach T
,$(PF_EXT_SLIB
),extensions
/libipt_
$(T
).so
)
61 SHARED_SE_LIBS
+=$(foreach T
,$(PF_EXT_SE_SLIB
),extensions
/libipt_
$(T
).so
)
62 EXTRA_INSTALLS
+=$(foreach T
, $(PF_EXT_SLIB
), $(DESTDIR
)$(LIBDIR
)/iptables
/libipt_
$(T
).so
)
63 EXTRA_INSTALLS
+=$(foreach T
, $(PF_EXT_SE_SLIB
), $(DESTDIR
)$(LIBDIR
)/iptables
/libipt_
$(T
).so
)
66 SHARED_LIBS
+=$(foreach T
,$(PF6_EXT_SLIB
),extensions
/libip6t_
$(T
).so
)
67 SHARED_SE_LIBS
+=$(foreach T
,$(PF6_EXT_SE_SLIB
),extensions
/libip6t_
$(T
).so
)
68 EXTRA_INSTALLS
+=$(foreach T
, $(PF6_EXT_SLIB
), $(DESTDIR
)$(LIBDIR
)/iptables
/libip6t_
$(T
).so
)
69 EXTRA_INSTALLS
+=$(foreach T
, $(PF6_EXT_SE_SLIB
), $(DESTDIR
)$(LIBDIR
)/iptables
/libip6t_
$(T
).so
)
72 EXT_OBJS
+=$(foreach T
,$(PF_EXT_SLIB
),extensions
/libipt_
$(T
).o
)
73 EXT_OBJS
+=$(foreach T
,$(PF_EXT_SE_SLIB
),extensions
/libipt_
$(T
).o
)
74 EXT_FUNC
+=$(foreach T
,$(PF_EXT_SLIB
),ipt_
$(T
))
75 EXT_FUNC
+=$(foreach T
,$(PF_EXT_SE_SLIB
),ipt_
$(T
))
76 EXT_OBJS
+= extensions
/initext.o
78 EXT6_OBJS
+=$(foreach T
,$(PF6_EXT_SLIB
),extensions
/libip6t_
$(T
).o
)
79 EXT6_OBJS
+=$(foreach T
,$(PF6_EXT_SE_SLIB
),extensions
/libip6t_
$(T
).o
)
80 EXT6_FUNC
+=$(foreach T
,$(PF6_EXT_SLIB
),ip6t_
$(T
))
81 EXT6_FUNC
+=$(foreach T
,$(PF6_EXT_SE_SLIB
),ip6t_
$(T
))
82 EXT6_OBJS
+= extensions
/initext6.o
84 endif # NO_SHARED_LIBS
86 ifndef TOPLEVEL_INCLUDED
88 cd ..
&& $(MAKE
) $(SHARED_LIBS
) $(SHARED_SE_LIBS
)
92 extensions
/libext.a
: $(EXT_OBJS
)
93 rm -f
$@
; ar crv
$@
$(EXT_OBJS
)
95 extensions
/libext6.a
: $(EXT6_OBJS
)
96 rm -f
$@
; ar crv
$@
$(EXT6_OBJS
)
98 extensions
/initext.o
: extensions
/initext.c
99 extensions
/initext6.o
: extensions
/initext6.c
101 extensions
/initext.c
: extensions
/Makefile
103 for i in
$(EXT_FUNC
); do \
104 echo
"extern void $${i}_init(void);" >> $@
; \
106 echo
"void init_extensions(void) {" >> $@
107 for i in
$(EXT_FUNC
); do \
108 echo
" $${i}_init();" >> $@
; \
112 extensions
/initext6.c
: extensions
/Makefile
114 for i in
$(EXT6_FUNC
); do \
115 echo
"extern void $${i}_init(void);" >> $@
; \
117 echo
"void init_extensions(void) {" >> $@
118 for i in
$(EXT6_FUNC
); do \
119 echo
" $${i}_init();" >> $@
; \
123 extensions
/lib
%.o
: extensions
/lib
%.c
124 $(CC
) $(CFLAGS
) -D_INIT
=$*_init
-c
-o
$@
$<
128 EXTRAS
+= extensions
/libipt_targets.man
129 extensions
/libipt_targets.man
: $(patsubst %,extensions
/libipt_
%.man
,$(PF_EXT_MAN_ALL_TARGETS
))
130 @for ext in
$(PF_EXT_MAN_TARGETS
); do \
132 cat extensions
/libipt_
$$ext.man
;\
133 done
>extensions
/libipt_targets.man
134 @if
[ -n
"$(PF_EXT_MAN_EXTRA_TARGETS)" ]; then \
135 extra
=$(PF_EXT_MAN_EXTRA_TARGETS
) ;\
136 for ext in
$${extra
:-""}; do \
137 echo
".SS $$ext (not supported, see Patch-O-Matic)" ;\
138 cat extensions
/libipt_
$$ext.man
;\
140 fi
>>extensions
/libipt_targets.man
142 EXTRAS
+= extensions
/libipt_matches.man
143 extensions
/libipt_matches.man
: $(patsubst %,extensions
/libipt_
%.man
,$(PF_EXT_MAN_ALL_MATCHES
))
144 @for ext in
$(PF_EXT_MAN_MATCHES
); do \
146 cat extensions
/libipt_
$$ext.man
;\
147 done
>extensions
/libipt_matches.man
148 @if
[ -n
"$(PF_EXT_MAN_EXTRA_MATCHES)" ]; then \
149 extra
=$(PF_EXT_MAN_EXTRA_MATCHES
) ;\
150 for ext in
$${extra
:-""}; do \
151 echo
".SS $$ext (not supported, see Patch-O-Matic)" ;\
152 cat extensions
/libipt_
$$ext.man
;\
154 fi
>>extensions
/libipt_matches.man
156 EXTRAS
+= extensions
/libip6t_targets.man
157 extensions
/libip6t_targets.man
: $(patsubst %, extensions
/libip6t_
%.man
, $(PF6_EXT_MAN_ALL_TARGETS
))
158 @for ext in
$(PF6_EXT_MAN_TARGETS
); do \
160 cat extensions
/libip6t_
$$ext.man
;\
161 done
>extensions
/libip6t_targets.man
162 @if
[ -n
"$(PF6_EXT_MAN_EXTRA_TARGETS)" ]; then \
163 extra
=$(PF6_EXT_MAN_EXTRA_TARGETS
) ;\
164 for ext in
$${extra
:-""}; do \
165 echo
".SS $$ext (not supported, see Patch-O-Matic)" ;\
166 cat extensions
/libip6t_
$$ext.man
;\
168 fi
>>extensions
/libip6t_targets.man
170 EXTRAS
+= extensions
/libip6t_matches.man
171 extensions
/libip6t_matches.man
: $(patsubst %, extensions
/libip6t_
%.man
, $(PF6_EXT_MAN_ALL_MATCHES
))
172 @for ext in
$(PF6_EXT_MAN_MATCHES
); do \
174 cat extensions
/libip6t_
$$ext.man
;\
175 done
>extensions
/libip6t_matches.man
176 @if
[ -n
"$(PF6_EXT_MAN_EXTRA_MATCHES)" ]; then \
177 extra
=$(PF6_EXT_MAN_EXTRA_MATCHES
) ;\
178 for ext in
$${extra
:-""}; do \
179 echo
".SS $$ext (not supported, see Patch-O-Matic)" ;\
180 cat extensions
/libip6t_
$$ext.man
;\
182 fi
>>extensions
/libip6t_matches.man
184 $(DESTDIR
)$(LIBDIR
)/iptables
/libipt_
%.so
: extensions
/libipt_
%.so
185 @
[ -d
$(DESTDIR
)$(LIBDIR
)/iptables
] || mkdir
-p
$(DESTDIR
)$(LIBDIR
)/iptables
188 $(DESTDIR
)$(LIBDIR
)/iptables
/libip6t_
%.so
: extensions
/libip6t_
%.so
189 @
[ -d
$(DESTDIR
)$(LIBDIR
)/iptables
] || mkdir
-p
$(DESTDIR
)$(LIBDIR
)/iptables