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