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 IPv6 hop limit value for unicast packets"
44	default 64
45	range 0 255
46	help
47	  The value should normally be > 0. The device receiving the IPv6
48	  packet will decrement the value and will drop the packet if the hop
49	  limit value is 0. When sending, the packet is dropped before
50	  transmitting to network if hop limit is 0.
51
52config NET_INITIAL_MCAST_HOP_LIMIT
53	int "Initial IPv6 hop limit value for multicast packets"
54	default 1
55	range 0 255
56	help
57	  The value should normally be > 0. The device receiving the IPv6
58	  packet will decrement the value and will drop the packet if the hop
59	  limit value is 0. When sending, the packet is dropped before
60	  transmitting to network if hop limit is 0.
61	  The default is 1 (same as in IPv4) which means that multicast packets
62	  don't leave the local network unless the application explicitly
63	  requests it.
64
65config NET_IPV6_MAX_NEIGHBORS
66	int "How many IPv6 neighbors are supported"
67	default 8
68	range 1 254
69	help
70	  The value depends on your network needs.
71
72config NET_IPV6_FRAGMENT
73	bool "Support IPv6 fragmentation"
74	help
75	  IPv6 fragmentation is disabled by default. This saves memory and
76	  should not cause issues normally as we support anyway the minimum
77	  length IPv6 packets (1280 bytes). If you enable fragmentation
78	  support, please increase amount of RX data buffers so that larger
79	  than 1280 byte packets can be received.
80
81config NET_IPV6_FRAGMENT_MAX_COUNT
82	int "How many packets to reassemble at a time"
83	range 1 16
84	default 1
85	depends on NET_IPV6_FRAGMENT
86	help
87	  How many fragmented IPv6 packets can be waiting reassembly
88	  simultaneously. Each fragment count might use up to 1280 bytes
89	  of memory so you need to plan this and increase the network buffer
90	  count.
91
92config NET_IPV6_FRAGMENT_MAX_PKT
93	int "How many fragments can be handled to reassemble a packet"
94	default 2
95	depends on NET_IPV6_FRAGMENT
96	help
97	  Incoming fragments are stored in per-packet queue before being
98	  reassembled. This value defines the number of fragments that
99	  can be handled at the same time to reassemble a single packet.
100
101	  We do not have to accept IPv6 packets larger than 1500 bytes
102	  (RFC 2460 ch 5). This means that we should receive everything
103	  within the first two fragments. The first one being 1280 bytes and
104	  the second one 220 bytes.
105
106	  You can increase this value if you expect packets with more
107	  than two fragments.
108
109config NET_IPV6_FRAGMENT_TIMEOUT
110	int "How long to wait the fragments to receive"
111	range 1 60
112	default 5
113	depends on NET_IPV6_FRAGMENT
114	help
115	  How long to wait for IPv6 fragment to arrive before the reassembly
116	  will timeout. RFC 2460 chapter 4.5 tells to wait for 60 seconds but
117	  this might be too long in memory constrained devices. This value
118	  is in seconds.
119
120config NET_IPV6_MLD
121	bool "Multicast Listener Discovery support"
122	default y
123	help
124	  The value depends on your network needs. MLD should normally
125	  be active. Currently we support only MLDv2. See RFC 3810 for
126	  details.
127
128config NET_IPV6_NBR_CACHE
129	bool "Neighbor cache"
130	default y
131	help
132	  The value depends on your network needs. Neighbor cache should
133	  normally be active.
134
135config NET_IPV6_ND
136	bool "Activate neighbor discovery"
137	depends on NET_IPV6_NBR_CACHE
138	default y
139	help
140	  The value depends on your network needs. ND should normally
141	  be active.
142
143config NET_IPV6_DAD
144	bool "Activate duplicate address detection"
145	depends on NET_IPV6_NBR_CACHE
146	default y
147	help
148	  The value depends on your network needs. DAD should normally
149	  be active.
150
151config NET_IPV6_RA_RDNSS
152	bool "Support RA RDNSS option"
153	depends on NET_IPV6_ND
154	select DNS_RESOLVER
155	default y
156	help
157	  Support Router Advertisement Recursive DNS Server option.
158	  See RFC 6106 for details. The value depends on your network needs.
159
160config NET_6LO
161	bool "6lowpan IPv6 Compression library"
162	default y if NET_L2_IEEE802154
163	help
164	  6lowpan compression and fragmentation. It is enabled by default
165	  if 802.15.4 is present, since using IPv6 on it requires it.
166
167	  You may disable this option if you wish to implement a non-IP
168	  custom protocol on top of the 802.15.4 MAC (L2) layer.
169
170config NET_6LO_CONTEXT
171	bool "6lowpan context based compression"
172	depends on NET_6LO
173	help
174	  Enables 6lowpan context based compression based on information
175	  received in Router Advertisement (RA) message.
176
177config NET_MAX_6LO_CONTEXTS
178	int "Number of supported 6CO (6lowpan contexts options)"
179	depends on NET_6LO_CONTEXT
180	default 1
181	range 1 16
182	help
183	  6lowpan context options table size. The value depends on your
184	  network and memory consumption. More 6CO options uses more memory.
185
186if NET_6LO
187module = NET_6LO
188module-dep = NET_LOG
189module-str = Log level for 6LoWPAN library
190module-help = Enables 6LoWPAN code to output debug messages.
191source "subsys/net/Kconfig.template.log_config.net"
192endif # NET_6LO
193
194module = NET_IPV6
195module-dep = NET_LOG
196module-str = Log level for core IPv6
197module-help = Enables core IPv6 code to output debug messages.
198source "subsys/net/Kconfig.template.log_config.net"
199
200module = NET_ICMPV6
201module-dep = NET_LOG
202module-str = Log level for ICMPv6
203module-help = Enables ICMPv6 code to output debug messages.
204source "subsys/net/Kconfig.template.log_config.net"
205
206module = NET_IPV6_NBR_CACHE
207module-dep = NET_LOG
208module-str = Log level for IPv6 neighbor cache
209module-help = Enables IPv6 Neighbor Cache code to output debug messages.
210source "subsys/net/Kconfig.template.log_config.net"
211
212endif # NET_NATIVE_IPV6
213endif # NET_IPV6
214