incubator-nuttx/net/icmpv6/Kconfig

294 lines
8.4 KiB
Plaintext
Raw Normal View History

2015-01-15 04:26:50 +08:00
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
2015-01-15 04:26:50 +08:00
#
menu "ICMPv6 Networking Support"
config NET_ICMPv6
bool "Enable ICMPv6 networking"
default n
select NET_MCASTGROUP
2015-01-15 04:26:50 +08:00
depends on NET
---help---
Enable minimal ICMPv6 support. Includes built-in support
for sending replies to received ECHO (ping) requests.
config NET_ICMPv6_NO_STACK
bool "Disable ICMPv6 stack"
default n
select NET_ICMPv6
---help---
Build without ICMPv6 stack even if ICMPv6 networking support enabled.
if NET_ICMPv6 && !NET_ICMPv6_NO_STACK
2015-01-15 04:26:50 +08:00
nuttx/net:Support to PMTUD RFC 1191 When a router is unable to forward a datagram because it exceeds the MTU of the next-hop network and its Don't Fragment bit is set, the router is required to return an ICMP Destination Unreachable message to the source of the datagram, with the Code indicating "fragmentation needed and DF set". To support the Path MTU Discovery technique specified in this memo, the router MUST include the MTU of that next-hop network in the low-order 16 bits of the ICMP header field that is labelled "unused" in the ICMP specification [7]. The high-order 16 bits remain unused, and MUST be set to zero. Thus, the message has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 3 | Code = 4 | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | unused = 0 | Next-Hop MTU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Internet Header + 64 bits of Original Datagram Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ RFC 1185 Packet Too Big Message 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MTU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | As much of invoking packet | + as will fit without the ICMPv6 packet + | exceeding 576 octets | IPv6 Fields: Destination Address Copied from the Source Address field of the invoking packet. ICMPv6 Fields: Type 2 Code 0 MTU The Maximum Transmission Unit of the next-hop link. Description A Packet Too Big MUST be sent by a router in response to a packet that it cannot forward because the packet is larger than the MTU of the outgoing link. The information in this message is used as part of the Path MTU Discovery process [RFC-1191]. Signed-off-by: wangchen <wangchen41@xiaomi.com>
2023-05-11 19:32:30 +08:00
config NET_ICMPv6_PMTU_ENTRIES
int "PMTUD ICMPv6 pmtu entry"
default 0
---help---
The number of the ICMPv6 pmtu entry
config NET_ICMPv6_PMTU_TIMEOUT
int "PMTUD ICMPv6 pmtu entry timeout (Time Unit:minute)"
default 10
depends on NET_ICMPv6_PMTU_ENTRIES != 0
---help---
The timout of the ICMPv6 pmtu entry
config NET_ICMPv6_SOCKET
bool "IPPROTO_ICMP6 socket support"
default n
select MM_IOB
---help---
Enable support for IPPROTO_ICMP6 sockets. These sockets are needed
for application level support for sending ICMPv7 ECHO requests and
receiving associated ICMPv6 ECHO replies.
config NET_ICMPv6_CHECKSUMS
bool "ICMPv6 checksums"
default y
---help---
Enable/disable ICMPv6 checksum support.
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"
2015-02-03 04:59:49 +08:00
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.
config ICMPv6_AUTOCONF_RDNSS
bool "ICMPv6 handle RDNSS field in router advertise"
default n
---help---
Handle the RDNSS field in the Router Advertisement and add it to
netdb DNS Server.
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_ROUTER_LIFETIME
int "Router Advertisement router lifetime in seconds"
default 1800
---help---
Set the router lifetime for advertising as a default router.
Set to 0 to only advertise autoconfiguration prefix without
advertising as a router.
config NET_ICMPv6_ROUTER_MANUAL
bool "Manual router prefix"
default n
---help---
Select this to set the advertised router prefix manually. Otherwise, it
will be derived from the device IPv6 address and prefix length set in
the netdev structure.
if NET_ICMPv6_ROUTER_MANUAL
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.
config NET_ICMPv6_ROUTER_RDNSS
bool "Fill the RDNSS into Router Advertisement"
default n
---help---
Fill the RDNSS from the netdb DNS Server into the Router
Advertisement.
endif # NET_ICMPv6_ROUTER_MANUAL
endif # NET_ICMPv6_ROUTER
if NET_ICMPv6_SOCKET
config NET_ICMPv6_PREALLOC_CONNS
int "Preallocated ICMPv6 packet sockets"
default 4
---help---
Number of ICMPv6 connections (all tasks).
This number of connections will be pre-allocated during system boot.
If dynamic connections allocation is enabled, more connections may
be allocated at a later time, as the system needs them. Else this
will be the maximum number of connections available to the system
at all times.
Set to 0 to disable (and rely only on dynamic allocations).
config NET_ICMPv6_ALLOC_CONNS
int "Dynamic ICMPv6 connections allocation"
default 0
---help---
Dynamic memory allocations for ICMPv6.
When set to 0 all dynamic allocations are disabled.
When set to 1 a new connection will be allocated every time,
and it will be free'd when no longer needed.
Setting this to 2 or more will allocate the connections in
batches (with batch size equal to this config). When a
connection is no longer needed, it will be returned to the
free connections pool, and it will never be deallocated!
config NET_ICMPv6_MAX_CONNS
int "Maximum number of ICMPv6 connections"
default 0
depends on NET_ICMPv6_ALLOC_CONNS > 0
---help---
If dynamic connections allocation is selected (NET_ICMPv6_ALLOC_CONNS > 0)
this will limit the number of connections that can be allocated.
This is useful in case the system is under very heavy load (or
under attack), ensuring that the heap will not be exhausted.
config NET_ICMPv6_NPOLLWAITERS
int "Number of ICMPv6 poll waiters"
default 1
endif # NET_ICMPv6_SOCKET
endif # NET_ICMPv6 && !NET_ICMPv6_NO_STACK
2015-01-15 04:26:50 +08:00
endmenu # ICMPv6 Networking Support