#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

if NET_IPv6
menu "ICMPv6 Networking Support"

config NET_ICMPv6
	bool "Enable ICMPv6 networking"
	default n
	depends on NET
	---help---
		Enable minimal ICMPv6 support. Includes built-in support
		for sending replies to received ECHO (ping) requests.

if NET_ICMPv6

config NET_ICMPv6_PING
	bool "ICMPv6 ping interfaces"
	default n
	depends on BUILD_FLAT
	---help---
		Provide interfaces to support application level support for
		for sending ECHO (ping) requests and associating ECHO replies.

		NOTE: Calling these interfaces from application space is a
		violation of the OS/application interface but for historical
		reasons, is permitted in the flat build.

config NET_ICMPv6_NEIGHBOR
	bool "Solicit destination addresses"
	default n
	---help---
		Enable logic to send ICMPv6 neighbor solicitation requests if
		the target IPv6 address mapping does not appear in the Neighbor
		table.

if NET_ICMPv6_NEIGHBOR

config ICMPv6_NEIGHBOR_MAXTRIES
	int "ICMPv6 neighbor solicitation retries"
	default 5
	---help---
		Send the Neighbor solicitation this number of times before giving
		up and deciding that the target IP6 address is non reachable.

config ICMPv6_NEIGHBOR_DELAYMSEC
	int "ICMPv6 neighbor re-solicit delay"
	default 20
	---help---
		Wait this number of milliseconds after sending the Neighbor
		Solicitation before checking if the IPv6 address mapping is present
		in the Neighbor Table.  This time should be related to the maximum
		round trip time on the network since it is basically the time from
		when an Neighbor Solicitation is sent until the Neighbor
		Advertisement is received.

endif # NET_ICMPv6_NEIGHBOR

config NET_ICMPv6_AUTOCONF
	bool "ICMPv6 auto-configuration"
	default n
	---help---
		Enable ioctl() logic that implements ICMPv6 auto configuration.
		ICMPv6 auto configuration is an alternative to DHCPv6 for obtaining
		an IPv6 address from a router.

if NET_ICMPv6_AUTOCONF

config ICMPv6_AUTOCONF_MAXTRIES
	int "ICMPv6 router solicitation retries"
	default 5
	---help---
		Send the Router solicitation this number of times before giving
		up and deciding that no router is going to provide an IP address.

config ICMPv6_AUTOCONF_DELAYMSEC
	int "ICMPv6 router re-solicit delay"
	default 20
	---help---
		Wait this number of milliseconds before re-sending the Router
		Solicitation.  This time should be related to the maximum
		round trip time on the network since it is basically the time from
		when an Router Solicitation is sent until the Router
		Advertisement is received.

endif # NET_ICMPv6_AUTOCONF

config NET_ICMPv6_ROUTER
	bool "Router Advertisement"
	default n
	---help---
		In a router-less environment, NuttX can be configured to provide a
		response to Router Solicitation messages and, hence, providing
		addressing to IPv6 nodes on the network.

if NET_ICMPv6_ROUTER

config NET_ICMPv6_PREFLEN
	int "Prefix length"
	default 64
	range 0 128
	---help---
		The length (in bits) of the IPv6 address prefix.  This is the number
		of MS bits under the network mask.  The default of 64 would
		correspond to a network mask of:

			0xffff:0xffff:0xffff:0xffff:0x0000:0x0000:0x0000:0x0000.

comment "Router Prefix"

config NET_ICMPv6_PREFIX_1
	hex "[0]"
	default 0xfc00
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the first of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_2
	hex "[1]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the second of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_3
	hex "[2]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the third of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_4
	hex "[3]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the fourth of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_5
	hex "[4]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the fifth of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_6
	hex "[5]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the sixth of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_7
	hex "[6]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the seventh of the 8-values.  The
		default for all eight values is fc00::0.

config NET_ICMPv6_PREFIX_8
	hex "[7]"
	default 0x0000
	range 0x0 0xffff
	---help---
		This the IPv6 address prefix that will be provided in the IPv6 Router
		Advertisement message.  This is the last of the 8-values.  The
		default for all eight values is fc00::0.

endif # NET_ICMPv6_ROUTER
endif # NET_ICMPv6
endmenu # ICMPv6 Networking Support
endif # NET_IPv6
