# IPv6 Options # Copyright (c) 2016 Intel Corporation. # SPDX-License-Identifier: Apache-2.0 menuconfig NET_IPV6 bool "IPv6" default y help Enable IPv6 support. This should be selected by default as there is limited set of network bearers provided that support IPv4. if NET_IPV6 config NET_IF_MAX_IPV6_COUNT int "Max number of IPv6 network interfaces in the system" default NET_VLAN_COUNT if NET_VLAN default 2 if NET_LOOPBACK default 1 help This tells how many network interfaces there will be in the system that will have IPv6 enabled. config NET_IF_UNICAST_IPV6_ADDR_COUNT int "Max number of unicast IPv6 addresses per network interface" default 6 if NET_L2_OPENTHREAD default 3 if NET_LOOPBACK default 2 config NET_IF_MCAST_IPV6_ADDR_COUNT int "Max number of multicast IPv6 addresses per network interface" default 8 if NET_L2_OPENTHREAD default 3 config NET_IF_IPV6_PREFIX_COUNT int "Max number of IPv6 prefixes per network interface" default 2 if NET_NATIVE_IPV6 config NET_IPV6_MTU int "Initial IPv6 MTU value" default 1280 range 1280 1500 help The value should normally be 1280 which is the minimum IPv6 packet size that implementations need to support without fragmentation. config NET_INITIAL_HOP_LIMIT int "Initial IPv6 hop limit value for unicast packets" default 64 range 0 $(UINT8_MAX) help The value should normally be > 0. The device receiving the IPv6 packet will decrement the value and will drop the packet if the hop limit value is 0. When sending, the packet is dropped before transmitting to network if hop limit is 0. config NET_INITIAL_MCAST_HOP_LIMIT int "Initial IPv6 hop limit value for multicast packets" default 1 range 0 $(UINT8_MAX) help The value should normally be > 0. The device receiving the IPv6 packet will decrement the value and will drop the packet if the hop limit value is 0. When sending, the packet is dropped before transmitting to network if hop limit is 0. The default is 1 (same as in IPv4) which means that multicast packets don't leave the local network unless the application explicitly requests it. config NET_IPV6_MAX_NEIGHBORS int "How many IPv6 neighbors are supported" default 8 range 1 254 help The value depends on your network needs. config NET_IPV6_FRAGMENT bool "Support IPv6 fragmentation" help IPv6 fragmentation is disabled by default. This saves memory and should not cause issues normally as we support anyway the minimum length IPv6 packets (1280 bytes). If you enable fragmentation support, please increase amount of RX data buffers so that larger than 1280 byte packets can be received. config NET_IPV6_FRAGMENT_MAX_COUNT int "How many packets to reassemble at a time" range 1 16 default 1 depends on NET_IPV6_FRAGMENT help How many fragmented IPv6 packets can be waiting reassembly simultaneously. Each fragment count might use up to 1280 bytes of memory so you need to plan this and increase the network buffer count. config NET_IPV6_FRAGMENT_MAX_PKT int "How many fragments can be handled to reassemble a packet" default 2 depends on NET_IPV6_FRAGMENT help Incoming fragments are stored in per-packet queue before being reassembled. This value defines the number of fragments that can be handled at the same time to reassemble a single packet. We do not have to accept IPv6 packets larger than 1500 bytes (RFC 2460 ch 5). This means that we should receive everything within the first two fragments. The first one being 1280 bytes and the second one 220 bytes. You can increase this value if you expect packets with more than two fragments. config NET_IPV6_FRAGMENT_TIMEOUT int "How long to wait the fragments to receive" range 1 60 default 5 depends on NET_IPV6_FRAGMENT help How long to wait for IPv6 fragment to arrive before the reassembly will timeout. RFC 2460 chapter 4.5 tells to wait for 60 seconds but this might be too long in memory constrained devices. This value is in seconds. config NET_IPV6_MLD bool "Multicast Listener Discovery support" default y help The value depends on your network needs. MLD should normally be active. Currently we support only MLDv2. See RFC 3810 for details. config NET_IPV6_NBR_CACHE bool "Neighbor cache" default y help The value depends on your network needs. Neighbor cache should normally be active. config NET_IPV6_ND bool "Activate neighbor discovery" depends on NET_IPV6_NBR_CACHE select NET_IPV6_MLD if !NET_TEST default y help The value depends on your network needs. ND should normally be active. config NET_IPV6_DAD bool "Activate duplicate address detection" depends on NET_IPV6_NBR_CACHE default y help The value depends on your network needs. DAD should normally be active. config NET_IPV6_RS_TIMEOUT int "Timeout of Router Solicitation messaging" depends on NET_IPV6_ND range 1 30 default 1 help The timeout in seconds between attempts to send a Router Solicitation message at startup. config NET_IPV6_RA_RDNSS bool "Support RA RDNSS option" depends on NET_IPV6_ND depends on DNS_RESOLVER default y help Support Router Advertisement Recursive DNS Server option. See RFC 6106 for details. The value depends on your network needs. config NET_IPV6_PE bool "Privacy extension (RFC 8981) support [EXPERIMENTAL]" select MBEDTLS select MBEDTLS_MD select EXPERIMENTAL select NET_MGMT select NET_MGMT_EVENT select NET_MGMT_EVENT_INFO help This enables IPv6 privacy extension (RFC 8981) support. The interface identifier is randomized and SLAAC addresses generated from it will expire. This requires that applications are prepared to use new IPv6 addresses when old ones will expire. Note that you should make sure that the value of config option CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT should be large enough so that two PE generated IPv6 addresses can be added to the network interface at the same time. if NET_IPV6_PE config NET_IPV6_PE_FILTER_PREFIX_COUNT int "Size of the IPv6 prefix filter list" default 0 help Size of the allow/deny filter list of IPv6 prefixes. User can set filters at runtime and it is possible to enable or disable privacy extension support according to this filter list. By default no filters are enabled. config NET_IPV6_PE_PREFER_PUBLIC_ADDRESSES bool "Prefer public preferred address over temporary one" help Prefer public addresses over temporary addresses. config NET_IPV6_PE_TEMP_VALID_LIFETIME int "Max lifetime for temporary address (in minutes)" default 1440 help No temporary address should ever remain valid for longer than this value. The value is in minutes. Default value is 1 day (24*60). config NET_IPV6_PE_TEMP_PREFERRED_LIFETIME int "Max preferred lifetime for temporary address (in minutes)" default 1380 help No temporary address should ever remain preferred for longer than this value. The value is in minutes. Default value is 23 hours (23*60). config NET_IPV6_PE_TEMP_IDGEN_RETRIES int "Max amount of failed DAD attempts" default 3 help The node MUST perform duplicate address detection (DAD) on the generated temporary address. If after TEMP_IDGEN_RETRIES consecutive attempts no non-unique address was generated then there will be no attempt to generate temporary addresses for that interface. endif config NET_6LO bool "6lowpan IPv6 Compression library" default y if NET_L2_IEEE802154 help 6lowpan compression and fragmentation. It is enabled by default if 802.15.4 is present, since using IPv6 on it requires it. You may disable this option if you wish to implement a non-IP custom protocol on top of the 802.15.4 MAC (L2) layer. config NET_6LO_CONTEXT bool "6lowpan context based compression" depends on NET_6LO help Enables 6lowpan context based compression based on information received in Router Advertisement (RA) message. config NET_MAX_6LO_CONTEXTS int "Number of supported 6CO (6lowpan contexts options)" depends on NET_6LO_CONTEXT default 1 range 1 16 help 6lowpan context options table size. The value depends on your network and memory consumption. More 6CO options uses more memory. if NET_6LO module = NET_6LO module-dep = NET_LOG module-str = Log level for 6LoWPAN library module-help = Enables 6LoWPAN code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" endif # NET_6LO module = NET_IPV6 module-dep = NET_LOG module-str = Log level for core IPv6 module-help = Enables core IPv6 code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" module = NET_IPV6_ND module-dep = NET_LOG module-str = Log level for IPv6 Neighbor Discovery module-help = Enables IPv6 Neighbor Discovery code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" module = NET_IPV6_PE module-dep = NET_LOG module-str = Log level for IPv6 Privacy Extension module-help = Enables IPv6 Privacy Extension code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" module = NET_ICMPV6 module-dep = NET_LOG module-str = Log level for ICMPv6 module-help = Enables ICMPv6 code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" module = NET_IPV6_NBR_CACHE module-dep = NET_LOG module-str = Log level for IPv6 neighbor cache module-help = Enables IPv6 Neighbor Cache code to output debug messages. source "subsys/net/Kconfig.template.log_config.net" endif # NET_NATIVE_IPV6 endif # NET_IPV6