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 NET_VLAN_COUNT if NET_VLAN 18 default 2 if NET_LOOPBACK 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 3 if NET_LOOPBACK 28 default 2 29 30config NET_IF_MCAST_IPV6_ADDR_COUNT 31 int "Max number of multicast IPv6 addresses per network interface" 32 default 8 if NET_L2_OPENTHREAD 33 default 3 34 35config NET_IF_IPV6_PREFIX_COUNT 36 int "Max number of IPv6 prefixes per network interface" 37 default 2 38 39if NET_NATIVE_IPV6 40 41config NET_IPV6_MTU 42 int "Initial IPv6 MTU value" 43 default 1280 44 range 1280 1500 45 help 46 The value should normally be 1280 which is the minimum IPv6 packet 47 size that implementations need to support without fragmentation. 48 49config NET_INITIAL_HOP_LIMIT 50 int "Initial IPv6 hop limit value for unicast packets" 51 default 64 52 range 0 $(UINT8_MAX) 53 help 54 The value should normally be > 0. The device receiving the IPv6 55 packet will decrement the value and will drop the packet if the hop 56 limit value is 0. When sending, the packet is dropped before 57 transmitting to network if hop limit is 0. 58 59config NET_INITIAL_MCAST_HOP_LIMIT 60 int "Initial IPv6 hop limit value for multicast packets" 61 default 1 62 range 0 $(UINT8_MAX) 63 help 64 The value should normally be > 0. The device receiving the IPv6 65 packet will decrement the value and will drop the packet if the hop 66 limit value is 0. When sending, the packet is dropped before 67 transmitting to network if hop limit is 0. 68 The default is 1 (same as in IPv4) which means that multicast packets 69 don't leave the local network unless the application explicitly 70 requests it. 71 72config NET_IPV6_MAX_NEIGHBORS 73 int "How many IPv6 neighbors are supported" 74 default 8 75 range 1 254 76 help 77 The value depends on your network needs. 78 79config NET_IPV6_FRAGMENT 80 bool "Support IPv6 fragmentation" 81 help 82 IPv6 fragmentation is disabled by default. This saves memory and 83 should not cause issues normally as we support anyway the minimum 84 length IPv6 packets (1280 bytes). If you enable fragmentation 85 support, please increase amount of RX data buffers so that larger 86 than 1280 byte packets can be received. 87 88config NET_IPV6_FRAGMENT_MAX_COUNT 89 int "How many packets to reassemble at a time" 90 range 1 16 91 default 1 92 depends on NET_IPV6_FRAGMENT 93 help 94 How many fragmented IPv6 packets can be waiting reassembly 95 simultaneously. Each fragment count might use up to 1280 bytes 96 of memory so you need to plan this and increase the network buffer 97 count. 98 99config NET_IPV6_FRAGMENT_MAX_PKT 100 int "How many fragments can be handled to reassemble a packet" 101 default 2 102 depends on NET_IPV6_FRAGMENT 103 help 104 Incoming fragments are stored in per-packet queue before being 105 reassembled. This value defines the number of fragments that 106 can be handled at the same time to reassemble a single packet. 107 108 We do not have to accept IPv6 packets larger than 1500 bytes 109 (RFC 2460 ch 5). This means that we should receive everything 110 within the first two fragments. The first one being 1280 bytes and 111 the second one 220 bytes. 112 113 You can increase this value if you expect packets with more 114 than two fragments. 115 116config NET_IPV6_FRAGMENT_TIMEOUT 117 int "How long to wait the fragments to receive" 118 range 1 60 119 default 5 120 depends on NET_IPV6_FRAGMENT 121 help 122 How long to wait for IPv6 fragment to arrive before the reassembly 123 will timeout. RFC 2460 chapter 4.5 tells to wait for 60 seconds but 124 this might be too long in memory constrained devices. This value 125 is in seconds. 126 127config NET_IPV6_MLD 128 bool "Multicast Listener Discovery support" 129 default y 130 help 131 The value depends on your network needs. MLD should normally 132 be active. Currently we support only MLDv2. See RFC 3810 for 133 details. 134 135config NET_IPV6_NBR_CACHE 136 bool "Neighbor cache" 137 default y 138 help 139 The value depends on your network needs. Neighbor cache should 140 normally be active. 141 142config NET_IPV6_ND 143 bool "Activate neighbor discovery" 144 depends on NET_IPV6_NBR_CACHE 145 select NET_IPV6_MLD if !NET_TEST 146 default y 147 help 148 The value depends on your network needs. ND should normally 149 be active. 150 151config NET_IPV6_DAD 152 bool "Activate duplicate address detection" 153 depends on NET_IPV6_NBR_CACHE 154 default y 155 help 156 The value depends on your network needs. DAD should normally 157 be active. 158 159config NET_IPV6_RA_RDNSS 160 bool "Support RA RDNSS option" 161 depends on NET_IPV6_ND 162 depends on DNS_RESOLVER 163 default y 164 help 165 Support Router Advertisement Recursive DNS Server option. 166 See RFC 6106 for details. The value depends on your network needs. 167 168config NET_IPV6_PE 169 bool "Privacy extension (RFC 8981) support [EXPERIMENTAL]" 170 select MBEDTLS 171 select MBEDTLS_MD 172 select EXPERIMENTAL 173 select NET_MGMT 174 select NET_MGMT_EVENT 175 select NET_MGMT_EVENT_INFO 176 help 177 This enables IPv6 privacy extension (RFC 8981) support. 178 The interface identifier is randomized and SLAAC addresses 179 generated from it will expire. This requires that applications are 180 prepared to use new IPv6 addresses when old ones will expire. 181 Note that you should make sure that the value of config option 182 CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT should be large enough so that 183 two PE generated IPv6 addresses can be added to the network interface 184 at the same time. 185 186if NET_IPV6_PE 187 188config NET_IPV6_PE_FILTER_PREFIX_COUNT 189 int "Size of the IPv6 prefix filter list" 190 default 0 191 help 192 Size of the allow/deny filter list of IPv6 prefixes. User can 193 set filters at runtime and it is possible to enable or disable 194 privacy extension support according to this filter list. 195 By default no filters are enabled. 196 197config NET_IPV6_PE_PREFER_PUBLIC_ADDRESSES 198 bool "Prefer public preferred address over temporary one" 199 help 200 Prefer public addresses over temporary addresses. 201 202config NET_IPV6_PE_TEMP_VALID_LIFETIME 203 int "Max lifetime for temporary address (in minutes)" 204 default 1440 205 help 206 No temporary address should ever remain valid for longer than this 207 value. The value is in minutes. Default value is 1 day (24*60). 208 209config NET_IPV6_PE_TEMP_PREFERRED_LIFETIME 210 int "Max preferred lifetime for temporary address (in minutes)" 211 default 1380 212 help 213 No temporary address should ever remain preferred for longer than this 214 value. The value is in minutes. Default value is 23 hours (23*60). 215 216config NET_IPV6_PE_TEMP_IDGEN_RETRIES 217 int "Max amount of failed DAD attempts" 218 default 3 219 help 220 The node MUST perform duplicate address detection (DAD) on the 221 generated temporary address. If after TEMP_IDGEN_RETRIES consecutive 222 attempts no non-unique address was generated then there will be no 223 attempt to generate temporary addresses for that interface. 224 225endif 226 227config NET_6LO 228 bool "6lowpan IPv6 Compression library" 229 default y if NET_L2_IEEE802154 230 help 231 6lowpan compression and fragmentation. It is enabled by default 232 if 802.15.4 is present, since using IPv6 on it requires it. 233 234 You may disable this option if you wish to implement a non-IP 235 custom protocol on top of the 802.15.4 MAC (L2) layer. 236 237config NET_6LO_CONTEXT 238 bool "6lowpan context based compression" 239 depends on NET_6LO 240 help 241 Enables 6lowpan context based compression based on information 242 received in Router Advertisement (RA) message. 243 244config NET_MAX_6LO_CONTEXTS 245 int "Number of supported 6CO (6lowpan contexts options)" 246 depends on NET_6LO_CONTEXT 247 default 1 248 range 1 16 249 help 250 6lowpan context options table size. The value depends on your 251 network and memory consumption. More 6CO options uses more memory. 252 253if NET_6LO 254module = NET_6LO 255module-dep = NET_LOG 256module-str = Log level for 6LoWPAN library 257module-help = Enables 6LoWPAN code to output debug messages. 258source "subsys/net/Kconfig.template.log_config.net" 259endif # NET_6LO 260 261module = NET_IPV6 262module-dep = NET_LOG 263module-str = Log level for core IPv6 264module-help = Enables core IPv6 code to output debug messages. 265source "subsys/net/Kconfig.template.log_config.net" 266 267module = NET_IPV6_ND 268module-dep = NET_LOG 269module-str = Log level for IPv6 Neighbor Discovery 270module-help = Enables IPv6 Neighbor Discovery code to output debug messages. 271source "subsys/net/Kconfig.template.log_config.net" 272 273module = NET_IPV6_PE 274module-dep = NET_LOG 275module-str = Log level for IPv6 Privacy Extension 276module-help = Enables IPv6 Privacy Extension code to output debug messages. 277source "subsys/net/Kconfig.template.log_config.net" 278 279module = NET_ICMPV6 280module-dep = NET_LOG 281module-str = Log level for ICMPv6 282module-help = Enables ICMPv6 code to output debug messages. 283source "subsys/net/Kconfig.template.log_config.net" 284 285module = NET_IPV6_NBR_CACHE 286module-dep = NET_LOG 287module-str = Log level for IPv6 neighbor cache 288module-help = Enables IPv6 Neighbor Cache code to output debug messages. 289source "subsys/net/Kconfig.template.log_config.net" 290 291endif # NET_NATIVE_IPV6 292endif # NET_IPV6 293