# 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
	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_IPV6_PE
	bool "Privacy extension (RFC 8981) support [EXPERIMENTAL]"
	select MBEDTLS
	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
