1# IPv6 Options
2
3# Copyright (c) 2016 Intel Corporation.
4# SPDX-License-Identifier: Apache-2.0
5
6menuconfig NET_IPV6
7	bool "IPv6"
8	default y
9	help
10	  Enable IPv6 support. This should be selected by default as there
11	  is limited set of network bearers provided that support IPv4.
12
13if NET_IPV6
14
15config NET_IF_MAX_IPV6_COUNT
16	int "Max number of IPv6 network interfaces in the system"
17	default BT_MAX_CONN if NET_L2_BT
18	default NET_VLAN_COUNT if NET_VLAN
19	default 2 if NET_LOOPBACK
20	default 1
21	help
22	  This tells how many network interfaces there will be in the system
23	  that will have IPv6 enabled.
24
25config NET_IF_UNICAST_IPV6_ADDR_COUNT
26	int "Max number of unicast IPv6 addresses per network interface"
27	default 6 if NET_L2_OPENTHREAD
28	default 3 if NET_LOOPBACK
29	default 2
30
31config NET_IF_MCAST_IPV6_ADDR_COUNT
32	int "Max number of multicast IPv6 addresses per network interface"
33	default 8 if NET_L2_OPENTHREAD
34	default 3
35
36config NET_IF_IPV6_PREFIX_COUNT
37	int "Max number of IPv6 prefixes per network interface"
38	default 2
39
40if NET_NATIVE_IPV6
41
42config NET_INITIAL_HOP_LIMIT
43	int "Initial hop limit for a connection"
44	default 64
45	help
46	  The value should be > 0
47
48config NET_IPV6_MAX_NEIGHBORS
49	int "How many IPv6 neighbors are supported"
50	default 8
51	range 1 254
52	help
53	  The value depends on your network needs.
54
55config NET_IPV6_FRAGMENT
56	bool "Support IPv6 fragmentation"
57	help
58	  IPv6 fragmentation is disabled by default. This saves memory and
59	  should not cause issues normally as we support anyway the minimum
60	  length IPv6 packets (1280 bytes). If you enable fragmentation
61	  support, please increase amount of RX data buffers so that larger
62	  than 1280 byte packets can be received.
63
64config NET_IPV6_FRAGMENT_MAX_COUNT
65	int "How many packets to reassemble at a time"
66	range 1 16
67	default 1
68	depends on NET_IPV6_FRAGMENT
69	help
70	  How many fragmented IPv6 packets can be waiting reassembly
71	  simultaneously. Each fragment count might use up to 1280 bytes
72	  of memory so you need to plan this and increase the network buffer
73	  count.
74
75config NET_IPV6_FRAGMENT_MAX_PKT
76	int "How many fragments can be handled to reassemble a packet"
77	default 2
78	depends on NET_IPV6_FRAGMENT
79	help
80	  Incoming fragments are stored in per-packet queue before being
81	  reassembled. This value defines the number of fragments that
82	  can be handled at the same time to reassemble a single packet.
83
84	  We do not have to accept IPv6 packets larger than 1500 bytes
85	  (RFC 2460 ch 5). This means that we should receive everything
86	  within the first two fragments. The first one being 1280 bytes and
87	  the second one 220 bytes.
88
89	  You can increase this value if you expect packets with more
90	  than two fragments.
91
92config NET_IPV6_FRAGMENT_TIMEOUT
93	int "How long to wait the fragments to receive"
94	range 1 60
95	default 5
96	depends on NET_IPV6_FRAGMENT
97	help
98	  How long to wait for IPv6 fragment to arrive before the reassembly
99	  will timeout. RFC 2460 chapter 4.5 tells to wait for 60 seconds but
100	  this might be too long in memory constrained devices. This value
101	  is in seconds.
102
103config NET_IPV6_MLD
104	bool "Multicast Listener Discovery support"
105	default y
106	help
107	  The value depends on your network needs. MLD should normally
108	  be active. Currently we support only MLDv2. See RFC 3810 for
109	  details.
110
111config NET_IPV6_NBR_CACHE
112	bool "Neighbor cache"
113	default y
114	help
115	  The value depends on your network needs. Neighbor cache should
116	  normally be active.
117
118config NET_IPV6_ND
119	bool "Activate neighbor discovery"
120	depends on NET_IPV6_NBR_CACHE
121	default y
122	help
123	  The value depends on your network needs. ND should normally
124	  be active.
125
126config NET_IPV6_DAD
127	bool "Activate duplicate address detection"
128	depends on NET_IPV6_NBR_CACHE
129	default y
130	help
131	  The value depends on your network needs. DAD should normally
132	  be active.
133
134config NET_IPV6_RA_RDNSS
135	bool "Support RA RDNSS option"
136	depends on NET_IPV6_ND
137	select DNS_RESOLVER
138	default y
139	help
140	  Support Router Advertisement Recursive DNS Server option.
141	  See RFC 6106 for details. The value depends on your network needs.
142
143config NET_6LO
144	bool "6lowpan IPv6 Compression library"
145	default y if NET_L2_IEEE802154
146	help
147	  6lowpan compression and fragmentation. It is enabled by default
148	  if 802.15.4 is present, since using IPv6 on it requires it.
149
150	  You may disable this option if you wish to implement a non-IP
151	  custom protocol on top of the 802.15.4 MAC (L2) layer.
152
153config NET_6LO_CONTEXT
154	bool "6lowpan context based compression"
155	depends on NET_6LO
156	help
157	  Enables 6lowpan context based compression based on information
158	  received in Router Advertisement (RA) message.
159
160config NET_MAX_6LO_CONTEXTS
161	int "Number of supported 6CO (6lowpan contexts options)"
162	depends on NET_6LO_CONTEXT
163	default 1
164	range 1 16
165	help
166	  6lowpan context options table size. The value depends on your
167	  network and memory consumption. More 6CO options uses more memory.
168
169if NET_6LO
170module = NET_6LO
171module-dep = NET_LOG
172module-str = Log level for 6LoWPAN library
173module-help = Enables 6LoWPAN code to output debug messages.
174source "subsys/net/Kconfig.template.log_config.net"
175endif # NET_6LO
176
177module = NET_IPV6
178module-dep = NET_LOG
179module-str = Log level for core IPv6
180module-help = Enables core IPv6 code to output debug messages.
181source "subsys/net/Kconfig.template.log_config.net"
182
183module = NET_ICMPV6
184module-dep = NET_LOG
185module-str = Log level for ICMPv6
186module-help = Enables ICMPv6 code to output debug messages.
187source "subsys/net/Kconfig.template.log_config.net"
188
189module = NET_IPV6_NBR_CACHE
190module-dep = NET_LOG
191module-str = Log level for IPv6 neighbor cache
192module-help = Enables IPv6 Neighbor Cache code to output debug messages.
193source "subsys/net/Kconfig.template.log_config.net"
194
195endif # NET_NATIVE_IPV6
196endif # NET_IPV6
197