# Kconfig.ipv6 - 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_UNICAST_IPV6_ADDR_COUNT
	int "Max number of unicast IPv6 addresses per network interface"
	default 2

config NET_IF_MCAST_IPV6_ADDR_COUNT
	int "Max number of multicast IPv6 addresses per network interface"
	default 1

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_ND
	bool "Activate neighbor discovery"
	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_ND
	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"
	help
	6lowpan compression and fragmentation.

config NET_6LO_CONTEXT
	bool "Enable 6lowpan context based compression"
	default n
	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 connsuption. More size occupies more memory.

config NET_DEBUG_6LO
	bool "Enable 6lowpan debug"
	depends on NET_6LO && NET_LOG

if NET_LOG

config NET_DEBUG_IPV6
	bool "Debug core IPv6"
	default n
	help
	Enables core IPv6 code part to output debug messages

config NET_DEBUG_ICMPV6
	bool "Debug ICMPv6"
	default n
	help
	Enables ICMPv6 code part to output debug messages

config NET_DEBUG_IPV6_NBR_CACHE
	bool "Debug IPv6 neighbour cache"
	default n
	help
	Enables Neighbour Cache code part to output debug messages

endif # NET_LOG

endif # NET_IPV6
