0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # IPv6 configuration
0004 #
0005
0006 # IPv6 as module will cause a CRASH if you try to unload it
0007 menuconfig IPV6
0008 tristate "The IPv6 protocol"
0009 default y
0010 select CRYPTO_LIB_SHA1
0011 help
0012 Support for IP version 6 (IPv6).
0013
0014 For general information about IPv6, see
0015 <https://en.wikipedia.org/wiki/IPv6>.
0016 For specific information about IPv6 under Linux, see
0017 Documentation/networking/ipv6.rst and read the HOWTO at
0018 <https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/>
0019
0020 To compile this protocol support as a module, choose M here: the
0021 module will be called ipv6.
0022
0023 if IPV6
0024
0025 config IPV6_ROUTER_PREF
0026 bool "IPv6: Router Preference (RFC 4191) support"
0027 help
0028 Router Preference is an optional extension to the Router
0029 Advertisement message which improves the ability of hosts
0030 to pick an appropriate router, especially when the hosts
0031 are placed in a multi-homed network.
0032
0033 If unsure, say N.
0034
0035 config IPV6_ROUTE_INFO
0036 bool "IPv6: Route Information (RFC 4191) support"
0037 depends on IPV6_ROUTER_PREF
0038 help
0039 Support of Route Information.
0040
0041 If unsure, say N.
0042
0043 config IPV6_OPTIMISTIC_DAD
0044 bool "IPv6: Enable RFC 4429 Optimistic DAD"
0045 help
0046 Support for optimistic Duplicate Address Detection. It allows for
0047 autoconfigured addresses to be used more quickly.
0048
0049 If unsure, say N.
0050
0051 config INET6_AH
0052 tristate "IPv6: AH transformation"
0053 select XFRM_AH
0054 help
0055 Support for IPsec AH (Authentication Header).
0056
0057 AH can be used with various authentication algorithms. Besides
0058 enabling AH support itself, this option enables the generic
0059 implementations of the algorithms that RFC 8221 lists as MUST be
0060 implemented. If you need any other algorithms, you'll need to enable
0061 them in the crypto API. You should also enable accelerated
0062 implementations of any needed algorithms when available.
0063
0064 If unsure, say Y.
0065
0066 config INET6_ESP
0067 tristate "IPv6: ESP transformation"
0068 select XFRM_ESP
0069 help
0070 Support for IPsec ESP (Encapsulating Security Payload).
0071
0072 ESP can be used with various encryption and authentication algorithms.
0073 Besides enabling ESP support itself, this option enables the generic
0074 implementations of the algorithms that RFC 8221 lists as MUST be
0075 implemented. If you need any other algorithms, you'll need to enable
0076 them in the crypto API. You should also enable accelerated
0077 implementations of any needed algorithms when available.
0078
0079 If unsure, say Y.
0080
0081 config INET6_ESP_OFFLOAD
0082 tristate "IPv6: ESP transformation offload"
0083 depends on INET6_ESP
0084 select XFRM_OFFLOAD
0085 default n
0086 help
0087 Support for ESP transformation offload. This makes sense
0088 only if this system really does IPsec and want to do it
0089 with high throughput. A typical desktop system does not
0090 need it, even if it does IPsec.
0091
0092 If unsure, say N.
0093
0094 config INET6_ESPINTCP
0095 bool "IPv6: ESP in TCP encapsulation (RFC 8229)"
0096 depends on XFRM && INET6_ESP
0097 select STREAM_PARSER
0098 select NET_SOCK_MSG
0099 select XFRM_ESPINTCP
0100 help
0101 Support for RFC 8229 encapsulation of ESP and IKE over
0102 TCP/IPv6 sockets.
0103
0104 If unsure, say N.
0105
0106 config INET6_IPCOMP
0107 tristate "IPv6: IPComp transformation"
0108 select INET6_XFRM_TUNNEL
0109 select XFRM_IPCOMP
0110 help
0111 Support for IP Payload Compression Protocol (IPComp) (RFC3173),
0112 typically needed for IPsec.
0113
0114 If unsure, say Y.
0115
0116 config IPV6_MIP6
0117 tristate "IPv6: Mobility"
0118 select XFRM
0119 help
0120 Support for IPv6 Mobility described in RFC 3775.
0121
0122 If unsure, say N.
0123
0124 config IPV6_ILA
0125 tristate "IPv6: Identifier Locator Addressing (ILA)"
0126 depends on NETFILTER
0127 select DST_CACHE
0128 select LWTUNNEL
0129 help
0130 Support for IPv6 Identifier Locator Addressing (ILA).
0131
0132 ILA is a mechanism to do network virtualization without
0133 encapsulation. The basic concept of ILA is that we split an
0134 IPv6 address into a 64 bit locator and 64 bit identifier. The
0135 identifier is the identity of an entity in communication
0136 ("who") and the locator expresses the location of the
0137 entity ("where").
0138
0139 ILA can be configured using the "encap ila" option with
0140 "ip -6 route" command. ILA is described in
0141 https://tools.ietf.org/html/draft-herbert-nvo3-ila-00.
0142
0143 If unsure, say N.
0144
0145 config INET6_XFRM_TUNNEL
0146 tristate
0147 select INET6_TUNNEL
0148 default n
0149
0150 config INET6_TUNNEL
0151 tristate
0152 default n
0153
0154 config IPV6_VTI
0155 tristate "Virtual (secure) IPv6: tunneling"
0156 select IPV6_TUNNEL
0157 select NET_IP_TUNNEL
0158 select XFRM
0159 help
0160 Tunneling means encapsulating data of one protocol type within
0161 another protocol and sending it over a channel that understands the
0162 encapsulating protocol. This can be used with xfrm mode tunnel to give
0163 the notion of a secure tunnel for IPSEC and then use routing protocol
0164 on top.
0165
0166 config IPV6_SIT
0167 tristate "IPv6: IPv6-in-IPv4 tunnel (SIT driver)"
0168 select INET_TUNNEL
0169 select NET_IP_TUNNEL
0170 select IPV6_NDISC_NODETYPE
0171 default y
0172 help
0173 Tunneling means encapsulating data of one protocol type within
0174 another protocol and sending it over a channel that understands the
0175 encapsulating protocol. This driver implements encapsulation of IPv6
0176 into IPv4 packets. This is useful if you want to connect two IPv6
0177 networks over an IPv4-only path.
0178
0179 Saying M here will produce a module called sit. If unsure, say Y.
0180
0181 config IPV6_SIT_6RD
0182 bool "IPv6: IPv6 Rapid Deployment (6RD)"
0183 depends on IPV6_SIT
0184 default n
0185 help
0186 IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon
0187 mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly
0188 deploy IPv6 unicast service to IPv4 sites to which it provides
0189 customer premise equipment. Like 6to4, it utilizes stateless IPv6 in
0190 IPv4 encapsulation in order to transit IPv4-only network
0191 infrastructure. Unlike 6to4, a 6rd service provider uses an IPv6
0192 prefix of its own in place of the fixed 6to4 prefix.
0193
0194 With this option enabled, the SIT driver offers 6rd functionality by
0195 providing additional ioctl API to configure the IPv6 Prefix for in
0196 stead of static 2002::/16 for 6to4.
0197
0198 If unsure, say N.
0199
0200 config IPV6_NDISC_NODETYPE
0201 bool
0202
0203 config IPV6_TUNNEL
0204 tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)"
0205 select INET6_TUNNEL
0206 select DST_CACHE
0207 select GRO_CELLS
0208 help
0209 Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in
0210 RFC 2473.
0211
0212 If unsure, say N.
0213
0214 config IPV6_GRE
0215 tristate "IPv6: GRE tunnel"
0216 select IPV6_TUNNEL
0217 select NET_IP_TUNNEL
0218 depends on NET_IPGRE_DEMUX
0219 help
0220 Tunneling means encapsulating data of one protocol type within
0221 another protocol and sending it over a channel that understands the
0222 encapsulating protocol. This particular tunneling driver implements
0223 GRE (Generic Routing Encapsulation) and at this time allows
0224 encapsulating of IPv4 or IPv6 over existing IPv6 infrastructure.
0225 This driver is useful if the other endpoint is a Cisco router: Cisco
0226 likes GRE much better than the other Linux tunneling driver ("IP
0227 tunneling" above). In addition, GRE allows multicast redistribution
0228 through the tunnel.
0229
0230 Saying M here will produce a module called ip6_gre. If unsure, say N.
0231
0232 config IPV6_FOU
0233 tristate
0234 default NET_FOU && IPV6
0235
0236 config IPV6_FOU_TUNNEL
0237 tristate
0238 default NET_FOU_IP_TUNNELS && IPV6_FOU
0239 select IPV6_TUNNEL
0240
0241 config IPV6_MULTIPLE_TABLES
0242 bool "IPv6: Multiple Routing Tables"
0243 select FIB_RULES
0244 help
0245 Support multiple routing tables.
0246
0247 config IPV6_SUBTREES
0248 bool "IPv6: source address based routing"
0249 depends on IPV6_MULTIPLE_TABLES
0250 help
0251 Enable routing by source address or prefix.
0252
0253 The destination address is still the primary routing key, so mixing
0254 normal and source prefix specific routes in the same routing table
0255 may sometimes lead to unintended routing behavior. This can be
0256 avoided by defining different routing tables for the normal and
0257 source prefix specific routes.
0258
0259 If unsure, say N.
0260
0261 config IPV6_MROUTE
0262 bool "IPv6: multicast routing"
0263 depends on IPV6
0264 select IP_MROUTE_COMMON
0265 help
0266 Support for IPv6 multicast forwarding.
0267 If unsure, say N.
0268
0269 config IPV6_MROUTE_MULTIPLE_TABLES
0270 bool "IPv6: multicast policy routing"
0271 depends on IPV6_MROUTE
0272 select FIB_RULES
0273 help
0274 Normally, a multicast router runs a userspace daemon and decides
0275 what to do with a multicast packet based on the source and
0276 destination addresses. If you say Y here, the multicast router
0277 will also be able to take interfaces and packet marks into
0278 account and run multiple instances of userspace daemons
0279 simultaneously, each one handling a single table.
0280
0281 If unsure, say N.
0282
0283 config IPV6_PIMSM_V2
0284 bool "IPv6: PIM-SM version 2 support"
0285 depends on IPV6_MROUTE
0286 help
0287 Support for IPv6 PIM multicast routing protocol PIM-SMv2.
0288 If unsure, say N.
0289
0290 config IPV6_SEG6_LWTUNNEL
0291 bool "IPv6: Segment Routing Header encapsulation support"
0292 depends on IPV6
0293 select LWTUNNEL
0294 select DST_CACHE
0295 select IPV6_MULTIPLE_TABLES
0296 help
0297 Support for encapsulation of packets within an outer IPv6
0298 header and a Segment Routing Header using the lightweight
0299 tunnels mechanism. Also enable support for advanced local
0300 processing of SRv6 packets based on their active segment.
0301
0302 If unsure, say N.
0303
0304 config IPV6_SEG6_HMAC
0305 bool "IPv6: Segment Routing HMAC support"
0306 depends on IPV6
0307 select CRYPTO
0308 select CRYPTO_HMAC
0309 select CRYPTO_SHA1
0310 select CRYPTO_SHA256
0311 help
0312 Support for HMAC signature generation and verification
0313 of SR-enabled packets.
0314
0315 If unsure, say N.
0316
0317 config IPV6_SEG6_BPF
0318 def_bool y
0319 depends on IPV6_SEG6_LWTUNNEL
0320 depends on IPV6 = y
0321
0322 config IPV6_RPL_LWTUNNEL
0323 bool "IPv6: RPL Source Routing Header support"
0324 depends on IPV6
0325 select LWTUNNEL
0326 help
0327 Support for RFC6554 RPL Source Routing Header using the lightweight
0328 tunnels mechanism.
0329
0330 If unsure, say N.
0331
0332 config IPV6_IOAM6_LWTUNNEL
0333 bool "IPv6: IOAM Pre-allocated Trace insertion support"
0334 depends on IPV6
0335 select LWTUNNEL
0336 select DST_CACHE
0337 help
0338 Support for the insertion of IOAM Pre-allocated Trace
0339 Header using the lightweight tunnels mechanism.
0340
0341 If unsure, say N.
0342
0343 endif # IPV6