Kconfig 9.7 KB

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