xref: /linux/net/netfilter/Kconfig (revision c5d3cdad688ed75fb311a3a671eb30ba7106d7d3)
1# SPDX-License-Identifier: GPL-2.0-only
2menu "Core Netfilter Configuration"
3	depends on NET && INET && NETFILTER
4
5config NETFILTER_INGRESS
6	bool "Netfilter ingress support"
7	default y
8	select NET_INGRESS
9	help
10	  This allows you to classify packets from ingress using the Netfilter
11	  infrastructure.
12
13config NETFILTER_NETLINK
14	tristate
15
16config NETFILTER_FAMILY_BRIDGE
17	bool
18
19config NETFILTER_FAMILY_ARP
20	bool
21
22config NETFILTER_NETLINK_ACCT
23	tristate "Netfilter NFACCT over NFNETLINK interface"
24	depends on NETFILTER_ADVANCED
25	select NETFILTER_NETLINK
26	help
27	  If this option is enabled, the kernel will include support
28	  for extended accounting via NFNETLINK.
29
30config NETFILTER_NETLINK_QUEUE
31	tristate "Netfilter NFQUEUE over NFNETLINK interface"
32	depends on NETFILTER_ADVANCED
33	select NETFILTER_NETLINK
34	help
35	  If this option is enabled, the kernel will include support
36	  for queueing packets via NFNETLINK.
37
38config NETFILTER_NETLINK_LOG
39	tristate "Netfilter LOG over NFNETLINK interface"
40	default m if NETFILTER_ADVANCED=n
41	select NETFILTER_NETLINK
42	help
43	  If this option is enabled, the kernel will include support
44	  for logging packets via NFNETLINK.
45
46	  This obsoletes the existing ipt_ULOG and ebg_ulog mechanisms,
47	  and is also scheduled to replace the old syslog-based ipt_LOG
48	  and ip6t_LOG modules.
49
50config NETFILTER_NETLINK_OSF
51	tristate "Netfilter OSF over NFNETLINK interface"
52	depends on NETFILTER_ADVANCED
53	select NETFILTER_NETLINK
54	help
55	  If this option is enabled, the kernel will include support
56	  for passive OS fingerprint via NFNETLINK.
57
58config NF_CONNTRACK
59	tristate "Netfilter connection tracking support"
60	default m if NETFILTER_ADVANCED=n
61	select NF_DEFRAG_IPV4
62	select NF_DEFRAG_IPV6 if IPV6 != n
63	help
64	  Connection tracking keeps a record of what packets have passed
65	  through your machine, in order to figure out how they are related
66	  into connections.
67
68	  This is required to do Masquerading or other kinds of Network
69	  Address Translation.  It can also be used to enhance packet
70	  filtering (see `Connection state match support' below).
71
72	  To compile it as a module, choose M here.  If unsure, say N.
73
74config NF_LOG_COMMON
75	tristate
76
77config NF_LOG_NETDEV
78	tristate "Netdev packet logging"
79	select NF_LOG_COMMON
80
81if NF_CONNTRACK
82config NETFILTER_CONNCOUNT
83	tristate
84
85config NF_CONNTRACK_MARK
86	bool  'Connection mark tracking support'
87	depends on NETFILTER_ADVANCED
88	help
89	  This option enables support for connection marks, used by the
90	  `CONNMARK' target and `connmark' match. Similar to the mark value
91	  of packets, but this mark value is kept in the conntrack session
92	  instead of the individual packets.
93
94config NF_CONNTRACK_SECMARK
95	bool  'Connection tracking security mark support'
96	depends on NETWORK_SECMARK
97	default m if NETFILTER_ADVANCED=n
98	help
99	  This option enables security markings to be applied to
100	  connections.  Typically they are copied to connections from
101	  packets using the CONNSECMARK target and copied back from
102	  connections to packets with the same target, with the packets
103	  being originally labeled via SECMARK.
104
105	  If unsure, say 'N'.
106
107config NF_CONNTRACK_ZONES
108	bool  'Connection tracking zones'
109	depends on NETFILTER_ADVANCED
110	help
111	  This option enables support for connection tracking zones.
112	  Normally, each connection needs to have a unique system wide
113	  identity. Connection tracking zones allow to have multiple
114	  connections using the same identity, as long as they are
115	  contained in different zones.
116
117	  If unsure, say `N'.
118
119config NF_CONNTRACK_PROCFS
120	bool "Supply CT list in procfs (OBSOLETE)"
121	default y
122	depends on PROC_FS
123	---help---
124	This option enables for the list of known conntrack entries
125	to be shown in procfs under net/netfilter/nf_conntrack. This
126	is considered obsolete in favor of using the conntrack(8)
127	tool which uses Netlink.
128
129config NF_CONNTRACK_EVENTS
130	bool "Connection tracking events"
131	depends on NETFILTER_ADVANCED
132	help
133	  If this option is enabled, the connection tracking code will
134	  provide a notifier chain that can be used by other kernel code
135	  to get notified about changes in the connection tracking state.
136
137	  If unsure, say `N'.
138
139config NF_CONNTRACK_TIMEOUT
140	bool  'Connection tracking timeout'
141	depends on NETFILTER_ADVANCED
142	help
143	  This option enables support for connection tracking timeout
144	  extension. This allows you to attach timeout policies to flow
145	  via the CT target.
146
147	  If unsure, say `N'.
148
149config NF_CONNTRACK_TIMESTAMP
150	bool  'Connection tracking timestamping'
151	depends on NETFILTER_ADVANCED
152	help
153	  This option enables support for connection tracking timestamping.
154	  This allows you to store the flow start-time and to obtain
155	  the flow-stop time (once it has been destroyed) via Connection
156	  tracking events.
157
158	  If unsure, say `N'.
159
160config NF_CONNTRACK_LABELS
161	bool "Connection tracking labels"
162	help
163	  This option enables support for assigning user-defined flag bits
164	  to connection tracking entries.  It can be used with xtables connlabel
165	  match and the nftables ct expression.
166
167config NF_CT_PROTO_DCCP
168	bool 'DCCP protocol connection tracking support'
169	depends on NETFILTER_ADVANCED
170	default y
171	help
172	  With this option enabled, the layer 3 independent connection
173	  tracking code will be able to do state tracking on DCCP connections.
174
175	  If unsure, say Y.
176
177config NF_CT_PROTO_GRE
178	bool
179
180config NF_CT_PROTO_SCTP
181	bool 'SCTP protocol connection tracking support'
182	depends on NETFILTER_ADVANCED
183	default y
184	select LIBCRC32C
185	help
186	  With this option enabled, the layer 3 independent connection
187	  tracking code will be able to do state tracking on SCTP connections.
188
189	  If unsure, say Y.
190
191config NF_CT_PROTO_UDPLITE
192	bool 'UDP-Lite protocol connection tracking support'
193	depends on NETFILTER_ADVANCED
194	default y
195	help
196	  With this option enabled, the layer 3 independent connection
197	  tracking code will be able to do state tracking on UDP-Lite
198	  connections.
199
200	  If unsure, say Y.
201
202config NF_CONNTRACK_AMANDA
203	tristate "Amanda backup protocol support"
204	depends on NETFILTER_ADVANCED
205	select TEXTSEARCH
206	select TEXTSEARCH_KMP
207	help
208	  If you are running the Amanda backup package <http://www.amanda.org/>
209	  on this machine or machines that will be MASQUERADED through this
210	  machine, then you may want to enable this feature.  This allows the
211	  connection tracking and natting code to allow the sub-channels that
212	  Amanda requires for communication of the backup data, messages and
213	  index.
214
215	  To compile it as a module, choose M here.  If unsure, say N.
216
217config NF_CONNTRACK_FTP
218	tristate "FTP protocol support"
219	default m if NETFILTER_ADVANCED=n
220	help
221	  Tracking FTP connections is problematic: special helpers are
222	  required for tracking them, and doing masquerading and other forms
223	  of Network Address Translation on them.
224
225	  This is FTP support on Layer 3 independent connection tracking.
226
227	  To compile it as a module, choose M here.  If unsure, say N.
228
229config NF_CONNTRACK_H323
230	tristate "H.323 protocol support"
231	depends on IPV6 || IPV6=n
232	depends on NETFILTER_ADVANCED
233	help
234	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
235	  important VoIP protocols, it is widely used by voice hardware and
236	  software including voice gateways, IP phones, Netmeeting, OpenPhone,
237	  Gnomemeeting, etc.
238
239	  With this module you can support H.323 on a connection tracking/NAT
240	  firewall.
241
242	  This module supports RAS, Fast Start, H.245 Tunnelling, Call
243	  Forwarding, RTP/RTCP and T.120 based audio, video, fax, chat,
244	  whiteboard, file transfer, etc. For more information, please
245	  visit http://nath323.sourceforge.net/.
246
247	  To compile it as a module, choose M here.  If unsure, say N.
248
249config NF_CONNTRACK_IRC
250	tristate "IRC protocol support"
251	default m if NETFILTER_ADVANCED=n
252	help
253	  There is a commonly-used extension to IRC called
254	  Direct Client-to-Client Protocol (DCC).  This enables users to send
255	  files to each other, and also chat to each other without the need
256	  of a server.  DCC Sending is used anywhere you send files over IRC,
257	  and DCC Chat is most commonly used by Eggdrop bots.  If you are
258	  using NAT, this extension will enable you to send files and initiate
259	  chats.  Note that you do NOT need this extension to get files or
260	  have others initiate chats, or everything else in IRC.
261
262	  To compile it as a module, choose M here.  If unsure, say N.
263
264config NF_CONNTRACK_BROADCAST
265	tristate
266
267config NF_CONNTRACK_NETBIOS_NS
268	tristate "NetBIOS name service protocol support"
269	select NF_CONNTRACK_BROADCAST
270	help
271	  NetBIOS name service requests are sent as broadcast messages from an
272	  unprivileged port and responded to with unicast messages to the
273	  same port. This make them hard to firewall properly because connection
274	  tracking doesn't deal with broadcasts. This helper tracks locally
275	  originating NetBIOS name service requests and the corresponding
276	  responses. It relies on correct IP address configuration, specifically
277	  netmask and broadcast address. When properly configured, the output
278	  of "ip address show" should look similar to this:
279
280	  $ ip -4 address show eth0
281	  4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
282	      inet 172.16.2.252/24 brd 172.16.2.255 scope global eth0
283
284	  To compile it as a module, choose M here.  If unsure, say N.
285
286config NF_CONNTRACK_SNMP
287	tristate "SNMP service protocol support"
288	depends on NETFILTER_ADVANCED
289	select NF_CONNTRACK_BROADCAST
290	help
291	  SNMP service requests are sent as broadcast messages from an
292	  unprivileged port and responded to with unicast messages to the
293	  same port. This make them hard to firewall properly because connection
294	  tracking doesn't deal with broadcasts. This helper tracks locally
295	  originating SNMP service requests and the corresponding
296	  responses. It relies on correct IP address configuration, specifically
297	  netmask and broadcast address.
298
299	  To compile it as a module, choose M here.  If unsure, say N.
300
301config NF_CONNTRACK_PPTP
302	tristate "PPtP protocol support"
303	depends on NETFILTER_ADVANCED
304	select NF_CT_PROTO_GRE
305	help
306	  This module adds support for PPTP (Point to Point Tunnelling
307	  Protocol, RFC2637) connection tracking and NAT.
308
309	  If you are running PPTP sessions over a stateful firewall or NAT
310	  box, you may want to enable this feature.
311
312	  Please note that not all PPTP modes of operation are supported yet.
313	  Specifically these limitations exist:
314	    - Blindly assumes that control connections are always established
315	      in PNS->PAC direction. This is a violation of RFC2637.
316	    - Only supports a single call within each session
317
318	  To compile it as a module, choose M here.  If unsure, say N.
319
320config NF_CONNTRACK_SANE
321	tristate "SANE protocol support"
322	depends on NETFILTER_ADVANCED
323	help
324	  SANE is a protocol for remote access to scanners as implemented
325	  by the 'saned' daemon. Like FTP, it uses separate control and
326	  data connections.
327
328	  With this module you can support SANE on a connection tracking
329	  firewall.
330
331	  To compile it as a module, choose M here.  If unsure, say N.
332
333config NF_CONNTRACK_SIP
334	tristate "SIP protocol support"
335	default m if NETFILTER_ADVANCED=n
336	help
337	  SIP is an application-layer control protocol that can establish,
338	  modify, and terminate multimedia sessions (conferences) such as
339	  Internet telephony calls. With the nf_conntrack_sip and
340	  the nf_nat_sip modules you can support the protocol on a connection
341	  tracking/NATing firewall.
342
343	  To compile it as a module, choose M here.  If unsure, say N.
344
345config NF_CONNTRACK_TFTP
346	tristate "TFTP protocol support"
347	depends on NETFILTER_ADVANCED
348	help
349	  TFTP connection tracking helper, this is required depending
350	  on how restrictive your ruleset is.
351	  If you are using a tftp client behind -j SNAT or -j MASQUERADING
352	  you will need this.
353
354	  To compile it as a module, choose M here.  If unsure, say N.
355
356config NF_CT_NETLINK
357	tristate 'Connection tracking netlink interface'
358	select NETFILTER_NETLINK
359	default m if NETFILTER_ADVANCED=n
360	help
361	  This option enables support for a netlink-based userspace interface
362
363config NF_CT_NETLINK_TIMEOUT
364	tristate  'Connection tracking timeout tuning via Netlink'
365	select NETFILTER_NETLINK
366	depends on NETFILTER_ADVANCED
367	depends on NF_CONNTRACK_TIMEOUT
368	help
369	  This option enables support for connection tracking timeout
370	  fine-grain tuning. This allows you to attach specific timeout
371	  policies to flows, instead of using the global timeout policy.
372
373	  If unsure, say `N'.
374
375config NF_CT_NETLINK_HELPER
376	tristate 'Connection tracking helpers in user-space via Netlink'
377	select NETFILTER_NETLINK
378	depends on NF_CT_NETLINK
379	depends on NETFILTER_NETLINK_QUEUE
380	depends on NETFILTER_NETLINK_GLUE_CT
381	depends on NETFILTER_ADVANCED
382	help
383	  This option enables the user-space connection tracking helpers
384	  infrastructure.
385
386	  If unsure, say `N'.
387
388config NETFILTER_NETLINK_GLUE_CT
389	bool "NFQUEUE and NFLOG integration with Connection Tracking"
390	default n
391	depends on (NETFILTER_NETLINK_QUEUE || NETFILTER_NETLINK_LOG) && NF_CT_NETLINK
392	help
393	  If this option is enabled, NFQUEUE and NFLOG can include
394	  Connection Tracking information together with the packet is
395	  the enqueued via NFNETLINK.
396
397config NF_NAT
398	tristate "Network Address Translation support"
399	depends on NF_CONNTRACK
400	default m if NETFILTER_ADVANCED=n
401	help
402	  The NAT option allows masquerading, port forwarding and other
403	  forms of full Network Address Port Translation. This can be
404	  controlled by iptables, ip6tables or nft.
405
406config NF_NAT_AMANDA
407	tristate
408	depends on NF_CONNTRACK && NF_NAT
409	default NF_NAT && NF_CONNTRACK_AMANDA
410
411config NF_NAT_FTP
412	tristate
413	depends on NF_CONNTRACK && NF_NAT
414	default NF_NAT && NF_CONNTRACK_FTP
415
416config NF_NAT_IRC
417	tristate
418	depends on NF_CONNTRACK && NF_NAT
419	default NF_NAT && NF_CONNTRACK_IRC
420
421config NF_NAT_SIP
422	tristate
423	depends on NF_CONNTRACK && NF_NAT
424	default NF_NAT && NF_CONNTRACK_SIP
425
426config NF_NAT_TFTP
427	tristate
428	depends on NF_CONNTRACK && NF_NAT
429	default NF_NAT && NF_CONNTRACK_TFTP
430
431config NF_NAT_REDIRECT
432	bool
433
434config NF_NAT_MASQUERADE
435	bool
436
437config NETFILTER_SYNPROXY
438	tristate
439
440endif # NF_CONNTRACK
441
442config NF_TABLES
443	select NETFILTER_NETLINK
444	tristate "Netfilter nf_tables support"
445	help
446	  nftables is the new packet classification framework that intends to
447	  replace the existing {ip,ip6,arp,eb}_tables infrastructure. It
448	  provides a pseudo-state machine with an extensible instruction-set
449	  (also known as expressions) that the userspace 'nft' utility
450	  (http://www.netfilter.org/projects/nftables) uses to build the
451	  rule-set. It also comes with the generic set infrastructure that
452	  allows you to construct mappings between matchings and actions
453	  for performance lookups.
454
455	  To compile it as a module, choose M here.
456
457if NF_TABLES
458config NF_TABLES_INET
459	depends on IPV6
460	select NF_TABLES_IPV4
461	select NF_TABLES_IPV6
462	bool "Netfilter nf_tables mixed IPv4/IPv6 tables support"
463	help
464	  This option enables support for a mixed IPv4/IPv6 "inet" table.
465
466config NF_TABLES_NETDEV
467	bool "Netfilter nf_tables netdev tables support"
468	help
469	  This option enables support for the "netdev" table.
470
471config NFT_NUMGEN
472	tristate "Netfilter nf_tables number generator module"
473	help
474	  This option adds the number generator expression used to perform
475	  incremental counting and random numbers bound to a upper limit.
476
477config NFT_CT
478	depends on NF_CONNTRACK
479	tristate "Netfilter nf_tables conntrack module"
480	help
481	  This option adds the "ct" expression that you can use to match
482	  connection tracking information such as the flow state.
483
484config NFT_FLOW_OFFLOAD
485	depends on NF_CONNTRACK && NF_FLOW_TABLE
486	tristate "Netfilter nf_tables hardware flow offload module"
487	help
488	  This option adds the "flow_offload" expression that you can use to
489	  choose what flows are placed into the hardware.
490
491config NFT_COUNTER
492	tristate "Netfilter nf_tables counter module"
493	help
494	  This option adds the "counter" expression that you can use to
495	  include packet and byte counters in a rule.
496
497config NFT_CONNLIMIT
498	tristate "Netfilter nf_tables connlimit module"
499	depends on NF_CONNTRACK
500	depends on NETFILTER_ADVANCED
501	select NETFILTER_CONNCOUNT
502	help
503	  This option adds the "connlimit" expression that you can use to
504	  ratelimit rule matchings per connections.
505
506config NFT_LOG
507	tristate "Netfilter nf_tables log module"
508	help
509	  This option adds the "log" expression that you can use to log
510	  packets matching some criteria.
511
512config NFT_LIMIT
513	tristate "Netfilter nf_tables limit module"
514	help
515	  This option adds the "limit" expression that you can use to
516	  ratelimit rule matchings.
517
518config NFT_MASQ
519	depends on NF_CONNTRACK
520	depends on NF_NAT
521	select NF_NAT_MASQUERADE
522	tristate "Netfilter nf_tables masquerade support"
523	help
524	  This option adds the "masquerade" expression that you can use
525	  to perform NAT in the masquerade flavour.
526
527config NFT_REDIR
528	depends on NF_CONNTRACK
529	depends on NF_NAT
530	tristate "Netfilter nf_tables redirect support"
531	select NF_NAT_REDIRECT
532	help
533	  This options adds the "redirect" expression that you can use
534	  to perform NAT in the redirect flavour.
535
536config NFT_NAT
537	depends on NF_CONNTRACK
538	select NF_NAT
539	depends on NF_TABLES_IPV4 || NF_TABLES_IPV6
540	tristate "Netfilter nf_tables nat module"
541	help
542	  This option adds the "nat" expression that you can use to perform
543	  typical Network Address Translation (NAT) packet transformations.
544
545config NFT_TUNNEL
546	tristate "Netfilter nf_tables tunnel module"
547	help
548	  This option adds the "tunnel" expression that you can use to set
549	  tunneling policies.
550
551config NFT_OBJREF
552	tristate "Netfilter nf_tables stateful object reference module"
553	help
554	  This option adds the "objref" expression that allows you to refer to
555	  stateful objects, such as counters and quotas.
556
557config NFT_QUEUE
558	depends on NETFILTER_NETLINK_QUEUE
559	tristate "Netfilter nf_tables queue module"
560	help
561	  This is required if you intend to use the userspace queueing
562	  infrastructure (also known as NFQUEUE) from nftables.
563
564config NFT_QUOTA
565	tristate "Netfilter nf_tables quota module"
566	help
567	  This option adds the "quota" expression that you can use to match
568	  enforce bytes quotas.
569
570config NFT_REJECT
571	default m if NETFILTER_ADVANCED=n
572	tristate "Netfilter nf_tables reject support"
573	depends on !NF_TABLES_INET || (IPV6!=m || m)
574	help
575	  This option adds the "reject" expression that you can use to
576	  explicitly deny and notify via TCP reset/ICMP informational errors
577	  unallowed traffic.
578
579config NFT_REJECT_INET
580	depends on NF_TABLES_INET
581	default NFT_REJECT
582	tristate
583
584config NFT_COMPAT
585	depends on NETFILTER_XTABLES
586	tristate "Netfilter x_tables over nf_tables module"
587	help
588	  This is required if you intend to use any of existing
589	  x_tables match/target extensions over the nf_tables
590	  framework.
591
592config NFT_HASH
593	tristate "Netfilter nf_tables hash module"
594	help
595	  This option adds the "hash" expression that you can use to perform
596	  a hash operation on registers.
597
598config NFT_FIB
599	tristate
600
601config NFT_FIB_INET
602	depends on NF_TABLES_INET
603	depends on NFT_FIB_IPV4
604	depends on NFT_FIB_IPV6
605	tristate "Netfilter nf_tables fib inet support"
606	help
607	  This option allows using the FIB expression from the inet table.
608	  The lookup will be delegated to the IPv4 or IPv6 FIB depending
609	  on the protocol of the packet.
610
611config NFT_XFRM
612	tristate "Netfilter nf_tables xfrm/IPSec security association matching"
613	depends on XFRM
614	help
615	  This option adds an expression that you can use to extract properties
616	  of a packets security association.
617
618config NFT_SOCKET
619	tristate "Netfilter nf_tables socket match support"
620	depends on IPV6 || IPV6=n
621	select NF_SOCKET_IPV4
622	select NF_SOCKET_IPV6 if NF_TABLES_IPV6
623	help
624	  This option allows matching for the presence or absence of a
625	  corresponding socket and its attributes.
626
627config NFT_OSF
628	tristate "Netfilter nf_tables passive OS fingerprint support"
629	depends on NETFILTER_ADVANCED
630	select NETFILTER_NETLINK_OSF
631	help
632	  This option allows matching packets from an specific OS.
633
634config NFT_TPROXY
635	tristate "Netfilter nf_tables tproxy support"
636	depends on IPV6 || IPV6=n
637	select NF_DEFRAG_IPV4
638	select NF_DEFRAG_IPV6 if NF_TABLES_IPV6
639	select NF_TPROXY_IPV4
640	select NF_TPROXY_IPV6 if NF_TABLES_IPV6
641	help
642	  This makes transparent proxy support available in nftables.
643
644config NFT_SYNPROXY
645	tristate "Netfilter nf_tables SYNPROXY expression support"
646	depends on NF_CONNTRACK && NETFILTER_ADVANCED
647	select NETFILTER_SYNPROXY
648	select SYN_COOKIES
649	help
650	  The SYNPROXY expression allows you to intercept TCP connections and
651	  establish them using syncookies before they are passed on to the
652	  server. This allows to avoid conntrack and server resource usage
653	  during SYN-flood attacks.
654
655if NF_TABLES_NETDEV
656
657config NF_DUP_NETDEV
658	tristate "Netfilter packet duplication support"
659	help
660	  This option enables the generic packet duplication infrastructure
661	  for Netfilter.
662
663config NFT_DUP_NETDEV
664	tristate "Netfilter nf_tables netdev packet duplication support"
665	select NF_DUP_NETDEV
666	help
667	  This option enables packet duplication for the "netdev" family.
668
669config NFT_FWD_NETDEV
670	tristate "Netfilter nf_tables netdev packet forwarding support"
671	select NF_DUP_NETDEV
672	help
673	  This option enables packet forwarding for the "netdev" family.
674
675config NFT_FIB_NETDEV
676	depends on NFT_FIB_IPV4
677	depends on NFT_FIB_IPV6
678	tristate "Netfilter nf_tables netdev fib lookups support"
679	help
680	  This option allows using the FIB expression from the netdev table.
681	  The lookup will be delegated to the IPv4 or IPv6 FIB depending
682	  on the protocol of the packet.
683
684endif # NF_TABLES_NETDEV
685
686endif # NF_TABLES
687
688config NF_FLOW_TABLE_INET
689	tristate "Netfilter flow table mixed IPv4/IPv6 module"
690	depends on NF_FLOW_TABLE
691	help
692	  This option adds the flow table mixed IPv4/IPv6 support.
693
694	  To compile it as a module, choose M here.
695
696config NF_FLOW_TABLE
697	tristate "Netfilter flow table module"
698	depends on NETFILTER_INGRESS
699	depends on NF_CONNTRACK
700	depends on NF_TABLES
701	help
702	  This option adds the flow table core infrastructure.
703
704	  To compile it as a module, choose M here.
705
706config NETFILTER_XTABLES
707	tristate "Netfilter Xtables support (required for ip_tables)"
708	default m if NETFILTER_ADVANCED=n
709	help
710	  This is required if you intend to use any of ip_tables,
711	  ip6_tables or arp_tables.
712
713if NETFILTER_XTABLES
714
715comment "Xtables combined modules"
716
717config NETFILTER_XT_MARK
718	tristate 'nfmark target and match support'
719	default m if NETFILTER_ADVANCED=n
720	---help---
721	This option adds the "MARK" target and "mark" match.
722
723	Netfilter mark matching allows you to match packets based on the
724	"nfmark" value in the packet.
725	The target allows you to create rules in the "mangle" table which alter
726	the netfilter mark (nfmark) field associated with the packet.
727
728	Prior to routing, the nfmark can influence the routing method and can
729	also be used by other subsystems to change their behavior.
730
731config NETFILTER_XT_CONNMARK
732	tristate 'ctmark target and match support'
733	depends on NF_CONNTRACK
734	depends on NETFILTER_ADVANCED
735	select NF_CONNTRACK_MARK
736	---help---
737	This option adds the "CONNMARK" target and "connmark" match.
738
739	Netfilter allows you to store a mark value per connection (a.k.a.
740	ctmark), similarly to the packet mark (nfmark). Using this
741	target and match, you can set and match on this mark.
742
743config NETFILTER_XT_SET
744	tristate 'set target and match support'
745	depends on IP_SET
746	depends on NETFILTER_ADVANCED
747	help
748	  This option adds the "SET" target and "set" match.
749
750	  Using this target and match, you can add/delete and match
751	  elements in the sets created by ipset(8).
752
753	  To compile it as a module, choose M here.  If unsure, say N.
754
755# alphabetically ordered list of targets
756
757comment "Xtables targets"
758
759config NETFILTER_XT_TARGET_AUDIT
760	tristate "AUDIT target support"
761	depends on AUDIT
762	depends on NETFILTER_ADVANCED
763	---help---
764	  This option adds a 'AUDIT' target, which can be used to create
765	  audit records for packets dropped/accepted.
766
767	  To compileit as a module, choose M here. If unsure, say N.
768
769config NETFILTER_XT_TARGET_CHECKSUM
770	tristate "CHECKSUM target support"
771	depends on IP_NF_MANGLE || IP6_NF_MANGLE
772	depends on NETFILTER_ADVANCED
773	---help---
774	  This option adds a `CHECKSUM' target, which can be used in the iptables mangle
775	  table to work around buggy DHCP clients in virtualized environments.
776
777	  Some old DHCP clients drop packets because they are not aware
778	  that the checksum would normally be offloaded to hardware and
779	  thus should be considered valid.
780	  This target can be used to fill in the checksum using iptables
781	  when such packets are sent via a virtual network device.
782
783	  To compile it as a module, choose M here.  If unsure, say N.
784
785config NETFILTER_XT_TARGET_CLASSIFY
786	tristate '"CLASSIFY" target support'
787	depends on NETFILTER_ADVANCED
788	help
789	  This option adds a `CLASSIFY' target, which enables the user to set
790	  the priority of a packet. Some qdiscs can use this value for
791	  classification, among these are:
792
793  	  atm, cbq, dsmark, pfifo_fast, htb, prio
794
795	  To compile it as a module, choose M here.  If unsure, say N.
796
797config NETFILTER_XT_TARGET_CONNMARK
798	tristate  '"CONNMARK" target support'
799	depends on NF_CONNTRACK
800	depends on NETFILTER_ADVANCED
801	select NETFILTER_XT_CONNMARK
802	---help---
803	This is a backwards-compat option for the user's convenience
804	(e.g. when running oldconfig). It selects
805	CONFIG_NETFILTER_XT_CONNMARK (combined connmark/CONNMARK module).
806
807config NETFILTER_XT_TARGET_CONNSECMARK
808	tristate '"CONNSECMARK" target support'
809	depends on NF_CONNTRACK && NF_CONNTRACK_SECMARK
810	default m if NETFILTER_ADVANCED=n
811	help
812	  The CONNSECMARK target copies security markings from packets
813	  to connections, and restores security markings from connections
814	  to packets (if the packets are not already marked).  This would
815	  normally be used in conjunction with the SECMARK target.
816
817	  To compile it as a module, choose M here.  If unsure, say N.
818
819config NETFILTER_XT_TARGET_CT
820	tristate '"CT" target support'
821	depends on NF_CONNTRACK
822	depends on IP_NF_RAW || IP6_NF_RAW
823	depends on NETFILTER_ADVANCED
824	help
825	  This options adds a `CT' target, which allows to specify initial
826	  connection tracking parameters like events to be delivered and
827	  the helper to be used.
828
829	  To compile it as a module, choose M here.  If unsure, say N.
830
831config NETFILTER_XT_TARGET_DSCP
832	tristate '"DSCP" and "TOS" target support'
833	depends on IP_NF_MANGLE || IP6_NF_MANGLE
834	depends on NETFILTER_ADVANCED
835	help
836	  This option adds a `DSCP' target, which allows you to manipulate
837	  the IPv4/IPv6 header DSCP field (differentiated services codepoint).
838
839	  The DSCP field can have any value between 0x0 and 0x3f inclusive.
840
841	  It also adds the "TOS" target, which allows you to create rules in
842	  the "mangle" table which alter the Type Of Service field of an IPv4
843	  or the Priority field of an IPv6 packet, prior to routing.
844
845	  To compile it as a module, choose M here.  If unsure, say N.
846
847config NETFILTER_XT_TARGET_HL
848	tristate '"HL" hoplimit target support'
849	depends on IP_NF_MANGLE || IP6_NF_MANGLE
850	depends on NETFILTER_ADVANCED
851	---help---
852	This option adds the "HL" (for IPv6) and "TTL" (for IPv4)
853	targets, which enable the user to change the
854	hoplimit/time-to-live value of the IP header.
855
856	While it is safe to decrement the hoplimit/TTL value, the
857	modules also allow to increment and set the hoplimit value of
858	the header to arbitrary values. This is EXTREMELY DANGEROUS
859	since you can easily create immortal packets that loop
860	forever on the network.
861
862config NETFILTER_XT_TARGET_HMARK
863	tristate '"HMARK" target support'
864	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
865	depends on NETFILTER_ADVANCED
866	---help---
867	This option adds the "HMARK" target.
868
869	The target allows you to create rules in the "raw" and "mangle" tables
870	which set the skbuff mark by means of hash calculation within a given
871	range. The nfmark can influence the routing method and can also be used
872	by other subsystems to change their behaviour.
873
874	To compile it as a module, choose M here. If unsure, say N.
875
876config NETFILTER_XT_TARGET_IDLETIMER
877	tristate  "IDLETIMER target support"
878	depends on NETFILTER_ADVANCED
879	help
880
881	  This option adds the `IDLETIMER' target.  Each matching packet
882	  resets the timer associated with label specified when the rule is
883	  added.  When the timer expires, it triggers a sysfs notification.
884	  The remaining time for expiration can be read via sysfs.
885
886	  To compile it as a module, choose M here.  If unsure, say N.
887
888config NETFILTER_XT_TARGET_LED
889	tristate '"LED" target support'
890	depends on LEDS_CLASS && LEDS_TRIGGERS
891	depends on NETFILTER_ADVANCED
892	help
893	  This option adds a `LED' target, which allows you to blink LEDs in
894	  response to particular packets passing through your machine.
895
896	  This can be used to turn a spare LED into a network activity LED,
897	  which only flashes in response to FTP transfers, for example.  Or
898	  you could have an LED which lights up for a minute or two every time
899	  somebody connects to your machine via SSH.
900
901	  You will need support for the "led" class to make this work.
902
903	  To create an LED trigger for incoming SSH traffic:
904	    iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh --led-delay 1000
905
906	  Then attach the new trigger to an LED on your system:
907	    echo netfilter-ssh > /sys/class/leds/<ledname>/trigger
908
909	  For more information on the LEDs available on your system, see
910	  Documentation/leds/leds-class.rst
911
912config NETFILTER_XT_TARGET_LOG
913	tristate "LOG target support"
914	select NF_LOG_COMMON
915	select NF_LOG_IPV4
916	select NF_LOG_IPV6 if IP6_NF_IPTABLES
917	default m if NETFILTER_ADVANCED=n
918	help
919	  This option adds a `LOG' target, which allows you to create rules in
920	  any iptables table which records the packet header to the syslog.
921
922	  To compile it as a module, choose M here.  If unsure, say N.
923
924config NETFILTER_XT_TARGET_MARK
925	tristate '"MARK" target support'
926	depends on NETFILTER_ADVANCED
927	select NETFILTER_XT_MARK
928	---help---
929	This is a backwards-compat option for the user's convenience
930	(e.g. when running oldconfig). It selects
931	CONFIG_NETFILTER_XT_MARK (combined mark/MARK module).
932
933config NETFILTER_XT_NAT
934	tristate '"SNAT and DNAT" targets support'
935	depends on NF_NAT
936	---help---
937	This option enables the SNAT and DNAT targets.
938
939	To compile it as a module, choose M here. If unsure, say N.
940
941config NETFILTER_XT_TARGET_NETMAP
942	tristate '"NETMAP" target support'
943	depends on NF_NAT
944	---help---
945	NETMAP is an implementation of static 1:1 NAT mapping of network
946	addresses. It maps the network address part, while keeping the host
947	address part intact.
948
949	To compile it as a module, choose M here. If unsure, say N.
950
951config NETFILTER_XT_TARGET_NFLOG
952	tristate '"NFLOG" target support'
953	default m if NETFILTER_ADVANCED=n
954	select NETFILTER_NETLINK_LOG
955	help
956	  This option enables the NFLOG target, which allows to LOG
957	  messages through nfnetlink_log.
958
959	  To compile it as a module, choose M here.  If unsure, say N.
960
961config NETFILTER_XT_TARGET_NFQUEUE
962	tristate '"NFQUEUE" target Support'
963	depends on NETFILTER_ADVANCED
964	select NETFILTER_NETLINK_QUEUE
965	help
966	  This target replaced the old obsolete QUEUE target.
967
968	  As opposed to QUEUE, it supports 65535 different queues,
969	  not just one.
970
971	  To compile it as a module, choose M here.  If unsure, say N.
972
973config NETFILTER_XT_TARGET_NOTRACK
974	tristate  '"NOTRACK" target support (DEPRECATED)'
975	depends on NF_CONNTRACK
976	depends on IP_NF_RAW || IP6_NF_RAW
977	depends on NETFILTER_ADVANCED
978	select NETFILTER_XT_TARGET_CT
979
980config NETFILTER_XT_TARGET_RATEEST
981	tristate '"RATEEST" target support'
982	depends on NETFILTER_ADVANCED
983	help
984	  This option adds a `RATEEST' target, which allows to measure
985	  rates similar to TC estimators. The `rateest' match can be
986	  used to match on the measured rates.
987
988	  To compile it as a module, choose M here.  If unsure, say N.
989
990config NETFILTER_XT_TARGET_REDIRECT
991	tristate "REDIRECT target support"
992	depends on NF_NAT
993	select NF_NAT_REDIRECT
994	---help---
995	REDIRECT is a special case of NAT: all incoming connections are
996	mapped onto the incoming interface's address, causing the packets to
997	come to the local machine instead of passing through. This is
998	useful for transparent proxies.
999
1000	To compile it as a module, choose M here. If unsure, say N.
1001
1002config NETFILTER_XT_TARGET_MASQUERADE
1003	tristate "MASQUERADE target support"
1004	depends on NF_NAT
1005	default m if NETFILTER_ADVANCED=n
1006	select NF_NAT_MASQUERADE
1007	help
1008	  Masquerading is a special case of NAT: all outgoing connections are
1009	  changed to seem to come from a particular interface's address, and
1010	  if the interface goes down, those connections are lost.  This is
1011	  only useful for dialup accounts with dynamic IP address (ie. your IP
1012	  address will be different on next dialup).
1013
1014	  To compile it as a module, choose M here.  If unsure, say N.
1015
1016config NETFILTER_XT_TARGET_TEE
1017	tristate '"TEE" - packet cloning to alternate destination'
1018	depends on NETFILTER_ADVANCED
1019	depends on IPV6 || IPV6=n
1020	depends on !NF_CONNTRACK || NF_CONNTRACK
1021	depends on IP6_NF_IPTABLES || !IP6_NF_IPTABLES
1022	select NF_DUP_IPV4
1023	select NF_DUP_IPV6 if IP6_NF_IPTABLES
1024	---help---
1025	This option adds a "TEE" target with which a packet can be cloned and
1026	this clone be rerouted to another nexthop.
1027
1028config NETFILTER_XT_TARGET_TPROXY
1029	tristate '"TPROXY" target transparent proxying support'
1030	depends on NETFILTER_XTABLES
1031	depends on NETFILTER_ADVANCED
1032	depends on IPV6 || IPV6=n
1033	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
1034	depends on IP_NF_MANGLE
1035	select NF_DEFRAG_IPV4
1036	select NF_DEFRAG_IPV6 if IP6_NF_IPTABLES != n
1037	select NF_TPROXY_IPV4
1038	select NF_TPROXY_IPV6 if IP6_NF_IPTABLES
1039	help
1040	  This option adds a `TPROXY' target, which is somewhat similar to
1041	  REDIRECT.  It can only be used in the mangle table and is useful
1042	  to redirect traffic to a transparent proxy.  It does _not_ depend
1043	  on Netfilter connection tracking and NAT, unlike REDIRECT.
1044	  For it to work you will have to configure certain iptables rules
1045	  and use policy routing. For more information on how to set it up
1046	  see Documentation/networking/tproxy.txt.
1047
1048	  To compile it as a module, choose M here.  If unsure, say N.
1049
1050config NETFILTER_XT_TARGET_TRACE
1051	tristate  '"TRACE" target support'
1052	depends on IP_NF_RAW || IP6_NF_RAW
1053	depends on NETFILTER_ADVANCED
1054	help
1055	  The TRACE target allows you to mark packets so that the kernel
1056	  will log every rule which match the packets as those traverse
1057	  the tables, chains, rules.
1058
1059	  If you want to compile it as a module, say M here and read
1060	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1061
1062config NETFILTER_XT_TARGET_SECMARK
1063	tristate '"SECMARK" target support'
1064	depends on NETWORK_SECMARK
1065	default m if NETFILTER_ADVANCED=n
1066	help
1067	  The SECMARK target allows security marking of network
1068	  packets, for use with security subsystems.
1069
1070	  To compile it as a module, choose M here.  If unsure, say N.
1071
1072config NETFILTER_XT_TARGET_TCPMSS
1073	tristate '"TCPMSS" target support'
1074	depends on IPV6 || IPV6=n
1075	default m if NETFILTER_ADVANCED=n
1076	---help---
1077	  This option adds a `TCPMSS' target, which allows you to alter the
1078	  MSS value of TCP SYN packets, to control the maximum size for that
1079	  connection (usually limiting it to your outgoing interface's MTU
1080	  minus 40).
1081
1082	  This is used to overcome criminally braindead ISPs or servers which
1083	  block ICMP Fragmentation Needed packets.  The symptoms of this
1084	  problem are that everything works fine from your Linux
1085	  firewall/router, but machines behind it can never exchange large
1086	  packets:
1087	        1) Web browsers connect, then hang with no data received.
1088	        2) Small mail works fine, but large emails hang.
1089	        3) ssh works fine, but scp hangs after initial handshaking.
1090
1091	  Workaround: activate this option and add a rule to your firewall
1092	  configuration like:
1093
1094	  iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
1095	                 -j TCPMSS --clamp-mss-to-pmtu
1096
1097	  To compile it as a module, choose M here.  If unsure, say N.
1098
1099config NETFILTER_XT_TARGET_TCPOPTSTRIP
1100	tristate '"TCPOPTSTRIP" target support'
1101	depends on IP_NF_MANGLE || IP6_NF_MANGLE
1102	depends on NETFILTER_ADVANCED
1103	help
1104	  This option adds a "TCPOPTSTRIP" target, which allows you to strip
1105	  TCP options from TCP packets.
1106
1107# alphabetically ordered list of matches
1108
1109comment "Xtables matches"
1110
1111config NETFILTER_XT_MATCH_ADDRTYPE
1112	tristate '"addrtype" address type match support'
1113	default m if NETFILTER_ADVANCED=n
1114	---help---
1115	  This option allows you to match what routing thinks of an address,
1116	  eg. UNICAST, LOCAL, BROADCAST, ...
1117
1118	  If you want to compile it as a module, say M here and read
1119	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1120
1121config NETFILTER_XT_MATCH_BPF
1122	tristate '"bpf" match support'
1123	depends on NETFILTER_ADVANCED
1124	help
1125	  BPF matching applies a linux socket filter to each packet and
1126	  accepts those for which the filter returns non-zero.
1127
1128	  To compile it as a module, choose M here.  If unsure, say N.
1129
1130config NETFILTER_XT_MATCH_CGROUP
1131	tristate '"control group" match support'
1132	depends on NETFILTER_ADVANCED
1133	depends on CGROUPS
1134	select CGROUP_NET_CLASSID
1135	---help---
1136	Socket/process control group matching allows you to match locally
1137	generated packets based on which net_cls control group processes
1138	belong to.
1139
1140config NETFILTER_XT_MATCH_CLUSTER
1141	tristate '"cluster" match support'
1142	depends on NF_CONNTRACK
1143	depends on NETFILTER_ADVANCED
1144	---help---
1145	  This option allows you to build work-load-sharing clusters of
1146	  network servers/stateful firewalls without having a dedicated
1147	  load-balancing router/server/switch. Basically, this match returns
1148	  true when the packet must be handled by this cluster node. Thus,
1149	  all nodes see all packets and this match decides which node handles
1150	  what packets. The work-load sharing algorithm is based on source
1151	  address hashing.
1152
1153	  If you say Y or M here, try `iptables -m cluster --help` for
1154	  more information.
1155
1156config NETFILTER_XT_MATCH_COMMENT
1157	tristate  '"comment" match support'
1158	depends on NETFILTER_ADVANCED
1159	help
1160	  This option adds a `comment' dummy-match, which allows you to put
1161	  comments in your iptables ruleset.
1162
1163	  If you want to compile it as a module, say M here and read
1164	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1165
1166config NETFILTER_XT_MATCH_CONNBYTES
1167	tristate  '"connbytes" per-connection counter match support'
1168	depends on NF_CONNTRACK
1169	depends on NETFILTER_ADVANCED
1170	help
1171	  This option adds a `connbytes' match, which allows you to match the
1172	  number of bytes and/or packets for each direction within a connection.
1173
1174	  If you want to compile it as a module, say M here and read
1175	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1176
1177config NETFILTER_XT_MATCH_CONNLABEL
1178	tristate '"connlabel" match support'
1179	select NF_CONNTRACK_LABELS
1180	depends on NF_CONNTRACK
1181	depends on NETFILTER_ADVANCED
1182	---help---
1183	  This match allows you to test and assign userspace-defined labels names
1184	  to a connection.  The kernel only stores bit values - mapping
1185	  names to bits is done by userspace.
1186
1187	  Unlike connmark, more than 32 flag bits may be assigned to a
1188	  connection simultaneously.
1189
1190config NETFILTER_XT_MATCH_CONNLIMIT
1191	tristate '"connlimit" match support'
1192	depends on NF_CONNTRACK
1193	depends on NETFILTER_ADVANCED
1194	select NETFILTER_CONNCOUNT
1195	---help---
1196	  This match allows you to match against the number of parallel
1197	  connections to a server per client IP address (or address block).
1198
1199config NETFILTER_XT_MATCH_CONNMARK
1200	tristate  '"connmark" connection mark match support'
1201	depends on NF_CONNTRACK
1202	depends on NETFILTER_ADVANCED
1203	select NETFILTER_XT_CONNMARK
1204	---help---
1205	This is a backwards-compat option for the user's convenience
1206	(e.g. when running oldconfig). It selects
1207	CONFIG_NETFILTER_XT_CONNMARK (combined connmark/CONNMARK module).
1208
1209config NETFILTER_XT_MATCH_CONNTRACK
1210	tristate '"conntrack" connection tracking match support'
1211	depends on NF_CONNTRACK
1212	default m if NETFILTER_ADVANCED=n
1213	help
1214	  This is a general conntrack match module, a superset of the state match.
1215
1216	  It allows matching on additional conntrack information, which is
1217	  useful in complex configurations, such as NAT gateways with multiple
1218	  internet links or tunnels.
1219
1220	  To compile it as a module, choose M here.  If unsure, say N.
1221
1222config NETFILTER_XT_MATCH_CPU
1223	tristate '"cpu" match support'
1224	depends on NETFILTER_ADVANCED
1225	help
1226	  CPU matching allows you to match packets based on the CPU
1227	  currently handling the packet.
1228
1229	  To compile it as a module, choose M here.  If unsure, say N.
1230
1231config NETFILTER_XT_MATCH_DCCP
1232	tristate '"dccp" protocol match support'
1233	depends on NETFILTER_ADVANCED
1234	default IP_DCCP
1235	help
1236	  With this option enabled, you will be able to use the iptables
1237	  `dccp' match in order to match on DCCP source/destination ports
1238	  and DCCP flags.
1239
1240	  If you want to compile it as a module, say M here and read
1241	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1242
1243config NETFILTER_XT_MATCH_DEVGROUP
1244	tristate '"devgroup" match support'
1245	depends on NETFILTER_ADVANCED
1246	help
1247	  This options adds a `devgroup' match, which allows to match on the
1248	  device group a network device is assigned to.
1249
1250	  To compile it as a module, choose M here.  If unsure, say N.
1251
1252config NETFILTER_XT_MATCH_DSCP
1253	tristate '"dscp" and "tos" match support'
1254	depends on NETFILTER_ADVANCED
1255	help
1256	  This option adds a `DSCP' match, which allows you to match against
1257	  the IPv4/IPv6 header DSCP field (differentiated services codepoint).
1258
1259	  The DSCP field can have any value between 0x0 and 0x3f inclusive.
1260
1261	  It will also add a "tos" match, which allows you to match packets
1262	  based on the Type Of Service fields of the IPv4 packet (which share
1263	  the same bits as DSCP).
1264
1265	  To compile it as a module, choose M here.  If unsure, say N.
1266
1267config NETFILTER_XT_MATCH_ECN
1268	tristate '"ecn" match support'
1269	depends on NETFILTER_ADVANCED
1270	---help---
1271	This option adds an "ECN" match, which allows you to match against
1272	the IPv4 and TCP header ECN fields.
1273
1274	To compile it as a module, choose M here. If unsure, say N.
1275
1276config NETFILTER_XT_MATCH_ESP
1277	tristate '"esp" match support'
1278	depends on NETFILTER_ADVANCED
1279	help
1280	  This match extension allows you to match a range of SPIs
1281	  inside ESP header of IPSec packets.
1282
1283	  To compile it as a module, choose M here.  If unsure, say N.
1284
1285config NETFILTER_XT_MATCH_HASHLIMIT
1286	tristate '"hashlimit" match support'
1287	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
1288	depends on NETFILTER_ADVANCED
1289	help
1290	  This option adds a `hashlimit' match.
1291
1292	  As opposed to `limit', this match dynamically creates a hash table
1293	  of limit buckets, based on your selection of source/destination
1294	  addresses and/or ports.
1295
1296	  It enables you to express policies like `10kpps for any given
1297	  destination address' or `500pps from any given source address'
1298	  with a single rule.
1299
1300config NETFILTER_XT_MATCH_HELPER
1301	tristate '"helper" match support'
1302	depends on NF_CONNTRACK
1303	depends on NETFILTER_ADVANCED
1304	help
1305	  Helper matching allows you to match packets in dynamic connections
1306	  tracked by a conntrack-helper, ie. nf_conntrack_ftp
1307
1308	  To compile it as a module, choose M here.  If unsure, say Y.
1309
1310config NETFILTER_XT_MATCH_HL
1311	tristate '"hl" hoplimit/TTL match support'
1312	depends on NETFILTER_ADVANCED
1313	---help---
1314	HL matching allows you to match packets based on the hoplimit
1315	in the IPv6 header, or the time-to-live field in the IPv4
1316	header of the packet.
1317
1318config NETFILTER_XT_MATCH_IPCOMP
1319	tristate '"ipcomp" match support'
1320	depends on NETFILTER_ADVANCED
1321	help
1322	  This match extension allows you to match a range of CPIs(16 bits)
1323	  inside IPComp header of IPSec packets.
1324
1325	  To compile it as a module, choose M here.  If unsure, say N.
1326
1327config NETFILTER_XT_MATCH_IPRANGE
1328	tristate '"iprange" address range match support'
1329	depends on NETFILTER_ADVANCED
1330	---help---
1331	This option adds a "iprange" match, which allows you to match based on
1332	an IP address range. (Normal iptables only matches on single addresses
1333	with an optional mask.)
1334
1335	If unsure, say M.
1336
1337config NETFILTER_XT_MATCH_IPVS
1338	tristate '"ipvs" match support'
1339	depends on IP_VS
1340	depends on NETFILTER_ADVANCED
1341	depends on NF_CONNTRACK
1342	help
1343	  This option allows you to match against IPVS properties of a packet.
1344
1345	  If unsure, say N.
1346
1347config NETFILTER_XT_MATCH_L2TP
1348	tristate '"l2tp" match support'
1349	depends on NETFILTER_ADVANCED
1350	default L2TP
1351	---help---
1352	This option adds an "L2TP" match, which allows you to match against
1353	L2TP protocol header fields.
1354
1355	To compile it as a module, choose M here. If unsure, say N.
1356
1357config NETFILTER_XT_MATCH_LENGTH
1358	tristate '"length" match support'
1359	depends on NETFILTER_ADVANCED
1360	help
1361	  This option allows you to match the length of a packet against a
1362	  specific value or range of values.
1363
1364	  To compile it as a module, choose M here.  If unsure, say N.
1365
1366config NETFILTER_XT_MATCH_LIMIT
1367	tristate '"limit" match support'
1368	depends on NETFILTER_ADVANCED
1369	help
1370	  limit matching allows you to control the rate at which a rule can be
1371	  matched: mainly useful in combination with the LOG target ("LOG
1372	  target support", below) and to avoid some Denial of Service attacks.
1373
1374	  To compile it as a module, choose M here.  If unsure, say N.
1375
1376config NETFILTER_XT_MATCH_MAC
1377	tristate '"mac" address match support'
1378	depends on NETFILTER_ADVANCED
1379	help
1380	  MAC matching allows you to match packets based on the source
1381	  Ethernet address of the packet.
1382
1383	  To compile it as a module, choose M here.  If unsure, say N.
1384
1385config NETFILTER_XT_MATCH_MARK
1386	tristate '"mark" match support'
1387	depends on NETFILTER_ADVANCED
1388	select NETFILTER_XT_MARK
1389	---help---
1390	This is a backwards-compat option for the user's convenience
1391	(e.g. when running oldconfig). It selects
1392	CONFIG_NETFILTER_XT_MARK (combined mark/MARK module).
1393
1394config NETFILTER_XT_MATCH_MULTIPORT
1395	tristate '"multiport" Multiple port match support'
1396	depends on NETFILTER_ADVANCED
1397	help
1398	  Multiport matching allows you to match TCP or UDP packets based on
1399	  a series of source or destination ports: normally a rule can only
1400	  match a single range of ports.
1401
1402	  To compile it as a module, choose M here.  If unsure, say N.
1403
1404config NETFILTER_XT_MATCH_NFACCT
1405	tristate '"nfacct" match support'
1406	depends on NETFILTER_ADVANCED
1407	select NETFILTER_NETLINK_ACCT
1408	help
1409	  This option allows you to use the extended accounting through
1410	  nfnetlink_acct.
1411
1412	  To compile it as a module, choose M here.  If unsure, say N.
1413
1414config NETFILTER_XT_MATCH_OSF
1415	tristate '"osf" Passive OS fingerprint match'
1416	depends on NETFILTER_ADVANCED
1417	select NETFILTER_NETLINK_OSF
1418	help
1419	  This option selects the Passive OS Fingerprinting match module
1420	  that allows to passively match the remote operating system by
1421	  analyzing incoming TCP SYN packets.
1422
1423	  Rules and loading software can be downloaded from
1424	  http://www.ioremap.net/projects/osf
1425
1426	  To compile it as a module, choose M here.  If unsure, say N.
1427
1428config NETFILTER_XT_MATCH_OWNER
1429	tristate '"owner" match support'
1430	depends on NETFILTER_ADVANCED
1431	---help---
1432	Socket owner matching allows you to match locally-generated packets
1433	based on who created the socket: the user or group. It is also
1434	possible to check whether a socket actually exists.
1435
1436config NETFILTER_XT_MATCH_POLICY
1437	tristate 'IPsec "policy" match support'
1438	depends on XFRM
1439	default m if NETFILTER_ADVANCED=n
1440	help
1441	  Policy matching allows you to match packets based on the
1442	  IPsec policy that was used during decapsulation/will
1443	  be used during encapsulation.
1444
1445	  To compile it as a module, choose M here.  If unsure, say N.
1446
1447config NETFILTER_XT_MATCH_PHYSDEV
1448	tristate '"physdev" match support'
1449	depends on BRIDGE && BRIDGE_NETFILTER
1450	depends on NETFILTER_ADVANCED
1451	help
1452	  Physdev packet matching matches against the physical bridge ports
1453	  the IP packet arrived on or will leave by.
1454
1455	  To compile it as a module, choose M here.  If unsure, say N.
1456
1457config NETFILTER_XT_MATCH_PKTTYPE
1458	tristate '"pkttype" packet type match support'
1459	depends on NETFILTER_ADVANCED
1460	help
1461	  Packet type matching allows you to match a packet by
1462	  its "class", eg. BROADCAST, MULTICAST, ...
1463
1464	  Typical usage:
1465	  iptables -A INPUT -m pkttype --pkt-type broadcast -j LOG
1466
1467	  To compile it as a module, choose M here.  If unsure, say N.
1468
1469config NETFILTER_XT_MATCH_QUOTA
1470	tristate '"quota" match support'
1471	depends on NETFILTER_ADVANCED
1472	help
1473	  This option adds a `quota' match, which allows to match on a
1474	  byte counter.
1475
1476	  If you want to compile it as a module, say M here and read
1477	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1478
1479config NETFILTER_XT_MATCH_RATEEST
1480	tristate '"rateest" match support'
1481	depends on NETFILTER_ADVANCED
1482	select NETFILTER_XT_TARGET_RATEEST
1483	help
1484	  This option adds a `rateest' match, which allows to match on the
1485	  rate estimated by the RATEEST target.
1486
1487	  To compile it as a module, choose M here.  If unsure, say N.
1488
1489config NETFILTER_XT_MATCH_REALM
1490	tristate  '"realm" match support'
1491	depends on NETFILTER_ADVANCED
1492	select IP_ROUTE_CLASSID
1493	help
1494	  This option adds a `realm' match, which allows you to use the realm
1495	  key from the routing subsystem inside iptables.
1496
1497	  This match pretty much resembles the CONFIG_NET_CLS_ROUTE4 option
1498	  in tc world.
1499
1500	  If you want to compile it as a module, say M here and read
1501	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1502
1503config NETFILTER_XT_MATCH_RECENT
1504	tristate '"recent" match support'
1505	depends on NETFILTER_ADVANCED
1506	---help---
1507	This match is used for creating one or many lists of recently
1508	used addresses and then matching against that/those list(s).
1509
1510	Short options are available by using 'iptables -m recent -h'
1511	Official Website: <http://snowman.net/projects/ipt_recent/>
1512
1513config NETFILTER_XT_MATCH_SCTP
1514	tristate  '"sctp" protocol match support'
1515	depends on NETFILTER_ADVANCED
1516	default IP_SCTP
1517	help
1518	  With this option enabled, you will be able to use the
1519	  `sctp' match in order to match on SCTP source/destination ports
1520	  and SCTP chunk types.
1521
1522	  If you want to compile it as a module, say M here and read
1523	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
1524
1525config NETFILTER_XT_MATCH_SOCKET
1526	tristate '"socket" match support'
1527	depends on NETFILTER_XTABLES
1528	depends on NETFILTER_ADVANCED
1529	depends on IPV6 || IPV6=n
1530	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
1531	select NF_SOCKET_IPV4
1532	select NF_SOCKET_IPV6 if IP6_NF_IPTABLES
1533	select NF_DEFRAG_IPV4
1534	select NF_DEFRAG_IPV6 if IP6_NF_IPTABLES != n
1535	help
1536	  This option adds a `socket' match, which can be used to match
1537	  packets for which a TCP or UDP socket lookup finds a valid socket.
1538	  It can be used in combination with the MARK target and policy
1539	  routing to implement full featured non-locally bound sockets.
1540
1541	  To compile it as a module, choose M here.  If unsure, say N.
1542
1543config NETFILTER_XT_MATCH_STATE
1544	tristate '"state" match support'
1545	depends on NF_CONNTRACK
1546	default m if NETFILTER_ADVANCED=n
1547	help
1548	  Connection state matching allows you to match packets based on their
1549	  relationship to a tracked connection (ie. previous packets).  This
1550	  is a powerful tool for packet classification.
1551
1552	  To compile it as a module, choose M here.  If unsure, say N.
1553
1554config NETFILTER_XT_MATCH_STATISTIC
1555	tristate '"statistic" match support'
1556	depends on NETFILTER_ADVANCED
1557	help
1558	  This option adds a `statistic' match, which allows you to match
1559	  on packets periodically or randomly with a given percentage.
1560
1561	  To compile it as a module, choose M here.  If unsure, say N.
1562
1563config NETFILTER_XT_MATCH_STRING
1564	tristate  '"string" match support'
1565	depends on NETFILTER_ADVANCED
1566	select TEXTSEARCH
1567	select TEXTSEARCH_KMP
1568	select TEXTSEARCH_BM
1569	select TEXTSEARCH_FSM
1570	help
1571	  This option adds a `string' match, which allows you to look for
1572	  pattern matchings in packets.
1573
1574	  To compile it as a module, choose M here.  If unsure, say N.
1575
1576config NETFILTER_XT_MATCH_TCPMSS
1577	tristate '"tcpmss" match support'
1578	depends on NETFILTER_ADVANCED
1579	help
1580	  This option adds a `tcpmss' match, which allows you to examine the
1581	  MSS value of TCP SYN packets, which control the maximum packet size
1582	  for that connection.
1583
1584	  To compile it as a module, choose M here.  If unsure, say N.
1585
1586config NETFILTER_XT_MATCH_TIME
1587	tristate '"time" match support'
1588	depends on NETFILTER_ADVANCED
1589	---help---
1590	  This option adds a "time" match, which allows you to match based on
1591	  the packet arrival time (at the machine which netfilter is running)
1592	  on) or departure time/date (for locally generated packets).
1593
1594	  If you say Y here, try `iptables -m time --help` for
1595	  more information.
1596
1597	  If you want to compile it as a module, say M here.
1598	  If unsure, say N.
1599
1600config NETFILTER_XT_MATCH_U32
1601	tristate '"u32" match support'
1602	depends on NETFILTER_ADVANCED
1603	---help---
1604	  u32 allows you to extract quantities of up to 4 bytes from a packet,
1605	  AND them with specified masks, shift them by specified amounts and
1606	  test whether the results are in any of a set of specified ranges.
1607	  The specification of what to extract is general enough to skip over
1608	  headers with lengths stored in the packet, as in IP or TCP header
1609	  lengths.
1610
1611	  Details and examples are in the kernel module source.
1612
1613endif # NETFILTER_XTABLES
1614
1615endmenu
1616
1617source "net/netfilter/ipset/Kconfig"
1618
1619source "net/netfilter/ipvs/Kconfig"
1620