162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# IPv6 configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#   IPv6 as module will cause a CRASH if you try to unload it
762306a36Sopenharmony_cimenuconfig IPV6
862306a36Sopenharmony_ci	tristate "The IPv6 protocol"
962306a36Sopenharmony_ci	default y
1062306a36Sopenharmony_ci	select CRYPTO_LIB_SHA1
1162306a36Sopenharmony_ci	help
1262306a36Sopenharmony_ci	  Support for IP version 6 (IPv6).
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	  For general information about IPv6, see
1562306a36Sopenharmony_ci	  <https://en.wikipedia.org/wiki/IPv6>.
1662306a36Sopenharmony_ci	  For specific information about IPv6 under Linux, see
1762306a36Sopenharmony_ci	  Documentation/networking/ipv6.rst and read the HOWTO at
1862306a36Sopenharmony_ci	  <https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/>
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	  To compile this protocol support as a module, choose M here: the
2162306a36Sopenharmony_ci	  module will be called ipv6.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciif IPV6
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciconfig IPV6_ROUTER_PREF
2662306a36Sopenharmony_ci	bool "IPv6: Router Preference (RFC 4191) support"
2762306a36Sopenharmony_ci	help
2862306a36Sopenharmony_ci	  Router Preference is an optional extension to the Router
2962306a36Sopenharmony_ci	  Advertisement message which improves the ability of hosts
3062306a36Sopenharmony_ci	  to pick an appropriate router, especially when the hosts
3162306a36Sopenharmony_ci	  are placed in a multi-homed network.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  If unsure, say N.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciconfig IPV6_ROUTE_INFO
3662306a36Sopenharmony_ci	bool "IPv6: Route Information (RFC 4191) support"
3762306a36Sopenharmony_ci	depends on IPV6_ROUTER_PREF
3862306a36Sopenharmony_ci	help
3962306a36Sopenharmony_ci	  Support of Route Information.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	  If unsure, say N.
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciconfig IPV6_OPTIMISTIC_DAD
4462306a36Sopenharmony_ci	bool "IPv6: Enable RFC 4429 Optimistic DAD"
4562306a36Sopenharmony_ci	help
4662306a36Sopenharmony_ci	  Support for optimistic Duplicate Address Detection. It allows for
4762306a36Sopenharmony_ci	  autoconfigured addresses to be used more quickly.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	  If unsure, say N.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciconfig INET6_AH
5262306a36Sopenharmony_ci	tristate "IPv6: AH transformation"
5362306a36Sopenharmony_ci	select XFRM_AH
5462306a36Sopenharmony_ci	help
5562306a36Sopenharmony_ci	  Support for IPsec AH (Authentication Header).
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	  AH can be used with various authentication algorithms.  Besides
5862306a36Sopenharmony_ci	  enabling AH support itself, this option enables the generic
5962306a36Sopenharmony_ci	  implementations of the algorithms that RFC 8221 lists as MUST be
6062306a36Sopenharmony_ci	  implemented.  If you need any other algorithms, you'll need to enable
6162306a36Sopenharmony_ci	  them in the crypto API.  You should also enable accelerated
6262306a36Sopenharmony_ci	  implementations of any needed algorithms when available.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci	  If unsure, say Y.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciconfig INET6_ESP
6762306a36Sopenharmony_ci	tristate "IPv6: ESP transformation"
6862306a36Sopenharmony_ci	select XFRM_ESP
6962306a36Sopenharmony_ci	help
7062306a36Sopenharmony_ci	  Support for IPsec ESP (Encapsulating Security Payload).
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	  ESP can be used with various encryption and authentication algorithms.
7362306a36Sopenharmony_ci	  Besides enabling ESP support itself, this option enables the generic
7462306a36Sopenharmony_ci	  implementations of the algorithms that RFC 8221 lists as MUST be
7562306a36Sopenharmony_ci	  implemented.  If you need any other algorithms, you'll need to enable
7662306a36Sopenharmony_ci	  them in the crypto API.  You should also enable accelerated
7762306a36Sopenharmony_ci	  implementations of any needed algorithms when available.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	  If unsure, say Y.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciconfig INET6_ESP_OFFLOAD
8262306a36Sopenharmony_ci	tristate "IPv6: ESP transformation offload"
8362306a36Sopenharmony_ci	depends on INET6_ESP
8462306a36Sopenharmony_ci	select XFRM_OFFLOAD
8562306a36Sopenharmony_ci	default n
8662306a36Sopenharmony_ci	help
8762306a36Sopenharmony_ci	  Support for ESP transformation offload. This makes sense
8862306a36Sopenharmony_ci	  only if this system really does IPsec and want to do it
8962306a36Sopenharmony_ci	  with high throughput. A typical desktop system does not
9062306a36Sopenharmony_ci	  need it, even if it does IPsec.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci	  If unsure, say N.
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ciconfig INET6_ESPINTCP
9562306a36Sopenharmony_ci	bool "IPv6: ESP in TCP encapsulation (RFC 8229)"
9662306a36Sopenharmony_ci	depends on XFRM && INET6_ESP
9762306a36Sopenharmony_ci	select STREAM_PARSER
9862306a36Sopenharmony_ci	select NET_SOCK_MSG
9962306a36Sopenharmony_ci	select XFRM_ESPINTCP
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  Support for RFC 8229 encapsulation of ESP and IKE over
10262306a36Sopenharmony_ci	  TCP/IPv6 sockets.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci	  If unsure, say N.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciconfig INET6_IPCOMP
10762306a36Sopenharmony_ci	tristate "IPv6: IPComp transformation"
10862306a36Sopenharmony_ci	select INET6_XFRM_TUNNEL
10962306a36Sopenharmony_ci	select XFRM_IPCOMP
11062306a36Sopenharmony_ci	help
11162306a36Sopenharmony_ci	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
11262306a36Sopenharmony_ci	  typically needed for IPsec.
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	  If unsure, say Y.
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciconfig IPV6_MIP6
11762306a36Sopenharmony_ci	tristate "IPv6: Mobility"
11862306a36Sopenharmony_ci	select XFRM
11962306a36Sopenharmony_ci	help
12062306a36Sopenharmony_ci	  Support for IPv6 Mobility described in RFC 3775.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	  If unsure, say N.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciconfig IPV6_ILA
12562306a36Sopenharmony_ci	tristate "IPv6: Identifier Locator Addressing (ILA)"
12662306a36Sopenharmony_ci	depends on NETFILTER
12762306a36Sopenharmony_ci	select DST_CACHE
12862306a36Sopenharmony_ci	select LWTUNNEL
12962306a36Sopenharmony_ci	help
13062306a36Sopenharmony_ci	  Support for IPv6 Identifier Locator Addressing (ILA).
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	  ILA is a mechanism to do network virtualization without
13362306a36Sopenharmony_ci	  encapsulation. The basic concept of ILA is that we split an
13462306a36Sopenharmony_ci	  IPv6 address into a 64 bit locator and 64 bit identifier. The
13562306a36Sopenharmony_ci	  identifier is the identity of an entity in communication
13662306a36Sopenharmony_ci	  ("who") and the locator expresses the location of the
13762306a36Sopenharmony_ci	  entity ("where").
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci	  ILA can be configured using the "encap ila" option with
14062306a36Sopenharmony_ci	  "ip -6 route" command. ILA is described in
14162306a36Sopenharmony_ci	  https://tools.ietf.org/html/draft-herbert-nvo3-ila-00.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	  If unsure, say N.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ciconfig INET6_XFRM_TUNNEL
14662306a36Sopenharmony_ci	tristate
14762306a36Sopenharmony_ci	select INET6_TUNNEL
14862306a36Sopenharmony_ci	default n
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciconfig INET6_TUNNEL
15162306a36Sopenharmony_ci	tristate
15262306a36Sopenharmony_ci	default n
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciconfig IPV6_VTI
15562306a36Sopenharmony_ci	tristate "Virtual (secure) IPv6: tunneling"
15662306a36Sopenharmony_ci	select IPV6_TUNNEL
15762306a36Sopenharmony_ci	select NET_IP_TUNNEL
15862306a36Sopenharmony_ci	select XFRM
15962306a36Sopenharmony_ci	help
16062306a36Sopenharmony_ci	Tunneling means encapsulating data of one protocol type within
16162306a36Sopenharmony_ci	another protocol and sending it over a channel that understands the
16262306a36Sopenharmony_ci	encapsulating protocol. This can be used with xfrm mode tunnel to give
16362306a36Sopenharmony_ci	the notion of a secure tunnel for IPSEC and then use routing protocol
16462306a36Sopenharmony_ci	on top.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciconfig IPV6_SIT
16762306a36Sopenharmony_ci	tristate "IPv6: IPv6-in-IPv4 tunnel (SIT driver)"
16862306a36Sopenharmony_ci	select INET_TUNNEL
16962306a36Sopenharmony_ci	select NET_IP_TUNNEL
17062306a36Sopenharmony_ci	select IPV6_NDISC_NODETYPE
17162306a36Sopenharmony_ci	default y
17262306a36Sopenharmony_ci	help
17362306a36Sopenharmony_ci	  Tunneling means encapsulating data of one protocol type within
17462306a36Sopenharmony_ci	  another protocol and sending it over a channel that understands the
17562306a36Sopenharmony_ci	  encapsulating protocol. This driver implements encapsulation of IPv6
17662306a36Sopenharmony_ci	  into IPv4 packets. This is useful if you want to connect two IPv6
17762306a36Sopenharmony_ci	  networks over an IPv4-only path.
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci	  Saying M here will produce a module called sit. If unsure, say Y.
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciconfig IPV6_SIT_6RD
18262306a36Sopenharmony_ci	bool "IPv6: IPv6 Rapid Deployment (6RD)"
18362306a36Sopenharmony_ci	depends on IPV6_SIT
18462306a36Sopenharmony_ci	default n
18562306a36Sopenharmony_ci	help
18662306a36Sopenharmony_ci	  IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon
18762306a36Sopenharmony_ci	  mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly
18862306a36Sopenharmony_ci	  deploy IPv6 unicast service to IPv4 sites to which it provides
18962306a36Sopenharmony_ci	  customer premise equipment.  Like 6to4, it utilizes stateless IPv6 in
19062306a36Sopenharmony_ci	  IPv4 encapsulation in order to transit IPv4-only network
19162306a36Sopenharmony_ci	  infrastructure.  Unlike 6to4, a 6rd service provider uses an IPv6
19262306a36Sopenharmony_ci	  prefix of its own in place of the fixed 6to4 prefix.
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci	  With this option enabled, the SIT driver offers 6rd functionality by
19562306a36Sopenharmony_ci	  providing additional ioctl API to configure the IPv6 Prefix for in
19662306a36Sopenharmony_ci	  stead of static 2002::/16 for 6to4.
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci	  If unsure, say N.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ciconfig IPV6_NDISC_NODETYPE
20162306a36Sopenharmony_ci	bool
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ciconfig IPV6_TUNNEL
20462306a36Sopenharmony_ci	tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)"
20562306a36Sopenharmony_ci	select INET6_TUNNEL
20662306a36Sopenharmony_ci	select DST_CACHE
20762306a36Sopenharmony_ci	select GRO_CELLS
20862306a36Sopenharmony_ci	help
20962306a36Sopenharmony_ci	  Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in
21062306a36Sopenharmony_ci	  RFC 2473.
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci	  If unsure, say N.
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ciconfig IPV6_GRE
21562306a36Sopenharmony_ci	tristate "IPv6: GRE tunnel"
21662306a36Sopenharmony_ci	select IPV6_TUNNEL
21762306a36Sopenharmony_ci	select NET_IP_TUNNEL
21862306a36Sopenharmony_ci	depends on NET_IPGRE_DEMUX
21962306a36Sopenharmony_ci	help
22062306a36Sopenharmony_ci	  Tunneling means encapsulating data of one protocol type within
22162306a36Sopenharmony_ci	  another protocol and sending it over a channel that understands the
22262306a36Sopenharmony_ci	  encapsulating protocol. This particular tunneling driver implements
22362306a36Sopenharmony_ci	  GRE (Generic Routing Encapsulation) and at this time allows
22462306a36Sopenharmony_ci	  encapsulating of IPv4 or IPv6 over existing IPv6 infrastructure.
22562306a36Sopenharmony_ci	  This driver is useful if the other endpoint is a Cisco router: Cisco
22662306a36Sopenharmony_ci	  likes GRE much better than the other Linux tunneling driver ("IP
22762306a36Sopenharmony_ci	  tunneling" above). In addition, GRE allows multicast redistribution
22862306a36Sopenharmony_ci	  through the tunnel.
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci	  Saying M here will produce a module called ip6_gre. If unsure, say N.
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ciconfig IPV6_FOU
23362306a36Sopenharmony_ci	tristate
23462306a36Sopenharmony_ci	default NET_FOU && IPV6
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciconfig IPV6_FOU_TUNNEL
23762306a36Sopenharmony_ci	tristate
23862306a36Sopenharmony_ci	default NET_FOU_IP_TUNNELS && IPV6_FOU
23962306a36Sopenharmony_ci	select IPV6_TUNNEL
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciconfig IPV6_MULTIPLE_TABLES
24262306a36Sopenharmony_ci	bool "IPv6: Multiple Routing Tables"
24362306a36Sopenharmony_ci	select FIB_RULES
24462306a36Sopenharmony_ci	help
24562306a36Sopenharmony_ci	  Support multiple routing tables.
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ciconfig IPV6_SUBTREES
24862306a36Sopenharmony_ci	bool "IPv6: source address based routing"
24962306a36Sopenharmony_ci	depends on IPV6_MULTIPLE_TABLES
25062306a36Sopenharmony_ci	help
25162306a36Sopenharmony_ci	  Enable routing by source address or prefix.
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci	  The destination address is still the primary routing key, so mixing
25462306a36Sopenharmony_ci	  normal and source prefix specific routes in the same routing table
25562306a36Sopenharmony_ci	  may sometimes lead to unintended routing behavior.  This can be
25662306a36Sopenharmony_ci	  avoided by defining different routing tables for the normal and
25762306a36Sopenharmony_ci	  source prefix specific routes.
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci	  If unsure, say N.
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ciconfig IPV6_MROUTE
26262306a36Sopenharmony_ci	bool "IPv6: multicast routing"
26362306a36Sopenharmony_ci	depends on IPV6
26462306a36Sopenharmony_ci	select IP_MROUTE_COMMON
26562306a36Sopenharmony_ci	help
26662306a36Sopenharmony_ci	  Support for IPv6 multicast forwarding.
26762306a36Sopenharmony_ci	  If unsure, say N.
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ciconfig IPV6_MROUTE_MULTIPLE_TABLES
27062306a36Sopenharmony_ci	bool "IPv6: multicast policy routing"
27162306a36Sopenharmony_ci	depends on IPV6_MROUTE
27262306a36Sopenharmony_ci	select FIB_RULES
27362306a36Sopenharmony_ci	help
27462306a36Sopenharmony_ci	  Normally, a multicast router runs a userspace daemon and decides
27562306a36Sopenharmony_ci	  what to do with a multicast packet based on the source and
27662306a36Sopenharmony_ci	  destination addresses. If you say Y here, the multicast router
27762306a36Sopenharmony_ci	  will also be able to take interfaces and packet marks into
27862306a36Sopenharmony_ci	  account and run multiple instances of userspace daemons
27962306a36Sopenharmony_ci	  simultaneously, each one handling a single table.
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ci	  If unsure, say N.
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ciconfig IPV6_PIMSM_V2
28462306a36Sopenharmony_ci	bool "IPv6: PIM-SM version 2 support"
28562306a36Sopenharmony_ci	depends on IPV6_MROUTE
28662306a36Sopenharmony_ci	help
28762306a36Sopenharmony_ci	  Support for IPv6 PIM multicast routing protocol PIM-SMv2.
28862306a36Sopenharmony_ci	  If unsure, say N.
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ciconfig IPV6_SEG6_LWTUNNEL
29162306a36Sopenharmony_ci	bool "IPv6: Segment Routing Header encapsulation support"
29262306a36Sopenharmony_ci	depends on IPV6
29362306a36Sopenharmony_ci	select LWTUNNEL
29462306a36Sopenharmony_ci	select DST_CACHE
29562306a36Sopenharmony_ci	select IPV6_MULTIPLE_TABLES
29662306a36Sopenharmony_ci	help
29762306a36Sopenharmony_ci	  Support for encapsulation of packets within an outer IPv6
29862306a36Sopenharmony_ci	  header and a Segment Routing Header using the lightweight
29962306a36Sopenharmony_ci	  tunnels mechanism. Also enable support for advanced local
30062306a36Sopenharmony_ci	  processing of SRv6 packets based on their active segment.
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci	  If unsure, say N.
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ciconfig IPV6_SEG6_HMAC
30562306a36Sopenharmony_ci	bool "IPv6: Segment Routing HMAC support"
30662306a36Sopenharmony_ci	depends on IPV6
30762306a36Sopenharmony_ci	select CRYPTO
30862306a36Sopenharmony_ci	select CRYPTO_HMAC
30962306a36Sopenharmony_ci	select CRYPTO_SHA1
31062306a36Sopenharmony_ci	select CRYPTO_SHA256
31162306a36Sopenharmony_ci	help
31262306a36Sopenharmony_ci	  Support for HMAC signature generation and verification
31362306a36Sopenharmony_ci	  of SR-enabled packets.
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci	  If unsure, say N.
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ciconfig IPV6_SEG6_BPF
31862306a36Sopenharmony_ci	def_bool y
31962306a36Sopenharmony_ci	depends on IPV6_SEG6_LWTUNNEL
32062306a36Sopenharmony_ci	depends on IPV6 = y
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ciconfig IPV6_RPL_LWTUNNEL
32362306a36Sopenharmony_ci	bool "IPv6: RPL Source Routing Header support"
32462306a36Sopenharmony_ci	depends on IPV6
32562306a36Sopenharmony_ci	select LWTUNNEL
32662306a36Sopenharmony_ci	help
32762306a36Sopenharmony_ci	  Support for RFC6554 RPL Source Routing Header using the lightweight
32862306a36Sopenharmony_ci	  tunnels mechanism.
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci	  If unsure, say N.
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_ciconfig IPV6_IOAM6_LWTUNNEL
33362306a36Sopenharmony_ci	bool "IPv6: IOAM Pre-allocated Trace insertion support"
33462306a36Sopenharmony_ci	depends on IPV6
33562306a36Sopenharmony_ci	select LWTUNNEL
33662306a36Sopenharmony_ci	select DST_CACHE
33762306a36Sopenharmony_ci	help
33862306a36Sopenharmony_ci	  Support for the insertion of IOAM Pre-allocated Trace
33962306a36Sopenharmony_ci	  Header using the lightweight tunnels mechanism.
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci	  If unsure, say N.
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_ciendif # IPV6
344