[backfire] base-files: backport r29587
[10.03/openwrt.git] / package / iptables / Makefile
1 #
2 # Copyright (C) 2006-2011 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=iptables
12 PKG_VERSION:=1.4.6
13 PKG_RELEASE:=3.1
14
15 PKG_MD5SUM:=c67cf30e281a924def6426be0973df56
16 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
17 PKG_SOURCE_URL:=http://www.netfilter.org/projects/iptables/files \
18         ftp://ftp.be.netfilter.org/pub/netfilter/iptables/ \
19         ftp://ftp.de.netfilter.org/pub/netfilter/iptables/ \
20         ftp://ftp.no.netfilter.org/pub/netfilter/iptables/
21
22 PKG_FIXUP:=autoreconf
23
24 include $(INCLUDE_DIR)/package.mk
25 ifeq ($(DUMP),)
26   -include $(LINUX_DIR)/.config
27   include $(INCLUDE_DIR)/netfilter.mk
28   STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell grep 'NETFILTER' $(LINUX_DIR)/.config | md5s)
29 endif
30
31
32 define Package/iptables/Default
33   SECTION:=net
34   CATEGORY:=Network
35   URL:=http://netfilter.org/
36 endef
37
38 define Package/iptables/Module
39 $(call Package/iptables/Default)
40   DEPENDS:=iptables $(1)
41 endef
42
43 define Package/iptables
44 $(call Package/iptables/Default)
45   TITLE:=IPv4 firewall administration tool
46   MENU:=1
47   DEPENDS+= +kmod-ipt-core +libip4tc +libxtables
48 endef
49
50 define Package/iptables/description
51 IPv4 firewall administration tool.
52
53  Matches:
54   - icmp
55   - tcp
56   - udp
57   - comment
58   - limit
59   - mac
60   - multiport
61
62  Targets:
63   - ACCEPT
64   - DROP
65   - REJECT
66   - LOG
67   - TCPMSS
68
69  Tables:
70   - filter
71   - mangle
72
73 endef
74
75 define Package/iptables-mod-conntrack
76 $(call Package/iptables/Module, +kmod-ipt-conntrack)
77   TITLE:=Basic connection tracking extensions
78 endef
79
80 define Package/iptables-mod-conntrack/description
81 Basic iptables extensions for connection tracking.
82
83  Matches:
84   - state
85   - conntrack
86
87  Targets:
88   - NOTRACK
89
90  Tables:
91   - raw
92
93 endef
94
95 define Package/iptables-mod-conntrack-extra
96 $(call Package/iptables/Module, +kmod-ipt-conntrack-extra)
97   TITLE:=Extra connection tracking extensions
98 endef
99
100 define Package/iptables-mod-conntrack-extra/description
101 Extra iptables extensions for connection tracking.
102
103  Matches:
104   - connbytes
105   - connmark
106   - recent
107   - helper
108
109  Targets:
110   - CONNMARK
111
112 endef
113
114 define Package/iptables-mod-filter
115 $(call Package/iptables/Module, +kmod-ipt-filter)
116   TITLE:=Content inspection extensions
117 endef
118
119 define Package/iptables-mod-filter/description
120 iptables extensions for packet content inspection.
121 Includes support for:
122
123  Matches:
124   - layer7
125   - string
126
127 endef
128
129 define Package/iptables-mod-imq
130 $(call Package/iptables/Module, +kmod-ipt-imq)
131   TITLE:=IMQ support
132 endef
133
134 define Package/iptables-mod-imq/description
135 iptables extension for IMQ support.
136
137  Targets:
138   - IMQ
139
140 endef
141
142 define Package/iptables-mod-ipopt
143 $(call Package/iptables/Module, +kmod-ipt-ipopt)
144   TITLE:=IP/Packet option extensions
145 endef
146
147 define Package/iptables-mod-ipopt/description
148 iptables extensions for matching/changing IP packet options.
149
150  Matches:
151   - dscp
152   - hashlimit
153   - ecn
154   - length
155   - mark
156   - statistic
157   - tcpmss
158   - time
159   - unclean
160   - hl
161
162  Targets:
163   - DSCP
164   - CLASSIFY
165   - ECN
166   - MARK
167   - HL
168
169 endef
170
171 define Package/iptables-mod-ipsec
172 $(call Package/iptables/Module, +kmod-ipt-ipsec)
173   TITLE:=IPsec extensions
174 endef
175
176 define Package/iptables-mod-ipsec/description
177 iptables extensions for matching ipsec traffic.
178
179  Matches:
180   - ah
181   - esp
182   - policy
183
184 endef
185
186 define Package/iptables-mod-ipset
187 $(call Package/iptables/Module, @LINUX_2_6)
188   TITLE:=IPset iptables extensions
189 endef
190
191 define Package/iptables-mod-ipset/description
192 IPset iptables extensions.
193
194  Matches:
195   - set
196
197  Targets:
198   - SET
199
200 endef
201
202 define Package/iptables-mod-nat
203 $(call Package/iptables/Module, +kmod-ipt-nat)
204   TITLE:=Basic NAT extensions
205 endef
206
207 define Package/iptables-mod-nat/description
208 iptables extensions for basic NAT targets.
209
210  Targets:
211   - SNAT
212   - DNAT
213   - MASQUERADE
214
215  Tables:
216   - nat
217
218 endef
219
220 define Package/iptables-mod-nat-extra
221 $(call Package/iptables/Module, +kmod-ipt-nat-extra)
222   TITLE:=Extra NAT extensions
223 endef
224
225 define Package/iptables-mod-nat-extra/description
226 iptables extensions for extra NAT targets.
227
228  Targets:
229   - MIRROR
230   - NETMAP
231   - REDIRECT
232
233 endef
234
235 define Package/iptables-mod-ulog
236 $(call Package/iptables/Module, +kmod-ipt-ulog)
237   TITLE:=user-space packet logging
238 endef
239
240 define Package/iptables-mod-ulog/description
241 iptables extensions for user-space packet logging.
242
243  Targets:
244   - ULOG
245
246 endef
247
248 define Package/iptables-mod-hashlimit
249 $(call Package/iptables/Module, +kmod-ipt-hashlimit)
250   TITLE:=hashlimit matching
251 endef
252
253 define Package/iptables-mod-hashlimit/description
254 iptables extensions for hashlimit matching
255
256  Matches:
257   - hashlimit
258
259 endef
260
261 define Package/iptables-mod-iprange
262 $(call Package/iptables/Module, +kmod-ipt-iprange)
263   TITLE:=IP range extension
264 endef
265
266 define Package/iptables-mod-iprange/description
267 iptables extensions for matching ip ranges.
268
269  Matches:
270   - iprange
271
272 endef
273
274 define Package/iptables-mod-extra
275 $(call Package/iptables/Module, +kmod-ipt-extra)
276   TITLE:=Other extra iptables extensions
277 endef
278
279 define Package/iptables-mod-extra/description
280 Other extra iptables extensions.
281
282  Matches:
283   - condition
284   - owner
285   - physdev (if ebtables is enabled)
286   - pkttype
287   - quota
288
289 endef
290
291 define Package/iptables-utils
292 $(call Package/iptables/Module, )
293   TITLE:=iptables save and restore utilities (deprecated)
294 endef
295
296 define Package/iptables-utils/description
297 This is a dummy package for backwards compatibility reasons.
298 Everything that used to be provided by this package is part
299 of iptables now.
300 endef
301
302 define Package/ip6tables
303 $(call Package/iptables/Default)
304   DEPENDS:=+kmod-ip6tables +libip6tc +libxtables
305   CATEGORY:=IPv6
306   TITLE:=IPv6 firewall administration tool
307   MENU:=1
308 endef
309
310 define Package/ip6tables-utils
311 $(call Package/iptables/Default)
312   DEPENDS:=ip6tables
313   CATEGORY:=IPv6
314   TITLE:=ip6tables save and restore utilities (deprecated)
315 endef
316
317 define Package/ip6tables-utils/description
318 This is a dummy package for backwards compatibility reasons.
319 Everything that used to be provided by this package is part
320 of ip6tables now.
321 endef
322
323 define Package/libiptc
324 $(call Package/iptables/Default)
325   SECTION:=libs
326   CATEGORY:=Libraries
327   DEPENDS:=+libip4tc +libip6tc
328   TITLE:=IPv4/IPv6 firewall - shared libiptc library (compatibility stub)
329 endef
330
331 define Package/libip4tc
332 $(call Package/iptables/Default)
333   SECTION:=libs
334   CATEGORY:=Libraries
335   TITLE:=IPv4 firewall - shared libiptc library
336 endef
337
338 define Package/libip6tc
339 $(call Package/iptables/Default)
340   SECTION:=libs
341   CATEGORY:=Libraries
342   TITLE:=IPv6 firewall - shared libiptc library
343 endef
344
345 define Package/libxtables
346  $(call Package/iptables/Default)
347  SECTION:=libs
348  CATEGORY:=Libraries
349  TITLE:=IPv4/IPv6 firewall - shared xtables library
350 endef
351
352
353 TARGET_CPPFLAGS := \
354         -I$(PKG_BUILD_DIR)/include \
355         -I$(LINUX_DIR)/arch/$(LINUX_KARCH)/include \
356         $(TARGET_CPPFLAGS)
357
358 CONFIGURE_ARGS += \
359         --enable-shared \
360         --enable-devel \
361         --enable-ipv6 \
362         --with-kernel="$(LINUX_DIR)" \
363         --with-xtlibdir=/usr/lib/iptables
364
365 IPTABLES_MAKEOPTS = \
366                 $(TARGET_CONFIGURE_OPTS) \
367                 COPT_FLAGS="$(TARGET_CFLAGS)" \
368                 LDFLAGS="-rdynamic -static-libgcc" \
369                 KERNEL_DIR="$(LINUX_DIR)" PREFIX=/usr \
370                 KBUILD_OUTPUT="$(LINUX_DIR)" \
371                 DESTDIR="$(PKG_INSTALL_DIR)" \
372                 $(MAKE_TARGETS)
373
374 define Build/Compile
375         $(INSTALL_DIR) $(PKG_INSTALL_DIR)
376         $(MAKE) -C $(PKG_BUILD_DIR) $(IPTABLES_MAKEOPTS)
377         $(MAKE) -C $(PKG_BUILD_DIR) $(IPTABLES_MAKEOPTS) install
378         $(MAKE) -C $(PKG_BUILD_DIR)/libipq $(IPTABLES_MAKEOPTS)
379         $(MAKE) -C $(PKG_BUILD_DIR)/libipq $(IPTABLES_MAKEOPTS) install
380 endef
381
382 define Build/InstallDev
383         $(INSTALL_DIR) $(1)/usr/include
384         $(INSTALL_DIR) $(1)/usr/include/iptables
385         $(INSTALL_DIR) $(1)/usr/include/net/netfilter
386
387         # XXX: iptables header fixup, some headers are not installed by iptables anymore
388         $(CP) $(PKG_BUILD_DIR)/include/net/netfilter/*.h $(1)/usr/include/net/netfilter/
389         $(CP) $(PKG_BUILD_DIR)/include/iptables/*.h $(1)/usr/include/iptables/
390         $(CP) $(PKG_BUILD_DIR)/include/iptables.h $(1)/usr/include/
391         $(CP) $(PKG_BUILD_DIR)/include/libipq/libipq.h $(1)/usr/include/
392         $(CP) $(PKG_BUILD_DIR)/include/libipulog $(1)/usr/include/
393         $(CP) $(PKG_BUILD_DIR)/include/libiptc $(1)/usr/include/
394
395         $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
396         $(INSTALL_DIR) $(1)/usr/lib
397         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxtables.so* $(1)/usr/lib/
398         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libip*tc.so* $(1)/usr/lib/
399         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libipq.a $(1)/usr/lib/
400         $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
401         $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/xtables.pc $(1)/usr/lib/pkgconfig/
402         $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libiptc.pc $(1)/usr/lib/pkgconfig/
403 endef
404
405 define Package/iptables/install
406         $(INSTALL_DIR) $(1)/usr/sbin
407         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/iptables $(1)/usr/sbin/
408         $(LN) iptables $(1)/usr/sbin/iptables-save
409         $(LN) iptables $(1)/usr/sbin/iptables-restore
410         $(INSTALL_DIR) $(1)/usr/lib/iptables
411         (cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
412                 for m in $(patsubst xt_%,ipt_%,$(IPT_BUILTIN)) $(patsubst ipt_%,xt_%,$(IPT_BUILTIN)); do \
413                         if [ -f $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$${m}.so ]; then \
414                                 $(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$${m}.so $(1)/usr/lib/iptables/ ;\
415                         fi; \
416                 done \
417         )
418 endef
419
420 define Package/iptables-utils/install
421         true
422 endef
423
424 define Package/ip6tables/install
425         $(INSTALL_DIR) $(1)/usr/sbin
426         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ip6tables $(1)/usr/sbin/
427         $(LN) ip6tables $(1)/usr/sbin/ip6tables-save
428         $(LN) ip6tables $(1)/usr/sbin/ip6tables-restore
429         $(INSTALL_DIR) $(1)/usr/lib/iptables
430         (cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
431                 $(CP) libip6t_*.so $(1)/usr/lib/iptables/ \
432         )
433 endef
434
435 define Package/ip6tables-utils/install
436         true
437 endef
438
439 define Package/libiptc/install
440         $(INSTALL_DIR) $(1)/usr/lib
441         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiptc.so* $(1)/usr/lib/
442 endef
443
444 define Package/libip4tc/install
445         $(INSTALL_DIR) $(1)/usr/lib
446         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libip4tc.so* $(1)/usr/lib/
447 endef
448
449 define Package/libip6tc/install
450         $(INSTALL_DIR) $(1)/usr/lib
451         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libip6tc.so* $(1)/usr/lib/
452 endef
453
454 define Package/libxtables/install
455         $(INSTALL_DIR) $(1)/usr/lib
456         $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxtables.so* $(1)/usr/lib/
457 endef
458
459 define BuildPlugin
460   define Package/$(1)/install
461         $(INSTALL_DIR) $$(1)/usr/lib/iptables
462         for m in $(patsubst xt_%,ipt_%,$(2)) $(patsubst ipt_%,xt_%,$(2)); do \
463                 if [ -f $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$$$$$${m}.so ]; then \
464                         $(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$$$$$${m}.so $$(1)/usr/lib/iptables/ ; \
465                 fi; \
466         done
467         $(3)
468   endef
469
470   $$(eval $$(call BuildPackage,$(1)))
471 endef
472
473 L7_INSTALL:=\
474         $(INSTALL_DIR) $$(1)/etc/l7-protocols; \
475         $(CP) files/l7/*.pat $$(1)/etc/l7-protocols/
476
477
478 $(eval $(call BuildPackage,iptables))
479 $(eval $(call BuildPackage,iptables-utils))
480 $(eval $(call BuildPlugin,iptables-mod-conntrack,$(IPT_CONNTRACK-m)))
481 $(eval $(call BuildPlugin,iptables-mod-conntrack-extra,$(IPT_CONNTRACK_EXTRA-m)))
482 $(eval $(call BuildPlugin,iptables-mod-extra,$(IPT_EXTRA-m)))
483 $(eval $(call BuildPlugin,iptables-mod-filter,$(IPT_FILTER-m),$(L7_INSTALL)))
484 $(eval $(call BuildPlugin,iptables-mod-hashlimit,$(IPT_HASHLIMIT-m)))
485 $(eval $(call BuildPlugin,iptables-mod-imq,$(IPT_IMQ-m)))
486 $(eval $(call BuildPlugin,iptables-mod-ipopt,$(IPT_IPOPT-m)))
487 $(eval $(call BuildPlugin,iptables-mod-ipsec,$(IPT_IPSEC-m)))
488 $(eval $(call BuildPlugin,iptables-mod-ipset,ipt_set ipt_SET))
489 $(eval $(call BuildPlugin,iptables-mod-nat,$(IPT_NAT-m)))
490 $(eval $(call BuildPlugin,iptables-mod-nat-extra,$(IPT_NAT_EXTRA-m)))
491 $(eval $(call BuildPlugin,iptables-mod-iprange,$(IPT_IPRANGE-m)))
492 $(eval $(call BuildPlugin,iptables-mod-ulog,$(IPT_ULOG-m)))
493 $(eval $(call BuildPackage,ip6tables))
494 $(eval $(call BuildPackage,ip6tables-utils))
495 $(eval $(call BuildPackage,libiptc))
496 $(eval $(call BuildPackage,libip4tc))
497 $(eval $(call BuildPackage,libip6tc))
498 $(eval $(call BuildPackage,libxtables))