302 lines
9.3 KiB
Plaintext
302 lines
9.3 KiB
Plaintext
# 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
|