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