kernel: Linux IP Virtual Server kernel modules (netfilter.mk patch)
[openwrt.git] / package / kernel / linux / modules / netfilter.mk
1
2 #
3 # Copyright (C) 2006-2010 OpenWrt.org
4 #
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
7 #
8
9 NF_MENU:=Netfilter Extensions
10 NF_KMOD:=1
11 include $(INCLUDE_DIR)/netfilter.mk
12
13
14 define KernelPackage/nf-ipt
15   SUBMENU:=$(NF_MENU)
16   TITLE:=Iptables core
17   KCONFIG:= \
18         CONFIG_NETFILTER=y \
19         CONFIG_NETFILTER_ADVANCED=y \
20         $(KCONFIG_NF_IPT)
21   FILES:=$(foreach mod,$(NF_IPT-m),$(LINUX_DIR)/net/$(mod).ko)
22   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT-m)))
23 endef
24
25 $(eval $(call KernelPackage,nf-ipt))
26
27
28 define KernelPackage/nf-ipt6
29   SUBMENU:=$(NF_MENU)
30   TITLE:=Ip6tables core
31   KCONFIG:=$(KCONFIG_NF_IPT6)
32   FILES:=$(foreach mod,$(NF_IPT6-m),$(LINUX_DIR)/net/$(mod).ko)
33   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT6-m)))
34   DEPENDS:=+kmod-nf-ipt +kmod-nf-conntrack6
35 endef
36
37 $(eval $(call KernelPackage,nf-ipt6))
38
39
40
41 define KernelPackage/ipt-core
42   SUBMENU:=$(NF_MENU)
43   TITLE:=Iptables core
44   KCONFIG:=$(KCONFIG_IPT_CORE)
45   FILES:=$(foreach mod,$(IPT_CORE-m),$(LINUX_DIR)/net/$(mod).ko)
46   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CORE-m)))
47   DEPENDS:=+kmod-nf-ipt
48 endef
49
50 define KernelPackage/ipt-core/description
51  Netfilter core kernel modules
52  Includes:
53  - comment
54  - limit
55  - LOG
56  - mac
57  - multiport
58  - REJECT
59  - TCPMSS
60 endef
61
62 $(eval $(call KernelPackage,ipt-core))
63
64
65 define KernelPackage/nf-conntrack
66   SUBMENU:=$(NF_MENU)
67   TITLE:=Netfilter connection tracking
68   KCONFIG:= \
69         CONFIG_NETFILTER=y \
70         CONFIG_NETFILTER_ADVANCED=y \
71         $(KCONFIG_NF_CONNTRACK)
72   FILES:=$(foreach mod,$(NF_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).ko)
73   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_CONNTRACK-m)))
74 endef
75
76 $(eval $(call KernelPackage,nf-conntrack))
77
78
79 define KernelPackage/nf-conntrack6
80   SUBMENU:=$(NF_MENU)
81   TITLE:=Netfilter IPv6 connection tracking
82   KCONFIG:=$(KCONFIG_NF_CONNTRACK6)
83   DEPENDS:=@IPV6 +kmod-nf-conntrack
84   FILES:=$(foreach mod,$(NF_CONNTRACK6-m),$(LINUX_DIR)/net/$(mod).ko)
85   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_CONNTRACK6-m)))
86 endef
87
88 $(eval $(call KernelPackage,nf-conntrack6))
89
90
91 define KernelPackage/nf-nat
92   SUBMENU:=$(NF_MENU)
93   TITLE:=Netfilter NAT
94   KCONFIG:=$(KCONFIG_NF_NAT)
95   DEPENDS:=+kmod-nf-conntrack +kmod-nf-ipt
96   FILES:=$(foreach mod,$(NF_NAT-m),$(LINUX_DIR)/net/$(mod).ko)
97   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT-m)))
98 endef
99
100 $(eval $(call KernelPackage,nf-nat))
101
102
103 define KernelPackage/nf-nat6
104   SUBMENU:=$(NF_MENU)
105   TITLE:=Netfilter IPV6-NAT
106   KCONFIG:=$(KCONFIG_NF_NAT6)
107   DEPENDS:=+kmod-nf-conntrack6 +kmod-nf-ipt6 +kmod-nf-nat
108   FILES:=$(foreach mod,$(NF_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
109   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT6-m)))
110 endef
111
112 $(eval $(call KernelPackage,nf-nat6))
113
114
115 define AddDepends/ipt
116   SUBMENU:=$(NF_MENU)
117   DEPENDS+= +kmod-ipt-core $(1)
118 endef
119
120
121 define KernelPackage/ipt-conntrack
122   TITLE:=Basic connection tracking modules
123   KCONFIG:=$(KCONFIG_IPT_CONNTRACK)
124   FILES:=$(foreach mod,$(IPT_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).ko)
125   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK-m)))
126   $(call AddDepends/ipt,+kmod-nf-conntrack)
127 endef
128
129 define KernelPackage/ipt-conntrack/description
130  Netfilter (IPv4) kernel modules for connection tracking
131  Includes:
132  - conntrack
133  - defrag
134  - iptables_raw
135  - NOTRACK
136  - state
137 endef
138
139 $(eval $(call KernelPackage,ipt-conntrack))
140
141
142 define KernelPackage/ipt-conntrack-extra
143   TITLE:=Extra connection tracking modules
144   KCONFIG:=$(KCONFIG_IPT_CONNTRACK_EXTRA)
145   FILES:=$(foreach mod,$(IPT_CONNTRACK_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko)
146   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK_EXTRA-m)))
147   $(call AddDepends/ipt,+kmod-ipt-conntrack)
148 endef
149
150 define KernelPackage/ipt-conntrack-extra/description
151  Netfilter (IPv4) extra kernel modules for connection tracking
152  Includes:
153  - connbytes
154  - connmark/CONNMARK
155  - conntrack
156  - helper
157  - recent
158 endef
159
160 $(eval $(call KernelPackage,ipt-conntrack-extra))
161
162
163 define KernelPackage/ipt-filter
164   TITLE:=Modules for packet content inspection
165   KCONFIG:=$(KCONFIG_IPT_FILTER)
166   FILES:=$(foreach mod,$(IPT_FILTER-m),$(LINUX_DIR)/net/$(mod).ko)
167   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FILTER-m)))
168   $(call AddDepends/ipt,+kmod-lib-textsearch +kmod-ipt-conntrack)
169 endef
170
171 define KernelPackage/ipt-filter/description
172  Netfilter (IPv4) kernel modules for packet content inspection
173  Includes:
174  - string
175 endef
176
177 $(eval $(call KernelPackage,ipt-filter))
178
179
180 define KernelPackage/ipt-ipopt
181   TITLE:=Modules for matching/changing IP packet options
182   KCONFIG:=$(KCONFIG_IPT_IPOPT)
183   FILES:=$(foreach mod,$(IPT_IPOPT-m),$(LINUX_DIR)/net/$(mod).ko)
184   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPOPT-m)))
185   $(call AddDepends/ipt)
186 endef
187
188 define KernelPackage/ipt-ipopt/description
189  Netfilter (IPv4) modules for matching/changing IP packet options
190  Includes:
191  - CLASSIFY
192  - dscp/DSCP
193  - ecn/ECN
194  - hl/HL
195  - length
196  - mark/MARK
197  - statistic
198  - tcpmss
199  - time
200  - ttl/TTL
201  - unclean
202 endef
203
204 $(eval $(call KernelPackage,ipt-ipopt))
205
206
207 define KernelPackage/ipt-ipsec
208   TITLE:=Modules for matching IPSec packets
209   KCONFIG:=$(KCONFIG_IPT_IPSEC)
210   FILES:=$(foreach mod,$(IPT_IPSEC-m),$(LINUX_DIR)/net/$(mod).ko)
211   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPSEC-m)))
212   $(call AddDepends/ipt)
213 endef
214
215 define KernelPackage/ipt-ipsec/description
216  Netfilter (IPv4) modules for matching IPSec packets
217  Includes:
218  - ah
219  - esp
220  - policy
221 endef
222
223 $(eval $(call KernelPackage,ipt-ipsec))
224
225 IPSET_MODULES:= \
226         ipset/ip_set \
227         ipset/ip_set_bitmap_ip \
228         ipset/ip_set_bitmap_ipmac \
229         ipset/ip_set_bitmap_port \
230         ipset/ip_set_hash_ip \
231         ipset/ip_set_hash_ipmark \
232         ipset/ip_set_hash_ipport \
233         ipset/ip_set_hash_ipportip \
234         ipset/ip_set_hash_ipportnet \
235         ipset/ip_set_hash_mac \
236         ipset/ip_set_hash_netportnet \
237         ipset/ip_set_hash_net \
238         ipset/ip_set_hash_netnet \
239         ipset/ip_set_hash_netport \
240         ipset/ip_set_hash_netiface \
241         ipset/ip_set_list_set \
242         xt_set
243
244 define KernelPackage/ipt-ipset
245   SUBMENU:=Netfilter Extensions
246   TITLE:=IPset netfilter modules
247   DEPENDS+= +kmod-ipt-core +kmod-nfnetlink
248   KCONFIG:= \
249         CONFIG_IP_SET \
250         CONFIG_IP_SET_MAX=256 \
251         CONFIG_NETFILTER_XT_SET \
252         CONFIG_IP_SET_BITMAP_IP \
253         CONFIG_IP_SET_BITMAP_IPMAC \
254         CONFIG_IP_SET_BITMAP_PORT \
255         CONFIG_IP_SET_HASH_IP \
256         CONFIG_IP_SET_HASH_IPMARK \
257         CONFIG_IP_SET_HASH_IPPORT \
258         CONFIG_IP_SET_HASH_IPPORTIP \
259         CONFIG_IP_SET_HASH_IPPORTNET \
260         CONFIG_IP_SET_HASH_MAC \
261         CONFIG_IP_SET_HASH_NET \
262         CONFIG_IP_SET_HASH_NETNET \
263         CONFIG_IP_SET_HASH_NETIFACE \
264         CONFIG_IP_SET_HASH_NETPORT \
265         CONFIG_IP_SET_HASH_NETPORTNET \
266         CONFIG_IP_SET_LIST_SET \
267         CONFIG_NET_EMATCH_IPSET=n
268   FILES:=$(foreach mod,$(IPSET_MODULES),$(LINUX_DIR)/net/netfilter/$(mod).ko)
269   AUTOLOAD:=$(call AutoLoad,49,$(notdir $(IPSET_MODULES)))
270 endef
271 $(eval $(call KernelPackage,ipt-ipset))
272
273 IPVS_MODULES:= \
274         ip_vs \
275         ip_vs_lc \
276         ip_vs_wlc \
277         ip_vs_rr \
278         ip_vs_wrr \
279         ip_vs_lblc \
280         ip_vs_lblcr \
281         ip_vs_dh \
282         ip_vs_sh \
283         ip_vs_fo \
284         ip_vs_nq \
285         ip_vs_sed
286
287 define KernelPackage/nf-ipvs
288   SUBMENU:=Netfilter Extensions
289   TITLE:=IP Virtual Server modules
290   DEPENDS:=+kmod-lib-crc32c
291   KCONFIG:= \
292         CONFIG_IP_VS \
293         CONFIG_IP_VS_IPV6=y \
294         CONFIG_IP_VS_DEBUG=n \
295         CONFIG_IP_VS_PROTO_TCP=y \
296         CONFIG_IP_VS_PROTO_UDP=y \
297         CONFIG_IP_VS_PROTO_AH_ESP=y \
298         CONFIG_IP_VS_PROTO_ESP=y \
299         CONFIG_IP_VS_PROTO_AH=y \
300         CONFIG_IP_VS_PROTO_SCTP=y \
301         CONFIG_IP_VS_TAB_BITS=12 \
302         CONFIG_IP_VS_RR \
303         CONFIG_IP_VS_WRR \
304         CONFIG_IP_VS_LC \
305         CONFIG_IP_VS_WLC \
306         CONFIG_IP_VS_FO \
307         CONFIG_IP_VS_OVF \
308         CONFIG_IP_VS_LBLC \
309         CONFIG_IP_VS_LBLCR \
310         CONFIG_IP_VS_DH \
311         CONFIG_IP_VS_SH \
312         CONFIG_IP_VS_SED \
313         CONFIG_IP_VS_NQ \
314         CONFIG_IP_VS_SH_TAB_BITS=8 \
315         CONFIG_IP_VS_NFCT=n \
316         CONFIG_NETFILTER_XT_MATCH_IPVS=n
317
318   FILES:=$(foreach mod,$(IPVS_MODULES),$(LINUX_DIR)/net/netfilter/ipvs/$(mod).ko)
319   $(call AddDepends/ipt,+kmod-ipt-conntrack)
320 endef
321 $(eval $(call KernelPackage,nf-ipvs))
322
323 define KernelPackage/nf-ipvs/description
324  IPVS (IP Virtual Server) implements transport-layer load balancing inside the Linux kernel
325  so called Layer-4 switching.
326 endef
327
328 define KernelPackage/ipt-nat
329   TITLE:=Basic NAT targets
330   KCONFIG:=$(KCONFIG_IPT_NAT)
331   FILES:=$(foreach mod,$(IPT_NAT-m),$(LINUX_DIR)/net/$(mod).ko)
332   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NAT-m)))
333   $(call AddDepends/ipt,+kmod-nf-nat)
334 endef
335
336 define KernelPackage/ipt-nat/description
337  Netfilter (IPv4) kernel modules for basic NAT targets
338  Includes:
339  - MASQUERADE
340 endef
341
342 $(eval $(call KernelPackage,ipt-nat))
343
344
345 define KernelPackage/ipt-nat6
346   TITLE:=IPv6 NAT targets
347   KCONFIG:=$(KCONFIG_IPT_NAT6)
348   FILES:=$(foreach mod,$(IPT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
349   AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_NAT6-m)))
350   $(call AddDepends/ipt,+kmod-nf-nat6)
351   $(call AddDepends/ipt,+kmod-ipt-conntrack)
352   $(call AddDepends/ipt,+kmod-ipt-nat)
353   $(call AddDepends/ipt,+kmod-ip6tables)
354 endef
355
356 define KernelPackage/ipt-nat6/description
357  Netfilter (IPv6) kernel modules for NAT targets
358 endef
359
360 $(eval $(call KernelPackage,ipt-nat6))
361
362
363 define KernelPackage/ipt-nat-extra
364   TITLE:=Extra NAT targets
365   KCONFIG:=$(KCONFIG_IPT_NAT_EXTRA)
366   FILES:=$(foreach mod,$(IPT_NAT_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko)
367   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NAT_EXTRA-m)))
368   $(call AddDepends/ipt,+kmod-ipt-nat)
369 endef
370
371 define KernelPackage/ipt-nat-extra/description
372  Netfilter (IPv4) kernel modules for extra NAT targets
373  Includes:
374  - NETMAP
375  - REDIRECT
376 endef
377
378 $(eval $(call KernelPackage,ipt-nat-extra))
379
380
381 define KernelPackage/nf-nathelper
382   SUBMENU:=$(NF_MENU)
383   TITLE:=Basic Conntrack and NAT helpers
384   KCONFIG:=$(KCONFIG_NF_NATHELPER)
385   FILES:=$(foreach mod,$(NF_NATHELPER-m),$(LINUX_DIR)/net/$(mod).ko)
386   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NATHELPER-m)))
387   DEPENDS:=+kmod-nf-nat
388 endef
389
390 define KernelPackage/nf-nathelper/description
391  Default Netfilter (IPv4) Conntrack and NAT helpers
392  Includes:
393  - ftp
394  - irc
395  - tftp
396 endef
397
398 $(eval $(call KernelPackage,nf-nathelper))
399
400
401 define KernelPackage/nf-nathelper-extra
402   SUBMENU:=$(NF_MENU)
403   TITLE:=Extra Conntrack and NAT helpers
404   KCONFIG:=$(KCONFIG_NF_NATHELPER_EXTRA)
405   FILES:=$(foreach mod,$(NF_NATHELPER_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko)
406   AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NATHELPER_EXTRA-m)))
407   DEPENDS:=+kmod-nf-nat +kmod-lib-textsearch
408 endef
409
410 define KernelPackage/nf-nathelper-extra/description
411  Extra Netfilter (IPv4) Conntrack and NAT helpers
412  Includes:
413  - amanda
414  - h323
415  - mms
416  - pptp
417  - proto_gre
418  - sip
419  - snmp_basic
420  - broadcast
421 endef
422
423 $(eval $(call KernelPackage,nf-nathelper-extra))
424
425
426 define KernelPackage/ipt-ulog
427   TITLE:=Module for user-space packet logging
428   KCONFIG:=$(KCONFIG_IPT_ULOG)
429   FILES:=$(foreach mod,$(IPT_ULOG-m),$(LINUX_DIR)/net/$(mod).ko)
430   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_ULOG-m)))
431   $(call AddDepends/ipt)
432 endef
433
434 define KernelPackage/ipt-ulog/description
435  Netfilter (IPv4) module for user-space packet logging
436  Includes:
437  - ULOG
438 endef
439
440 $(eval $(call KernelPackage,ipt-ulog))
441
442
443 define KernelPackage/ipt-nflog
444   TITLE:=Module for user-space packet logging
445   KCONFIG:=$(KCONFIG_IPT_NFLOG)
446   FILES:=$(foreach mod,$(IPT_NFLOG-m),$(LINUX_DIR)/net/$(mod).ko)
447   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NFLOG-m)))
448   $(call AddDepends/ipt,+kmod-nfnetlink-log)
449 endef
450
451 define KernelPackage/ipt-nflog/description
452  Netfilter module for user-space packet logging
453  Includes:
454  - NFLOG
455 endef
456
457 $(eval $(call KernelPackage,ipt-nflog))
458
459
460 define KernelPackage/ipt-nfqueue
461   TITLE:=Module for user-space packet queuing
462   KCONFIG:=$(KCONFIG_IPT_NFQUEUE)
463   FILES:=$(foreach mod,$(IPT_NFQUEUE-m),$(LINUX_DIR)/net/$(mod).ko)
464   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_NFQUEUE-m)))
465   $(call AddDepends/ipt,+kmod-nfnetlink-queue)
466 endef
467
468 define KernelPackage/ipt-nfqueue/description
469  Netfilter module for user-space packet queuing
470  Includes:
471  - NFQUEUE
472 endef
473
474 $(eval $(call KernelPackage,ipt-nfqueue))
475
476
477 define KernelPackage/ipt-debug
478   TITLE:=Module for debugging/development
479   KCONFIG:=$(KCONFIG_IPT_DEBUG)
480   DEFAULT:=n
481   FILES:=$(foreach mod,$(IPT_DEBUG-m),$(LINUX_DIR)/net/$(mod).ko)
482   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_DEBUG-m)))
483   $(call AddDepends/ipt)
484 endef
485
486 define KernelPackage/ipt-debug/description
487  Netfilter modules for debugging/development of the firewall
488  Includes:
489  - TRACE
490 endef
491
492 $(eval $(call KernelPackage,ipt-debug))
493
494
495 define KernelPackage/ipt-led
496   TITLE:=Module to trigger a LED with a Netfilter rule
497   KCONFIG:=$(KCONFIG_IPT_LED)
498   FILES:=$(foreach mod,$(IPT_LED-m),$(LINUX_DIR)/net/$(mod).ko)
499   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_LED-m)))
500   $(call AddDepends/ipt)
501 endef
502
503 define KernelPackage/ipt-led/description
504  Netfilter target to trigger a LED when a network packet is matched.
505 endef
506
507 $(eval $(call KernelPackage,ipt-led))
508
509 define KernelPackage/ipt-tproxy
510   TITLE:=Transparent proxying support
511   DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-ip6tables
512   KCONFIG:= \
513         CONFIG_NETFILTER_TPROXY \
514         CONFIG_NETFILTER_XT_MATCH_SOCKET \
515         CONFIG_NETFILTER_XT_TARGET_TPROXY
516   FILES:= \
517         $(foreach mod,$(IPT_TPROXY-m),$(LINUX_DIR)/net/$(mod).ko)
518   AUTOLOAD:=$(call AutoProbe,$(notdir nf_tproxy_core $(IPT_TPROXY-m)))
519   $(call AddDepends/ipt)
520 endef
521
522 define KernelPackage/ipt-tproxy/description
523   Kernel modules for Transparent Proxying
524 endef
525
526 $(eval $(call KernelPackage,ipt-tproxy))
527
528 define KernelPackage/ipt-tee
529   TITLE:=TEE support
530   DEPENDS:=+kmod-ipt-conntrack @!LINUX_4_4
531   KCONFIG:= \
532         CONFIG_NETFILTER_XT_TARGET_TEE
533   FILES:= \
534         $(LINUX_DIR)/net/netfilter/xt_TEE.ko \
535         $(foreach mod,$(IPT_TEE-m),$(LINUX_DIR)/net/$(mod).ko)
536   AUTOLOAD:=$(call AutoProbe,$(notdir nf_tee $(IPT_TEE-m)))
537   $(call AddDepends/ipt)
538 endef
539
540 define KernelPackage/ipt-tee/description
541   Kernel modules for TEE
542 endef
543
544 $(eval $(call KernelPackage,ipt-tee))
545
546
547 define KernelPackage/ipt-u32
548   TITLE:=U32 support
549   KCONFIG:= \
550         CONFIG_NETFILTER_XT_MATCH_U32
551   FILES:= \
552         $(LINUX_DIR)/net/netfilter/xt_u32.ko \
553         $(foreach mod,$(IPT_U32-m),$(LINUX_DIR)/net/$(mod).ko)
554   AUTOLOAD:=$(call AutoProbe,$(notdir nf_tee $(IPT_U32-m)))
555   $(call AddDepends/ipt)
556 endef
557
558 define KernelPackage/ipt-u32/description
559   Kernel modules for U32
560 endef
561
562 $(eval $(call KernelPackage,ipt-u32))
563
564
565 define KernelPackage/ipt-iprange
566   TITLE:=Module for matching ip ranges
567   KCONFIG:=$(KCONFIG_IPT_IPRANGE)
568   FILES:=$(foreach mod,$(IPT_IPRANGE-m),$(LINUX_DIR)/net/$(mod).ko)
569   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_IPRANGE-m)))
570   $(call AddDepends/ipt)
571 endef
572
573 define KernelPackage/ipt-iprange/description
574  Netfilter (IPv4) module for matching ip ranges
575  Includes:
576  - iprange
577 endef
578
579 $(eval $(call KernelPackage,ipt-iprange))
580
581 define KernelPackage/ipt-cluster
582   TITLE:=Module for matching cluster
583   KCONFIG:=$(KCONFIG_IPT_CLUSTER)
584   FILES:=$(foreach mod,$(IPT_CLUSTER-m),$(LINUX_DIR)/net/$(mod).ko)
585   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CLUSTER-m)))
586   $(call AddDepends/ipt)
587 endef
588
589 define KernelPackage/ipt-cluster/description
590  Netfilter (IPv4/IPv6) module for matching cluster
591  This option allows you to build work-load-sharing clusters of
592  network servers/stateful firewalls without having a dedicated
593  load-balancing router/server/switch. Basically, this match returns
594  true when the packet must be handled by this cluster node. Thus,
595  all nodes see all packets and this match decides which node handles
596  what packets. The work-load sharing algorithm is based on source
597  address hashing.
598
599  This module is usable for ipv4 and ipv6.
600
601  To use it also enable iptables-mod-cluster
602
603  see `iptables -m cluster --help` for more information.
604 endef
605
606 $(eval $(call KernelPackage,ipt-cluster))
607
608 define KernelPackage/ipt-clusterip
609   TITLE:=Module for CLUSTERIP
610   KCONFIG:=$(KCONFIG_IPT_CLUSTERIP)
611   FILES:=$(foreach mod,$(IPT_CLUSTERIP-m),$(LINUX_DIR)/net/$(mod).ko)
612   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CLUSTERIP-m)))
613   $(call AddDepends/ipt,+kmod-nf-conntrack)
614 endef
615
616 define KernelPackage/ipt-clusterip/description
617  Netfilter (IPv4-only) module for CLUSTERIP
618  The CLUSTERIP target allows you to build load-balancing clusters of
619  network servers without having a dedicated load-balancing
620  router/server/switch.
621
622  To use it also enable iptables-mod-clusterip
623
624  see `iptables -j CLUSTERIP --help` for more information.
625 endef
626
627 $(eval $(call KernelPackage,ipt-clusterip))
628
629
630 define KernelPackage/ipt-extra
631   TITLE:=Extra modules
632   KCONFIG:=$(KCONFIG_IPT_EXTRA)
633   FILES:=$(foreach mod,$(IPT_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko)
634   AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_EXTRA-m)))
635   $(call AddDepends/ipt)
636 endef
637
638 define KernelPackage/ipt-extra/description
639  Other Netfilter (IPv4) kernel modules
640  Includes:
641  - addrtype
642  - owner
643  - physdev (if bridge support was enabled in kernel)
644  - pkttype
645  - quota
646 endef
647
648 $(eval $(call KernelPackage,ipt-extra))
649
650
651 define KernelPackage/ip6tables
652   SUBMENU:=$(NF_MENU)
653   TITLE:=IPv6 modules
654   DEPENDS:=+kmod-nf-ipt6 +kmod-ipt-core +kmod-ipt-conntrack
655   KCONFIG:=$(KCONFIG_IPT_IPV6)
656   FILES:=$(foreach mod,$(IPT_IPV6-m),$(LINUX_DIR)/net/$(mod).ko)
657   AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_IPV6-m)))
658 endef
659
660 define KernelPackage/ip6tables/description
661  Netfilter IPv6 firewalling support
662 endef
663
664 $(eval $(call KernelPackage,ip6tables))
665
666 define KernelPackage/ip6tables-extra
667   SUBMENU:=$(NF_MENU)
668   TITLE:=Extra IPv6 modules
669   DEPENDS:=+kmod-ip6tables
670   KCONFIG:=$(KCONFIG_IPT_IPV6_EXTRA)
671   FILES:=$(foreach mod,$(IPT_IPV6_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko)
672   AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_IPV6_EXTRA-m)))
673 endef
674
675 define KernelPackage/ip6tables-extra/description
676  Netfilter IPv6 extra header matching modules
677 endef
678
679 $(eval $(call KernelPackage,ip6tables-extra))
680
681 ARP_MODULES = arp_tables arpt_mangle arptable_filter
682 define KernelPackage/arptables
683   SUBMENU:=$(NF_MENU)
684   TITLE:=ARP firewalling modules
685   DEPENDS:=+kmod-ipt-core
686   FILES:=$(LINUX_DIR)/net/ipv4/netfilter/arp*.ko
687   KCONFIG:=CONFIG_IP_NF_ARPTABLES \
688     CONFIG_IP_NF_ARPFILTER \
689     CONFIG_IP_NF_ARP_MANGLE
690   AUTOLOAD:=$(call AutoProbe,$(ARP_MODULES))
691 endef
692
693 define KernelPackage/arptables/description
694  Kernel modules for ARP firewalling
695 endef
696
697 $(eval $(call KernelPackage,arptables))
698
699
700 define KernelPackage/ebtables
701   SUBMENU:=$(NF_MENU)
702   TITLE:=Bridge firewalling modules
703   DEPENDS:=+kmod-ipt-core +kmod-bridge
704   FILES:=$(foreach mod,$(EBTABLES-m),$(LINUX_DIR)/net/$(mod).ko)
705   KCONFIG:=CONFIG_BRIDGE_NETFILTER=y \
706         $(KCONFIG_EBTABLES)
707   AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES-m)))
708 endef
709
710 define KernelPackage/ebtables/description
711   ebtables is a general, extensible frame/packet identification
712   framework. It provides you to do Ethernet
713   filtering/NAT/brouting on the Ethernet bridge.
714 endef
715
716 $(eval $(call KernelPackage,ebtables))
717
718
719 define AddDepends/ebtables
720   SUBMENU:=$(NF_MENU)
721   DEPENDS+=kmod-ebtables $(1)
722 endef
723
724
725 define KernelPackage/ebtables-ipv4
726   TITLE:=ebtables: IPv4 support
727   FILES:=$(foreach mod,$(EBTABLES_IP4-m),$(LINUX_DIR)/net/$(mod).ko)
728   KCONFIG:=$(KCONFIG_EBTABLES_IP4)
729   AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_IP4-m)))
730   $(call AddDepends/ebtables)
731 endef
732
733 define KernelPackage/ebtables-ipv4/description
734  This option adds the IPv4 support to ebtables, which allows basic
735  IPv4 header field filtering, ARP filtering as well as SNAT, DNAT targets.
736 endef
737
738 $(eval $(call KernelPackage,ebtables-ipv4))
739
740
741 define KernelPackage/ebtables-ipv6
742   TITLE:=ebtables: IPv6 support
743   FILES:=$(foreach mod,$(EBTABLES_IP6-m),$(LINUX_DIR)/net/$(mod).ko)
744   KCONFIG:=$(KCONFIG_EBTABLES_IP6)
745   AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_IP6-m)))
746   $(call AddDepends/ebtables)
747 endef
748
749 define KernelPackage/ebtables-ipv6/description
750  This option adds the IPv6 support to ebtables, which allows basic
751  IPv6 header field filtering and target support.
752 endef
753
754 $(eval $(call KernelPackage,ebtables-ipv6))
755
756
757 define KernelPackage/ebtables-watchers
758   TITLE:=ebtables: watchers support
759   FILES:=$(foreach mod,$(EBTABLES_WATCHERS-m),$(LINUX_DIR)/net/$(mod).ko)
760   KCONFIG:=$(KCONFIG_EBTABLES_WATCHERS)
761   AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES_WATCHERS-m)))
762   $(call AddDepends/ebtables)
763 endef
764
765 define KernelPackage/ebtables-watchers/description
766  This option adds the log watchers, that you can use in any rule
767  in any ebtables table.
768 endef
769
770 $(eval $(call KernelPackage,ebtables-watchers))
771
772
773 define KernelPackage/nfnetlink
774   SUBMENU:=$(NF_MENU)
775   TITLE:=Netlink-based userspace interface
776   FILES:=$(foreach mod,$(NFNETLINK-m),$(LINUX_DIR)/net/$(mod).ko)
777   KCONFIG:=$(KCONFIG_NFNETLINK)
778   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK-m)))
779 endef
780
781 define KernelPackage/nfnetlink/description
782  Kernel modules support for a netlink-based userspace interface
783 endef
784
785 $(eval $(call KernelPackage,nfnetlink))
786
787
788 define AddDepends/nfnetlink
789   SUBMENU:=$(NF_MENU)
790   DEPENDS+=+kmod-nfnetlink $(1)
791 endef
792
793
794 define KernelPackage/nfnetlink-log
795   TITLE:=Netfilter LOG over NFNETLINK interface
796   FILES:=$(foreach mod,$(NFNETLINK_LOG-m),$(LINUX_DIR)/net/$(mod).ko)
797   KCONFIG:=$(KCONFIG_NFNETLINK_LOG)
798   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK_LOG-m)))
799   $(call AddDepends/nfnetlink)
800 endef
801
802 define KernelPackage/nfnetlink-log/description
803  Kernel modules support for logging packets via NFNETLINK
804  Includes:
805  - NFLOG
806 endef
807
808 $(eval $(call KernelPackage,nfnetlink-log))
809
810
811 define KernelPackage/nfnetlink-queue
812   TITLE:=Netfilter QUEUE over NFNETLINK interface
813   FILES:=$(foreach mod,$(NFNETLINK_QUEUE-m),$(LINUX_DIR)/net/$(mod).ko)
814   KCONFIG:=$(KCONFIG_NFNETLINK_QUEUE)
815   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFNETLINK_QUEUE-m)))
816   $(call AddDepends/nfnetlink)
817 endef
818
819 define KernelPackage/nfnetlink-queue/description
820  Kernel modules support for queueing packets via NFNETLINK
821  Includes:
822  - NFQUEUE
823 endef
824
825 $(eval $(call KernelPackage,nfnetlink-queue))
826
827
828 define KernelPackage/nf-conntrack-netlink
829   TITLE:=Connection tracking netlink interface
830   FILES:=$(LINUX_DIR)/net/netfilter/nf_conntrack_netlink.ko
831   KCONFIG:=CONFIG_NF_CT_NETLINK CONFIG_NF_CONNTRACK_EVENTS=y
832   AUTOLOAD:=$(call AutoProbe,nf_conntrack_netlink)
833   $(call AddDepends/nfnetlink,+kmod-ipt-conntrack)
834 endef
835
836 define KernelPackage/nf-conntrack-netlink/description
837  Kernel modules support for a netlink-based connection tracking
838  userspace interface
839 endef
840
841 $(eval $(call KernelPackage,nf-conntrack-netlink))
842
843 define KernelPackage/ipt-hashlimit
844   SUBMENU:=$(NF_MENU)
845   TITLE:=Netfilter hashlimit match
846   DEPENDS:=+kmod-ipt-core
847   KCONFIG:=$(KCONFIG_IPT_HASHLIMIT)
848   FILES:=$(LINUX_DIR)/net/netfilter/xt_hashlimit.ko
849   AUTOLOAD:=$(call AutoProbe,xt_hashlimit)
850   $(call KernelPackage/ipt)
851 endef
852
853 define KernelPackage/ipt-hashlimit/description
854  Kernel modules support for the hashlimit bucket match module
855 endef
856
857 $(eval $(call KernelPackage,ipt-hashlimit))
858
859
860 define KernelPackage/nft-core
861   SUBMENU:=$(NF_MENU)
862   TITLE:=Netfilter nf_tables support
863   DEPENDS:=+kmod-nfnetlink +kmod-nf-conntrack6
864   FILES:=$(foreach mod,$(NFT_CORE-m),$(LINUX_DIR)/net/$(mod).ko)
865   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m)))
866   KCONFIG:= \
867         CONFIG_NETFILTER=y \
868         CONFIG_NETFILTER_ADVANCED=y \
869         CONFIG_NFT_COMPAT=n \
870         CONFIG_NFT_QUEUE=n \
871         CONFIG_NF_TABLES_ARP=n \
872         CONFIG_NF_TABLES_BRIDGE=n \
873         $(KCONFIG_NFT_CORE)
874 endef
875
876 define KernelPackage/nft-core/description
877  Kernel module support for nftables
878 endef
879
880 $(eval $(call KernelPackage,nft-core))
881
882
883 define KernelPackage/nft-nat
884   SUBMENU:=$(NF_MENU)
885   TITLE:=Netfilter nf_tables NAT support
886   DEPENDS:=+kmod-nft-core +kmod-nf-nat
887   FILES:=$(foreach mod,$(NFT_NAT-m),$(LINUX_DIR)/net/$(mod).ko)
888   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT-m)))
889   KCONFIG:=$(KCONFIG_NFT_NAT)
890 endef
891
892 $(eval $(call KernelPackage,nft-nat))
893
894
895 define KernelPackage/nft-nat6
896   SUBMENU:=$(NF_MENU)
897   TITLE:=Netfilter nf_tables IPv6-NAT support
898   DEPENDS:=+kmod-nft-core +kmod-nf-nat6
899   FILES:=$(foreach mod,$(NFT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
900   AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT6-m)))
901   KCONFIG:=$(KCONFIG_NFT_NAT6)
902 endef
903
904 $(eval $(call KernelPackage,nft-nat6))
905