nuttx/net/icmpv6/Kconfig
Xiang Xiao 90c52e6f8f Squashed commit of the following:
Author: Gregory Nutt <gnutt@nuttx.org>

    Run all .h and .c files modified in last PR through nxstyle.

Author: Xiang Xiao <xiaoxiang@xiaomi.com>

    Net cleanup (#17)

    * Fix the semaphore usage issue found in tcp/udp

    1. The count semaphore need disable priority inheritance
    2. Loop again if net_lockedwait return -EINTR
    3. Call nxsem_trywait to avoid the race condition
    4. Call nxsem_post instead of sem_post

    * Put the work notifier into free list to avoid the heap fragment in the long run.  Since the allocation strategy is encapsulated internally, we can even refine the implementation later.

    * Network stack shouldn't allocate memory in the poll implementation to avoid the heap fragment in the long run, other modification include:

    1. Select MM_IOB automatically since ICMP[v6] socket can't work without the read ahead buffer
    2. Remove the net lock since xxx_callback_free already do the same thing
    3. TCP/UDP poll should work even the read ahead buffer isn't enabled at all

    * Add NET_ prefix for UDP_NOTIFIER and TCP_NOTIFIER option to align with other UDP/TCP option convention

    * Remove the unused _SF_[IDLE|ACCEPT|SEND|RECV|MASK] flags since there are code to set/clear these flags, but nobody check them.
2019-12-31 09:26:14 -06:00

217 lines
6.0 KiB
Plaintext

#
# 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.
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
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_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_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.
endif # NET_ICMPv6_ROUTER_MANUAL
endif # NET_ICMPv6_ROUTER
if NET_ICMPv6_SOCKET
config NET_ICMPv6_NCONNS
int "Max ICMPv6 packet sockets"
default 4
config NET_ICMPv6_NPOLLWAITERS
int "Number of ICMPv6 poll waiters"
default 1
endif # NET_ICMPv6_SOCKET
endif # NET_ICMPv6 && !NET_ICMPv6_NO_STACK
endmenu # ICMPv6 Networking Support
endif # NET_IPv6