e73e78a550
Add a DHCPv6 client implementation for Zephyr (RFC 8415). The implementation allows to request IPv6 address and/or prefix from the DHCPv6 server, and for now supports only the mandatory set of DHCPv6 options needed to achieve this. Currently the implementation supports the following scenarios: * Requesting new IPv6 address/prefix with Solicit/Request exchange * Refreshing existing leases with Confirm, Renew or Rebind (depending on the context). For now, no Information Request (the case where neither IPv6 address or prefix are requested) is supported. No support for Reconfigure was added either, as this is optional (the client manifests clearly to the server that it does not support Reconfigure). Support for these can be added later if needed. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
211 lines
6 KiB
Plaintext
211 lines
6 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 BT_MAX_CONN if NET_L2_BT
|
|
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_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_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
|
|
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
|
|
select 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_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.
|
|
|
|
config NET_DHCPV6
|
|
bool "DHCPv6 client"
|
|
select NET_MGMT
|
|
select NET_MGMT_EVENT
|
|
depends on NET_UDP
|
|
|
|
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"
|
|
|
|
if NET_DHCPV6
|
|
module = NET_DHCPV6
|
|
module-dep = NET_LOG
|
|
module-str = Log level for DHCPv6 client
|
|
module-help = Enables DHCPv6 client code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
endif # NET_DHCPV6
|
|
|
|
endif # NET_NATIVE_IPV6
|
|
endif # NET_IPV6
|