blob: b17071b01146aa097fc87c2c835dc4831570c4fd [file] [log] [blame]
# 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 255
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 255
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_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