xref: /OK3568_Linux_fs/kernel/net/ipv6/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# IPv6 configuration
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#   IPv6 as module will cause a CRASH if you try to unload it
7*4882a593Smuzhiyunmenuconfig IPV6
8*4882a593Smuzhiyun	tristate "The IPv6 protocol"
9*4882a593Smuzhiyun	default y
10*4882a593Smuzhiyun	help
11*4882a593Smuzhiyun	  Support for IP version 6 (IPv6).
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	  For general information about IPv6, see
14*4882a593Smuzhiyun	  <https://en.wikipedia.org/wiki/IPv6>.
15*4882a593Smuzhiyun	  For specific information about IPv6 under Linux, see
16*4882a593Smuzhiyun	  Documentation/networking/ipv6.rst and read the HOWTO at
17*4882a593Smuzhiyun	  <https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/>
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	  To compile this protocol support as a module, choose M here: the
20*4882a593Smuzhiyun	  module will be called ipv6.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyunif IPV6
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunconfig IPV6_ROUTER_PREF
25*4882a593Smuzhiyun	bool "IPv6: Router Preference (RFC 4191) support"
26*4882a593Smuzhiyun	help
27*4882a593Smuzhiyun	  Router Preference is an optional extension to the Router
28*4882a593Smuzhiyun	  Advertisement message which improves the ability of hosts
29*4882a593Smuzhiyun	  to pick an appropriate router, especially when the hosts
30*4882a593Smuzhiyun	  are placed in a multi-homed network.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun	  If unsure, say N.
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunconfig IPV6_ROUTE_INFO
35*4882a593Smuzhiyun	bool "IPv6: Route Information (RFC 4191) support"
36*4882a593Smuzhiyun	depends on IPV6_ROUTER_PREF
37*4882a593Smuzhiyun	help
38*4882a593Smuzhiyun	  Support of Route Information.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun	  If unsure, say N.
41*4882a593Smuzhiyun
42*4882a593Smuzhiyunconfig IPV6_OPTIMISTIC_DAD
43*4882a593Smuzhiyun	bool "IPv6: Enable RFC 4429 Optimistic DAD"
44*4882a593Smuzhiyun	help
45*4882a593Smuzhiyun	  Support for optimistic Duplicate Address Detection. It allows for
46*4882a593Smuzhiyun	  autoconfigured addresses to be used more quickly.
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun	  If unsure, say N.
49*4882a593Smuzhiyun
50*4882a593Smuzhiyunconfig INET6_AH
51*4882a593Smuzhiyun	tristate "IPv6: AH transformation"
52*4882a593Smuzhiyun	select XFRM_AH
53*4882a593Smuzhiyun	help
54*4882a593Smuzhiyun	  Support for IPsec AH (Authentication Header).
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun	  AH can be used with various authentication algorithms.  Besides
57*4882a593Smuzhiyun	  enabling AH support itself, this option enables the generic
58*4882a593Smuzhiyun	  implementations of the algorithms that RFC 8221 lists as MUST be
59*4882a593Smuzhiyun	  implemented.  If you need any other algorithms, you'll need to enable
60*4882a593Smuzhiyun	  them in the crypto API.  You should also enable accelerated
61*4882a593Smuzhiyun	  implementations of any needed algorithms when available.
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun	  If unsure, say Y.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunconfig INET6_ESP
66*4882a593Smuzhiyun	tristate "IPv6: ESP transformation"
67*4882a593Smuzhiyun	select XFRM_ESP
68*4882a593Smuzhiyun	help
69*4882a593Smuzhiyun	  Support for IPsec ESP (Encapsulating Security Payload).
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun	  ESP can be used with various encryption and authentication algorithms.
72*4882a593Smuzhiyun	  Besides enabling ESP support itself, this option enables the generic
73*4882a593Smuzhiyun	  implementations of the algorithms that RFC 8221 lists as MUST be
74*4882a593Smuzhiyun	  implemented.  If you need any other algorithms, you'll need to enable
75*4882a593Smuzhiyun	  them in the crypto API.  You should also enable accelerated
76*4882a593Smuzhiyun	  implementations of any needed algorithms when available.
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun	  If unsure, say Y.
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunconfig INET6_ESP_OFFLOAD
81*4882a593Smuzhiyun	tristate "IPv6: ESP transformation offload"
82*4882a593Smuzhiyun	depends on INET6_ESP
83*4882a593Smuzhiyun	select XFRM_OFFLOAD
84*4882a593Smuzhiyun	default n
85*4882a593Smuzhiyun	help
86*4882a593Smuzhiyun	  Support for ESP transformation offload. This makes sense
87*4882a593Smuzhiyun	  only if this system really does IPsec and want to do it
88*4882a593Smuzhiyun	  with high throughput. A typical desktop system does not
89*4882a593Smuzhiyun	  need it, even if it does IPsec.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun	  If unsure, say N.
92*4882a593Smuzhiyun
93*4882a593Smuzhiyunconfig INET6_ESPINTCP
94*4882a593Smuzhiyun	bool "IPv6: ESP in TCP encapsulation (RFC 8229)"
95*4882a593Smuzhiyun	depends on XFRM && INET6_ESP
96*4882a593Smuzhiyun	select STREAM_PARSER
97*4882a593Smuzhiyun	select NET_SOCK_MSG
98*4882a593Smuzhiyun	select XFRM_ESPINTCP
99*4882a593Smuzhiyun	help
100*4882a593Smuzhiyun	  Support for RFC 8229 encapsulation of ESP and IKE over
101*4882a593Smuzhiyun	  TCP/IPv6 sockets.
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun	  If unsure, say N.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyunconfig INET6_IPCOMP
106*4882a593Smuzhiyun	tristate "IPv6: IPComp transformation"
107*4882a593Smuzhiyun	select INET6_XFRM_TUNNEL
108*4882a593Smuzhiyun	select XFRM_IPCOMP
109*4882a593Smuzhiyun	help
110*4882a593Smuzhiyun	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
111*4882a593Smuzhiyun	  typically needed for IPsec.
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun	  If unsure, say Y.
114*4882a593Smuzhiyun
115*4882a593Smuzhiyunconfig IPV6_MIP6
116*4882a593Smuzhiyun	tristate "IPv6: Mobility"
117*4882a593Smuzhiyun	select XFRM
118*4882a593Smuzhiyun	help
119*4882a593Smuzhiyun	  Support for IPv6 Mobility described in RFC 3775.
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun	  If unsure, say N.
122*4882a593Smuzhiyun
123*4882a593Smuzhiyunconfig IPV6_ILA
124*4882a593Smuzhiyun	tristate "IPv6: Identifier Locator Addressing (ILA)"
125*4882a593Smuzhiyun	depends on NETFILTER
126*4882a593Smuzhiyun	select DST_CACHE
127*4882a593Smuzhiyun	select LWTUNNEL
128*4882a593Smuzhiyun	help
129*4882a593Smuzhiyun	  Support for IPv6 Identifier Locator Addressing (ILA).
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun	  ILA is a mechanism to do network virtualization without
132*4882a593Smuzhiyun	  encapsulation. The basic concept of ILA is that we split an
133*4882a593Smuzhiyun	  IPv6 address into a 64 bit locator and 64 bit identifier. The
134*4882a593Smuzhiyun	  identifier is the identity of an entity in communication
135*4882a593Smuzhiyun	  ("who") and the locator expresses the location of the
136*4882a593Smuzhiyun	  entity ("where").
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun	  ILA can be configured using the "encap ila" option with
139*4882a593Smuzhiyun	  "ip -6 route" command. ILA is described in
140*4882a593Smuzhiyun	  https://tools.ietf.org/html/draft-herbert-nvo3-ila-00.
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun	  If unsure, say N.
143*4882a593Smuzhiyun
144*4882a593Smuzhiyunconfig INET6_XFRM_TUNNEL
145*4882a593Smuzhiyun	tristate
146*4882a593Smuzhiyun	select INET6_TUNNEL
147*4882a593Smuzhiyun	default n
148*4882a593Smuzhiyun
149*4882a593Smuzhiyunconfig INET6_TUNNEL
150*4882a593Smuzhiyun	tristate
151*4882a593Smuzhiyun	default n
152*4882a593Smuzhiyun
153*4882a593Smuzhiyunconfig IPV6_VTI
154*4882a593Smuzhiyuntristate "Virtual (secure) IPv6: tunneling"
155*4882a593Smuzhiyun	select IPV6_TUNNEL
156*4882a593Smuzhiyun	select NET_IP_TUNNEL
157*4882a593Smuzhiyun	select XFRM
158*4882a593Smuzhiyun	help
159*4882a593Smuzhiyun	Tunneling means encapsulating data of one protocol type within
160*4882a593Smuzhiyun	another protocol and sending it over a channel that understands the
161*4882a593Smuzhiyun	encapsulating protocol. This can be used with xfrm mode tunnel to give
162*4882a593Smuzhiyun	the notion of a secure tunnel for IPSEC and then use routing protocol
163*4882a593Smuzhiyun	on top.
164*4882a593Smuzhiyun
165*4882a593Smuzhiyunconfig IPV6_SIT
166*4882a593Smuzhiyun	tristate "IPv6: IPv6-in-IPv4 tunnel (SIT driver)"
167*4882a593Smuzhiyun	select INET_TUNNEL
168*4882a593Smuzhiyun	select NET_IP_TUNNEL
169*4882a593Smuzhiyun	select IPV6_NDISC_NODETYPE
170*4882a593Smuzhiyun	default y
171*4882a593Smuzhiyun	help
172*4882a593Smuzhiyun	  Tunneling means encapsulating data of one protocol type within
173*4882a593Smuzhiyun	  another protocol and sending it over a channel that understands the
174*4882a593Smuzhiyun	  encapsulating protocol. This driver implements encapsulation of IPv6
175*4882a593Smuzhiyun	  into IPv4 packets. This is useful if you want to connect two IPv6
176*4882a593Smuzhiyun	  networks over an IPv4-only path.
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	  Saying M here will produce a module called sit. If unsure, say Y.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyunconfig IPV6_SIT_6RD
181*4882a593Smuzhiyun	bool "IPv6: IPv6 Rapid Deployment (6RD)"
182*4882a593Smuzhiyun	depends on IPV6_SIT
183*4882a593Smuzhiyun	default n
184*4882a593Smuzhiyun	help
185*4882a593Smuzhiyun	  IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon
186*4882a593Smuzhiyun	  mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly
187*4882a593Smuzhiyun	  deploy IPv6 unicast service to IPv4 sites to which it provides
188*4882a593Smuzhiyun	  customer premise equipment.  Like 6to4, it utilizes stateless IPv6 in
189*4882a593Smuzhiyun	  IPv4 encapsulation in order to transit IPv4-only network
190*4882a593Smuzhiyun	  infrastructure.  Unlike 6to4, a 6rd service provider uses an IPv6
191*4882a593Smuzhiyun	  prefix of its own in place of the fixed 6to4 prefix.
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun	  With this option enabled, the SIT driver offers 6rd functionality by
194*4882a593Smuzhiyun	  providing additional ioctl API to configure the IPv6 Prefix for in
195*4882a593Smuzhiyun	  stead of static 2002::/16 for 6to4.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun	  If unsure, say N.
198*4882a593Smuzhiyun
199*4882a593Smuzhiyunconfig IPV6_NDISC_NODETYPE
200*4882a593Smuzhiyun	bool
201*4882a593Smuzhiyun
202*4882a593Smuzhiyunconfig IPV6_TUNNEL
203*4882a593Smuzhiyun	tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)"
204*4882a593Smuzhiyun	select INET6_TUNNEL
205*4882a593Smuzhiyun	select DST_CACHE
206*4882a593Smuzhiyun	select GRO_CELLS
207*4882a593Smuzhiyun	help
208*4882a593Smuzhiyun	  Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in
209*4882a593Smuzhiyun	  RFC 2473.
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun	  If unsure, say N.
212*4882a593Smuzhiyun
213*4882a593Smuzhiyunconfig IPV6_GRE
214*4882a593Smuzhiyun	tristate "IPv6: GRE tunnel"
215*4882a593Smuzhiyun	select IPV6_TUNNEL
216*4882a593Smuzhiyun	select NET_IP_TUNNEL
217*4882a593Smuzhiyun	depends on NET_IPGRE_DEMUX
218*4882a593Smuzhiyun	help
219*4882a593Smuzhiyun	  Tunneling means encapsulating data of one protocol type within
220*4882a593Smuzhiyun	  another protocol and sending it over a channel that understands the
221*4882a593Smuzhiyun	  encapsulating protocol. This particular tunneling driver implements
222*4882a593Smuzhiyun	  GRE (Generic Routing Encapsulation) and at this time allows
223*4882a593Smuzhiyun	  encapsulating of IPv4 or IPv6 over existing IPv6 infrastructure.
224*4882a593Smuzhiyun	  This driver is useful if the other endpoint is a Cisco router: Cisco
225*4882a593Smuzhiyun	  likes GRE much better than the other Linux tunneling driver ("IP
226*4882a593Smuzhiyun	  tunneling" above). In addition, GRE allows multicast redistribution
227*4882a593Smuzhiyun	  through the tunnel.
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun	  Saying M here will produce a module called ip6_gre. If unsure, say N.
230*4882a593Smuzhiyun
231*4882a593Smuzhiyunconfig IPV6_FOU
232*4882a593Smuzhiyun	tristate
233*4882a593Smuzhiyun	default NET_FOU && IPV6
234*4882a593Smuzhiyun
235*4882a593Smuzhiyunconfig IPV6_FOU_TUNNEL
236*4882a593Smuzhiyun	tristate
237*4882a593Smuzhiyun	default NET_FOU_IP_TUNNELS && IPV6_FOU
238*4882a593Smuzhiyun	select IPV6_TUNNEL
239*4882a593Smuzhiyun
240*4882a593Smuzhiyunconfig IPV6_MULTIPLE_TABLES
241*4882a593Smuzhiyun	bool "IPv6: Multiple Routing Tables"
242*4882a593Smuzhiyun	select FIB_RULES
243*4882a593Smuzhiyun	help
244*4882a593Smuzhiyun	  Support multiple routing tables.
245*4882a593Smuzhiyun
246*4882a593Smuzhiyunconfig IPV6_SUBTREES
247*4882a593Smuzhiyun	bool "IPv6: source address based routing"
248*4882a593Smuzhiyun	depends on IPV6_MULTIPLE_TABLES
249*4882a593Smuzhiyun	help
250*4882a593Smuzhiyun	  Enable routing by source address or prefix.
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun	  The destination address is still the primary routing key, so mixing
253*4882a593Smuzhiyun	  normal and source prefix specific routes in the same routing table
254*4882a593Smuzhiyun	  may sometimes lead to unintended routing behavior.  This can be
255*4882a593Smuzhiyun	  avoided by defining different routing tables for the normal and
256*4882a593Smuzhiyun	  source prefix specific routes.
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun	  If unsure, say N.
259*4882a593Smuzhiyun
260*4882a593Smuzhiyunconfig IPV6_MROUTE
261*4882a593Smuzhiyun	bool "IPv6: multicast routing"
262*4882a593Smuzhiyun	depends on IPV6
263*4882a593Smuzhiyun	select IP_MROUTE_COMMON
264*4882a593Smuzhiyun	help
265*4882a593Smuzhiyun	  Support for IPv6 multicast forwarding.
266*4882a593Smuzhiyun	  If unsure, say N.
267*4882a593Smuzhiyun
268*4882a593Smuzhiyunconfig IPV6_MROUTE_MULTIPLE_TABLES
269*4882a593Smuzhiyun	bool "IPv6: multicast policy routing"
270*4882a593Smuzhiyun	depends on IPV6_MROUTE
271*4882a593Smuzhiyun	select FIB_RULES
272*4882a593Smuzhiyun	help
273*4882a593Smuzhiyun	  Normally, a multicast router runs a userspace daemon and decides
274*4882a593Smuzhiyun	  what to do with a multicast packet based on the source and
275*4882a593Smuzhiyun	  destination addresses. If you say Y here, the multicast router
276*4882a593Smuzhiyun	  will also be able to take interfaces and packet marks into
277*4882a593Smuzhiyun	  account and run multiple instances of userspace daemons
278*4882a593Smuzhiyun	  simultaneously, each one handling a single table.
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun	  If unsure, say N.
281*4882a593Smuzhiyun
282*4882a593Smuzhiyunconfig IPV6_PIMSM_V2
283*4882a593Smuzhiyun	bool "IPv6: PIM-SM version 2 support"
284*4882a593Smuzhiyun	depends on IPV6_MROUTE
285*4882a593Smuzhiyun	help
286*4882a593Smuzhiyun	  Support for IPv6 PIM multicast routing protocol PIM-SMv2.
287*4882a593Smuzhiyun	  If unsure, say N.
288*4882a593Smuzhiyun
289*4882a593Smuzhiyunconfig IPV6_SEG6_LWTUNNEL
290*4882a593Smuzhiyun	bool "IPv6: Segment Routing Header encapsulation support"
291*4882a593Smuzhiyun	depends on IPV6
292*4882a593Smuzhiyun	select LWTUNNEL
293*4882a593Smuzhiyun	select DST_CACHE
294*4882a593Smuzhiyun	select IPV6_MULTIPLE_TABLES
295*4882a593Smuzhiyun	help
296*4882a593Smuzhiyun	  Support for encapsulation of packets within an outer IPv6
297*4882a593Smuzhiyun	  header and a Segment Routing Header using the lightweight
298*4882a593Smuzhiyun	  tunnels mechanism. Also enable support for advanced local
299*4882a593Smuzhiyun	  processing of SRv6 packets based on their active segment.
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun	  If unsure, say N.
302*4882a593Smuzhiyun
303*4882a593Smuzhiyunconfig IPV6_SEG6_HMAC
304*4882a593Smuzhiyun	bool "IPv6: Segment Routing HMAC support"
305*4882a593Smuzhiyun	depends on IPV6
306*4882a593Smuzhiyun	select CRYPTO
307*4882a593Smuzhiyun	select CRYPTO_HMAC
308*4882a593Smuzhiyun	select CRYPTO_SHA1
309*4882a593Smuzhiyun	select CRYPTO_SHA256
310*4882a593Smuzhiyun	help
311*4882a593Smuzhiyun	  Support for HMAC signature generation and verification
312*4882a593Smuzhiyun	  of SR-enabled packets.
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun	  If unsure, say N.
315*4882a593Smuzhiyun
316*4882a593Smuzhiyunconfig IPV6_SEG6_BPF
317*4882a593Smuzhiyun	def_bool y
318*4882a593Smuzhiyun	depends on IPV6_SEG6_LWTUNNEL
319*4882a593Smuzhiyun	depends on IPV6 = y
320*4882a593Smuzhiyun
321*4882a593Smuzhiyunconfig IPV6_RPL_LWTUNNEL
322*4882a593Smuzhiyun	bool "IPv6: RPL Source Routing Header support"
323*4882a593Smuzhiyun	depends on IPV6
324*4882a593Smuzhiyun	select LWTUNNEL
325*4882a593Smuzhiyun	help
326*4882a593Smuzhiyun	  Support for RFC6554 RPL Source Routing Header using the lightweight
327*4882a593Smuzhiyun	  tunnels mechanism.
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun	  If unsure, say N.
330*4882a593Smuzhiyun
331*4882a593Smuzhiyunendif # IPV6
332