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