zephyr/subsys/net/ip/Kconfig.ipv6

171 lines
4.8 KiB
Plaintext
Raw Permalink Normal View History

# 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 BT_MAX_CONN if NET_L2_BT
default NET_VLAN_COUNT if NET_VLAN
Kconfig: Use the first default with a satisfied condition Up until now, Zephyr has patched Kconfig to use the last 'default' with a satisfied condition, instead of the first one. I'm not sure why the patch was added (it predates Kconfiglib), but I suspect it's related to Kconfig.defconfig files. There are at least three problems with the patch: 1. It's inconsistent with how Kconfig works in other projects, which might confuse newcomers. 2. Due to oversights, earlier 'range' properties are still preferred, as well as earlier 'default' properties on choices. In addition to being inconsistent, this makes it impossible to override 'range' properties and choice 'default' properties if the base definition of the symbol/choice already has 'range'/'default' properties. I've seen errors caused by the inconsistency, and I suspect there are more. 3. A fork of Kconfiglib that adds the patch needs to be maintained. Get rid of the patch and go back to standard Kconfig behavior, as follows: 1. Include the Kconfig.defconfig files first instead of last in Kconfig.zephyr. 2. Include boards/Kconfig and arch/<arch>/Kconfig first instead of last in arch/Kconfig. 3. Include arch/<arch>/soc/*/Kconfig first instead of last in arch/<arch>/Kconfig. 4. Swap a few other 'source's to preserve behavior for some scattered symbols with multiple definitions. Swap 'source's in some no-op cases too, where it might match the intent. 5. Reverse the defaults on symbol definitions that have more than one default. Skip defaults that are mutually exclusive, e.g. where each default has an 'if <some board>' condition. They are already safe. 6. Remove the prefer-later-defaults patch from Kconfiglib. Testing was done with a Python script that lists all Kconfig symbols/choices with multiple defaults, along with a whitelist of fixed symbols. The script also verifies that there are no "unreachable" defaults hidden by defaults without conditions As an additional test, zephyr/.config was generated before and after the change for several samples and checked to be identical (after sorting). This commit includes some default-related cleanups as well: - Simplify some symbol definitions, e.g. where a default has 'if FOO' when the symbol already has 'depends on FOO'. - Remove some redundant 'default ""' for string symbols. This is the implicit default. Piggyback fixes for swapped ranges on BT_L2CAP_RX_MTU and BT_L2CAP_TX_MTU (caused by confusing inconsistency). Piggyback some fixes for style nits too, e.g. unindented help texts. Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2018-07-30 10:57:47 +02:00
default 1
help
Kconfig: Use the first default with a satisfied condition Up until now, Zephyr has patched Kconfig to use the last 'default' with a satisfied condition, instead of the first one. I'm not sure why the patch was added (it predates Kconfiglib), but I suspect it's related to Kconfig.defconfig files. There are at least three problems with the patch: 1. It's inconsistent with how Kconfig works in other projects, which might confuse newcomers. 2. Due to oversights, earlier 'range' properties are still preferred, as well as earlier 'default' properties on choices. In addition to being inconsistent, this makes it impossible to override 'range' properties and choice 'default' properties if the base definition of the symbol/choice already has 'range'/'default' properties. I've seen errors caused by the inconsistency, and I suspect there are more. 3. A fork of Kconfiglib that adds the patch needs to be maintained. Get rid of the patch and go back to standard Kconfig behavior, as follows: 1. Include the Kconfig.defconfig files first instead of last in Kconfig.zephyr. 2. Include boards/Kconfig and arch/<arch>/Kconfig first instead of last in arch/Kconfig. 3. Include arch/<arch>/soc/*/Kconfig first instead of last in arch/<arch>/Kconfig. 4. Swap a few other 'source's to preserve behavior for some scattered symbols with multiple definitions. Swap 'source's in some no-op cases too, where it might match the intent. 5. Reverse the defaults on symbol definitions that have more than one default. Skip defaults that are mutually exclusive, e.g. where each default has an 'if <some board>' condition. They are already safe. 6. Remove the prefer-later-defaults patch from Kconfiglib. Testing was done with a Python script that lists all Kconfig symbols/choices with multiple defaults, along with a whitelist of fixed symbols. The script also verifies that there are no "unreachable" defaults hidden by defaults without conditions As an additional test, zephyr/.config was generated before and after the change for several samples and checked to be identical (after sorting). This commit includes some default-related cleanups as well: - Simplify some symbol definitions, e.g. where a default has 'if FOO' when the symbol already has 'depends on FOO'. - Remove some redundant 'default ""' for string symbols. This is the implicit default. Piggyback fixes for swapped ranges on BT_L2CAP_RX_MTU and BT_L2CAP_TX_MTU (caused by confusing inconsistency). Piggyback some fixes for style nits too, e.g. unindented help texts. Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2018-07-30 10:57:47 +02:00
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 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
config NET_INITIAL_HOP_LIMIT
int "Initial hop limit for a connection"
default 64
help
The value should be > 0
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_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
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
default y
help
Support Router Advertisement Recursive DNS Server option.
See RFC 6106 for details. The value depends on your network needs.
config NET_6LO
bool "Enable 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.
config NET_6LO_CONTEXT
bool "Enable 6lowpan context based compression"
depends on NET_6LO
help
Enables 6lowpan context based compression based on information
received in RA(Router Advertisement) 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_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_IPV6