18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# IPv6 configuration 48c2ecf20Sopenharmony_ci# 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci# IPv6 as module will cause a CRASH if you try to unload it 78c2ecf20Sopenharmony_cimenuconfig IPV6 88c2ecf20Sopenharmony_ci tristate "The IPv6 protocol" 98c2ecf20Sopenharmony_ci default y 108c2ecf20Sopenharmony_ci help 118c2ecf20Sopenharmony_ci Support for IP version 6 (IPv6). 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci For general information about IPv6, see 148c2ecf20Sopenharmony_ci <https://en.wikipedia.org/wiki/IPv6>. 158c2ecf20Sopenharmony_ci For specific information about IPv6 under Linux, see 168c2ecf20Sopenharmony_ci Documentation/networking/ipv6.rst and read the HOWTO at 178c2ecf20Sopenharmony_ci <https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/> 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci To compile this protocol support as a module, choose M here: the 208c2ecf20Sopenharmony_ci module will be called ipv6. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciif IPV6 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciconfig IPV6_ROUTER_PREF 258c2ecf20Sopenharmony_ci bool "IPv6: Router Preference (RFC 4191) support" 268c2ecf20Sopenharmony_ci help 278c2ecf20Sopenharmony_ci Router Preference is an optional extension to the Router 288c2ecf20Sopenharmony_ci Advertisement message which improves the ability of hosts 298c2ecf20Sopenharmony_ci to pick an appropriate router, especially when the hosts 308c2ecf20Sopenharmony_ci are placed in a multi-homed network. 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci If unsure, say N. 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciconfig IPV6_ROUTE_INFO 358c2ecf20Sopenharmony_ci bool "IPv6: Route Information (RFC 4191) support" 368c2ecf20Sopenharmony_ci depends on IPV6_ROUTER_PREF 378c2ecf20Sopenharmony_ci help 388c2ecf20Sopenharmony_ci Support of Route Information. 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci If unsure, say N. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciconfig IPV6_OPTIMISTIC_DAD 438c2ecf20Sopenharmony_ci bool "IPv6: Enable RFC 4429 Optimistic DAD" 448c2ecf20Sopenharmony_ci help 458c2ecf20Sopenharmony_ci Support for optimistic Duplicate Address Detection. It allows for 468c2ecf20Sopenharmony_ci autoconfigured addresses to be used more quickly. 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci If unsure, say N. 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciconfig INET6_AH 518c2ecf20Sopenharmony_ci tristate "IPv6: AH transformation" 528c2ecf20Sopenharmony_ci select XFRM_AH 538c2ecf20Sopenharmony_ci help 548c2ecf20Sopenharmony_ci Support for IPsec AH (Authentication Header). 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci AH can be used with various authentication algorithms. Besides 578c2ecf20Sopenharmony_ci enabling AH support itself, this option enables the generic 588c2ecf20Sopenharmony_ci implementations of the algorithms that RFC 8221 lists as MUST be 598c2ecf20Sopenharmony_ci implemented. If you need any other algorithms, you'll need to enable 608c2ecf20Sopenharmony_ci them in the crypto API. You should also enable accelerated 618c2ecf20Sopenharmony_ci implementations of any needed algorithms when available. 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci If unsure, say Y. 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ciconfig INET6_ESP 668c2ecf20Sopenharmony_ci tristate "IPv6: ESP transformation" 678c2ecf20Sopenharmony_ci select XFRM_ESP 688c2ecf20Sopenharmony_ci help 698c2ecf20Sopenharmony_ci Support for IPsec ESP (Encapsulating Security Payload). 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci ESP can be used with various encryption and authentication algorithms. 728c2ecf20Sopenharmony_ci Besides enabling ESP support itself, this option enables the generic 738c2ecf20Sopenharmony_ci implementations of the algorithms that RFC 8221 lists as MUST be 748c2ecf20Sopenharmony_ci implemented. If you need any other algorithms, you'll need to enable 758c2ecf20Sopenharmony_ci them in the crypto API. You should also enable accelerated 768c2ecf20Sopenharmony_ci implementations of any needed algorithms when available. 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci If unsure, say Y. 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciconfig INET6_ESP_OFFLOAD 818c2ecf20Sopenharmony_ci tristate "IPv6: ESP transformation offload" 828c2ecf20Sopenharmony_ci depends on INET6_ESP 838c2ecf20Sopenharmony_ci select XFRM_OFFLOAD 848c2ecf20Sopenharmony_ci default n 858c2ecf20Sopenharmony_ci help 868c2ecf20Sopenharmony_ci Support for ESP transformation offload. This makes sense 878c2ecf20Sopenharmony_ci only if this system really does IPsec and want to do it 888c2ecf20Sopenharmony_ci with high throughput. A typical desktop system does not 898c2ecf20Sopenharmony_ci need it, even if it does IPsec. 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci If unsure, say N. 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ciconfig INET6_ESPINTCP 948c2ecf20Sopenharmony_ci bool "IPv6: ESP in TCP encapsulation (RFC 8229)" 958c2ecf20Sopenharmony_ci depends on XFRM && INET6_ESP 968c2ecf20Sopenharmony_ci select STREAM_PARSER 978c2ecf20Sopenharmony_ci select NET_SOCK_MSG 988c2ecf20Sopenharmony_ci select XFRM_ESPINTCP 998c2ecf20Sopenharmony_ci help 1008c2ecf20Sopenharmony_ci Support for RFC 8229 encapsulation of ESP and IKE over 1018c2ecf20Sopenharmony_ci TCP/IPv6 sockets. 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci If unsure, say N. 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ciconfig INET6_IPCOMP 1068c2ecf20Sopenharmony_ci tristate "IPv6: IPComp transformation" 1078c2ecf20Sopenharmony_ci select INET6_XFRM_TUNNEL 1088c2ecf20Sopenharmony_ci select XFRM_IPCOMP 1098c2ecf20Sopenharmony_ci help 1108c2ecf20Sopenharmony_ci Support for IP Payload Compression Protocol (IPComp) (RFC3173), 1118c2ecf20Sopenharmony_ci typically needed for IPsec. 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci If unsure, say Y. 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ciconfig IPV6_MIP6 1168c2ecf20Sopenharmony_ci tristate "IPv6: Mobility" 1178c2ecf20Sopenharmony_ci select XFRM 1188c2ecf20Sopenharmony_ci help 1198c2ecf20Sopenharmony_ci Support for IPv6 Mobility described in RFC 3775. 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci If unsure, say N. 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ciconfig IPV6_ILA 1248c2ecf20Sopenharmony_ci tristate "IPv6: Identifier Locator Addressing (ILA)" 1258c2ecf20Sopenharmony_ci depends on NETFILTER 1268c2ecf20Sopenharmony_ci select DST_CACHE 1278c2ecf20Sopenharmony_ci select LWTUNNEL 1288c2ecf20Sopenharmony_ci help 1298c2ecf20Sopenharmony_ci Support for IPv6 Identifier Locator Addressing (ILA). 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci ILA is a mechanism to do network virtualization without 1328c2ecf20Sopenharmony_ci encapsulation. The basic concept of ILA is that we split an 1338c2ecf20Sopenharmony_ci IPv6 address into a 64 bit locator and 64 bit identifier. The 1348c2ecf20Sopenharmony_ci identifier is the identity of an entity in communication 1358c2ecf20Sopenharmony_ci ("who") and the locator expresses the location of the 1368c2ecf20Sopenharmony_ci entity ("where"). 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci ILA can be configured using the "encap ila" option with 1398c2ecf20Sopenharmony_ci "ip -6 route" command. ILA is described in 1408c2ecf20Sopenharmony_ci https://tools.ietf.org/html/draft-herbert-nvo3-ila-00. 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci If unsure, say N. 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ciconfig INET6_XFRM_TUNNEL 1458c2ecf20Sopenharmony_ci tristate 1468c2ecf20Sopenharmony_ci select INET6_TUNNEL 1478c2ecf20Sopenharmony_ci default n 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ciconfig INET6_TUNNEL 1508c2ecf20Sopenharmony_ci tristate 1518c2ecf20Sopenharmony_ci default n 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ciconfig IPV6_VTI 1548c2ecf20Sopenharmony_citristate "Virtual (secure) IPv6: tunneling" 1558c2ecf20Sopenharmony_ci select IPV6_TUNNEL 1568c2ecf20Sopenharmony_ci select NET_IP_TUNNEL 1578c2ecf20Sopenharmony_ci select XFRM 1588c2ecf20Sopenharmony_ci help 1598c2ecf20Sopenharmony_ci Tunneling means encapsulating data of one protocol type within 1608c2ecf20Sopenharmony_ci another protocol and sending it over a channel that understands the 1618c2ecf20Sopenharmony_ci encapsulating protocol. This can be used with xfrm mode tunnel to give 1628c2ecf20Sopenharmony_ci the notion of a secure tunnel for IPSEC and then use routing protocol 1638c2ecf20Sopenharmony_ci on top. 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ciconfig IPV6_SIT 1668c2ecf20Sopenharmony_ci tristate "IPv6: IPv6-in-IPv4 tunnel (SIT driver)" 1678c2ecf20Sopenharmony_ci select INET_TUNNEL 1688c2ecf20Sopenharmony_ci select NET_IP_TUNNEL 1698c2ecf20Sopenharmony_ci select IPV6_NDISC_NODETYPE 1708c2ecf20Sopenharmony_ci default y 1718c2ecf20Sopenharmony_ci help 1728c2ecf20Sopenharmony_ci Tunneling means encapsulating data of one protocol type within 1738c2ecf20Sopenharmony_ci another protocol and sending it over a channel that understands the 1748c2ecf20Sopenharmony_ci encapsulating protocol. This driver implements encapsulation of IPv6 1758c2ecf20Sopenharmony_ci into IPv4 packets. This is useful if you want to connect two IPv6 1768c2ecf20Sopenharmony_ci networks over an IPv4-only path. 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ci Saying M here will produce a module called sit. If unsure, say Y. 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ciconfig IPV6_SIT_6RD 1818c2ecf20Sopenharmony_ci bool "IPv6: IPv6 Rapid Deployment (6RD)" 1828c2ecf20Sopenharmony_ci depends on IPV6_SIT 1838c2ecf20Sopenharmony_ci default n 1848c2ecf20Sopenharmony_ci help 1858c2ecf20Sopenharmony_ci IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon 1868c2ecf20Sopenharmony_ci mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly 1878c2ecf20Sopenharmony_ci deploy IPv6 unicast service to IPv4 sites to which it provides 1888c2ecf20Sopenharmony_ci customer premise equipment. Like 6to4, it utilizes stateless IPv6 in 1898c2ecf20Sopenharmony_ci IPv4 encapsulation in order to transit IPv4-only network 1908c2ecf20Sopenharmony_ci infrastructure. Unlike 6to4, a 6rd service provider uses an IPv6 1918c2ecf20Sopenharmony_ci prefix of its own in place of the fixed 6to4 prefix. 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ci With this option enabled, the SIT driver offers 6rd functionality by 1948c2ecf20Sopenharmony_ci providing additional ioctl API to configure the IPv6 Prefix for in 1958c2ecf20Sopenharmony_ci stead of static 2002::/16 for 6to4. 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_ci If unsure, say N. 1988c2ecf20Sopenharmony_ci 1998c2ecf20Sopenharmony_ciconfig IPV6_NDISC_NODETYPE 2008c2ecf20Sopenharmony_ci bool 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ciconfig IPV6_TUNNEL 2038c2ecf20Sopenharmony_ci tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)" 2048c2ecf20Sopenharmony_ci select INET6_TUNNEL 2058c2ecf20Sopenharmony_ci select DST_CACHE 2068c2ecf20Sopenharmony_ci select GRO_CELLS 2078c2ecf20Sopenharmony_ci help 2088c2ecf20Sopenharmony_ci Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in 2098c2ecf20Sopenharmony_ci RFC 2473. 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci If unsure, say N. 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ciconfig IPV6_GRE 2148c2ecf20Sopenharmony_ci tristate "IPv6: GRE tunnel" 2158c2ecf20Sopenharmony_ci select IPV6_TUNNEL 2168c2ecf20Sopenharmony_ci select NET_IP_TUNNEL 2178c2ecf20Sopenharmony_ci depends on NET_IPGRE_DEMUX 2188c2ecf20Sopenharmony_ci help 2198c2ecf20Sopenharmony_ci Tunneling means encapsulating data of one protocol type within 2208c2ecf20Sopenharmony_ci another protocol and sending it over a channel that understands the 2218c2ecf20Sopenharmony_ci encapsulating protocol. This particular tunneling driver implements 2228c2ecf20Sopenharmony_ci GRE (Generic Routing Encapsulation) and at this time allows 2238c2ecf20Sopenharmony_ci encapsulating of IPv4 or IPv6 over existing IPv6 infrastructure. 2248c2ecf20Sopenharmony_ci This driver is useful if the other endpoint is a Cisco router: Cisco 2258c2ecf20Sopenharmony_ci likes GRE much better than the other Linux tunneling driver ("IP 2268c2ecf20Sopenharmony_ci tunneling" above). In addition, GRE allows multicast redistribution 2278c2ecf20Sopenharmony_ci through the tunnel. 2288c2ecf20Sopenharmony_ci 2298c2ecf20Sopenharmony_ci Saying M here will produce a module called ip6_gre. If unsure, say N. 2308c2ecf20Sopenharmony_ci 2318c2ecf20Sopenharmony_ciconfig IPV6_FOU 2328c2ecf20Sopenharmony_ci tristate 2338c2ecf20Sopenharmony_ci default NET_FOU && IPV6 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_ciconfig IPV6_FOU_TUNNEL 2368c2ecf20Sopenharmony_ci tristate 2378c2ecf20Sopenharmony_ci default NET_FOU_IP_TUNNELS && IPV6_FOU 2388c2ecf20Sopenharmony_ci select IPV6_TUNNEL 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ciconfig IPV6_MULTIPLE_TABLES 2418c2ecf20Sopenharmony_ci bool "IPv6: Multiple Routing Tables" 2428c2ecf20Sopenharmony_ci select FIB_RULES 2438c2ecf20Sopenharmony_ci help 2448c2ecf20Sopenharmony_ci Support multiple routing tables. 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ciconfig IPV6_SUBTREES 2478c2ecf20Sopenharmony_ci bool "IPv6: source address based routing" 2488c2ecf20Sopenharmony_ci depends on IPV6_MULTIPLE_TABLES 2498c2ecf20Sopenharmony_ci help 2508c2ecf20Sopenharmony_ci Enable routing by source address or prefix. 2518c2ecf20Sopenharmony_ci 2528c2ecf20Sopenharmony_ci The destination address is still the primary routing key, so mixing 2538c2ecf20Sopenharmony_ci normal and source prefix specific routes in the same routing table 2548c2ecf20Sopenharmony_ci may sometimes lead to unintended routing behavior. This can be 2558c2ecf20Sopenharmony_ci avoided by defining different routing tables for the normal and 2568c2ecf20Sopenharmony_ci source prefix specific routes. 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_ci If unsure, say N. 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ciconfig IPV6_MROUTE 2618c2ecf20Sopenharmony_ci bool "IPv6: multicast routing" 2628c2ecf20Sopenharmony_ci depends on IPV6 2638c2ecf20Sopenharmony_ci select IP_MROUTE_COMMON 2648c2ecf20Sopenharmony_ci help 2658c2ecf20Sopenharmony_ci Support for IPv6 multicast forwarding. 2668c2ecf20Sopenharmony_ci If unsure, say N. 2678c2ecf20Sopenharmony_ci 2688c2ecf20Sopenharmony_ciconfig IPV6_MROUTE_MULTIPLE_TABLES 2698c2ecf20Sopenharmony_ci bool "IPv6: multicast policy routing" 2708c2ecf20Sopenharmony_ci depends on IPV6_MROUTE 2718c2ecf20Sopenharmony_ci select FIB_RULES 2728c2ecf20Sopenharmony_ci help 2738c2ecf20Sopenharmony_ci Normally, a multicast router runs a userspace daemon and decides 2748c2ecf20Sopenharmony_ci what to do with a multicast packet based on the source and 2758c2ecf20Sopenharmony_ci destination addresses. If you say Y here, the multicast router 2768c2ecf20Sopenharmony_ci will also be able to take interfaces and packet marks into 2778c2ecf20Sopenharmony_ci account and run multiple instances of userspace daemons 2788c2ecf20Sopenharmony_ci simultaneously, each one handling a single table. 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ci If unsure, say N. 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ciconfig IPV6_PIMSM_V2 2838c2ecf20Sopenharmony_ci bool "IPv6: PIM-SM version 2 support" 2848c2ecf20Sopenharmony_ci depends on IPV6_MROUTE 2858c2ecf20Sopenharmony_ci help 2868c2ecf20Sopenharmony_ci Support for IPv6 PIM multicast routing protocol PIM-SMv2. 2878c2ecf20Sopenharmony_ci If unsure, say N. 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ciconfig IPV6_SEG6_LWTUNNEL 2908c2ecf20Sopenharmony_ci bool "IPv6: Segment Routing Header encapsulation support" 2918c2ecf20Sopenharmony_ci depends on IPV6 2928c2ecf20Sopenharmony_ci select LWTUNNEL 2938c2ecf20Sopenharmony_ci select DST_CACHE 2948c2ecf20Sopenharmony_ci select IPV6_MULTIPLE_TABLES 2958c2ecf20Sopenharmony_ci help 2968c2ecf20Sopenharmony_ci Support for encapsulation of packets within an outer IPv6 2978c2ecf20Sopenharmony_ci header and a Segment Routing Header using the lightweight 2988c2ecf20Sopenharmony_ci tunnels mechanism. Also enable support for advanced local 2998c2ecf20Sopenharmony_ci processing of SRv6 packets based on their active segment. 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ci If unsure, say N. 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ciconfig IPV6_SEG6_HMAC 3048c2ecf20Sopenharmony_ci bool "IPv6: Segment Routing HMAC support" 3058c2ecf20Sopenharmony_ci depends on IPV6 3068c2ecf20Sopenharmony_ci select CRYPTO 3078c2ecf20Sopenharmony_ci select CRYPTO_HMAC 3088c2ecf20Sopenharmony_ci select CRYPTO_SHA1 3098c2ecf20Sopenharmony_ci select CRYPTO_SHA256 3108c2ecf20Sopenharmony_ci help 3118c2ecf20Sopenharmony_ci Support for HMAC signature generation and verification 3128c2ecf20Sopenharmony_ci of SR-enabled packets. 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci If unsure, say N. 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ciconfig IPV6_SEG6_BPF 3178c2ecf20Sopenharmony_ci def_bool y 3188c2ecf20Sopenharmony_ci depends on IPV6_SEG6_LWTUNNEL 3198c2ecf20Sopenharmony_ci depends on IPV6 = y 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_ciconfig IPV6_RPL_LWTUNNEL 3228c2ecf20Sopenharmony_ci bool "IPv6: RPL Source Routing Header support" 3238c2ecf20Sopenharmony_ci depends on IPV6 3248c2ecf20Sopenharmony_ci select LWTUNNEL 3258c2ecf20Sopenharmony_ci help 3268c2ecf20Sopenharmony_ci Support for RFC6554 RPL Source Routing Header using the lightweight 3278c2ecf20Sopenharmony_ci tunnels mechanism. 3288c2ecf20Sopenharmony_ci 3298c2ecf20Sopenharmony_ci If unsure, say N. 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_ciendif # IPV6 332