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