# Kconfig - IP stack config

#
# Copyright (c) 2016 Intel Corporation.
#
# SPDX-License-Identifier: Apache-2.0
#

menu "IP stack"
	depends on NETWORKING

# Hidden option
config NET_L2_RAW_CHANNEL
	bool
	default n

if !NET_L2_RAW_CHANNEL

config NET_INIT_PRIO
	int
	default 90
	help
	Network initialization priority level. This number tells how
	early in the boot the network stack is initialized.

source "subsys/net/ip/Kconfig.debug"

source "subsys/net/ip/Kconfig.ipv6"

source "subsys/net/ip/Kconfig.ipv4"

config NET_SHELL
	bool "Enable network shell utilities"
	default n
	select CONSOLE_SHELL
	help
	Activate shell module that provides network commands like
	ping to the console.

config NET_IP_ADDR_CHECK
	bool "Check IP address validity before sending IP packet"
	default y
	help
	Check that either the source or destination address is
	correct before sending either IPv4 or IPv6 network packet.

config NET_MAX_ROUTERS
	int "How many routers are supported"
	default 2 if NET_IPV4 && NET_IPV6
	default 1 if NET_IPV4 && !NET_IPV6
	default 1 if !NET_IPV4 && NET_IPV6
	range 1 254
	help
	The value depends on your network needs.

# Normally the route support is enabled by RPL or similar technology
# that needs to use the routing infrastructure.
config NET_ROUTE
	bool
	depends on NET_IPV6_NBR_CACHE
	default n
	default y if NET_IPV6_NBR_CACHE

config	NET_MAX_ROUTES
	int "Max number of routing entries stored."
	default NET_IPV6_MAX_NEIGHBORS
	depends on NET_ROUTE
	help
	This determines how many entries can be stored in routing table.

config	NET_MAX_NEXTHOPS
	int "Max number of next hop entries stored."
	default NET_MAX_ROUTES
	depends on NET_ROUTE
	help
	This determines how many entries can be stored in nexthop table.

config NET_ROUTE_MCAST
	bool
	depends on NET_ROUTE
	default n

config	NET_MAX_MCAST_ROUTES
	int "Max number of multicast routing entries stored."
	default 1
	depends on NET_ROUTE_MCAST
	help
	This determines how many entries can be stored in multicast
	routing table.

config NET_TCP
	bool "Enable TCP"
	default n
	help
	The value depends on your network needs.

config NET_TCP_CHECKSUM
	bool "Check TCP checksum"
	default y
	depends on NET_TCP
	help
	Enables TCP handler to check TCP checksum. If the checksum is invalid,
	then the packet is discarded.

config NET_DEBUG_TCP
	bool "Debug TCP"
	default n
	depends on NET_TCP && NET_LOG
	help
	Enables TCP handler output debug messages

config NET_TCP_TIME_WAIT
	bool "Enable TCP TIME_WAIT timeouts"
	depends on NET_TCP
	default n
	help
	Officially, the TCP standard requires a 4 minute timeout on
	connection close before that particular port pair can be used
	again.  This requires that the net_context and net_tcp structs
	persist for the full duration, so has non-trivial memory costs
	and is optional.  Modern systems with well-randomized sequence
	numbers don't need this, but it is present for specification
	compliance where needed.

config NET_TCP_2MSL_TIME
	int "How long to wait in TIME_WAIT (in seconds)"
	depends on NET_TCP_TIME_WAIT
	default 240
	help
	The value is in seconds.

config NET_TCP_ACK_TIMEOUT
	int "How long to wait for ACK (in milliseconds)"
	depends on NET_TCP
	default 1000
	range 1 2147483647
	help
	This value affects the timeout when waiting ACK to arrive in
	various TCP states. The value is in milliseconds. Note that
	having a very low value here could prevent connectivity.

config NET_UDP
	bool "Enable UDP"
	default y
	help
	The value depends on your network needs.

config NET_UDP_CHECKSUM
	bool "Check UDP checksum"
	default y
	depends on NET_UDP
	help
	Enables UDP handler to check UDP checksum. If the checksum is invalid,
	then the packet is discarded.

config NET_DEBUG_UDP
	bool "Debug UDP"
	default n
	depends on NET_UDP && NET_LOG
	help
	Enables UDP handler output debug messages

config NET_MAX_CONN
	int "How many network connections are supported"
	depends on NET_UDP || NET_TCP
	default 4
	default 8 if NET_IPV6 && NET_IPV4
	help
	The value depends on your network needs. The value
	should include both UDP and TCP connections.

config NET_CONN_CACHE
	bool "Cache network connections"
	depends on NET_UDP || NET_TCP
	default n
	help
	Caching takes slight more memory but will speedup connection
	handling of UDP and TCP connections.

config NET_MAX_CONTEXTS
	int "Number of network contexts to allocate"
	default 6
	help
	Each network context is used to describe a network 5-tuple that
	is used when listening or sending network traffic. This is very
	similar as one could call a network socket in some other systems.

config NET_CONTEXT_NET_PKT_POOL
	bool "Enable net_buf TX pool / context"
	default n
	default y if NET_TCP && NET_6LO
	help
	If enabled, then it is possible to fine-tune network packet pool
	for each context when sending network data. If this setting is
	enabled, then you should define the context pools in your application
	using NET_PKT_TX_POOL_DEFINE() and NET_PKT_DATA_POOL_DEFINE()
	macros and tie these pools to desired context using the
	net_context_setup_pools() function.

config NET_CONTEXT_SYNC_RECV
	bool "Support synchronous functionality in net_context_recv() API"
	default y
	help
	You can disable sync support to save some memory if you are calling
	net_context_recv() in async way only when timeout is set to 0.

config NET_CONTEXT_CHECK
	bool "Check options when calling various net_context functions"
	default y
	help
	If you know that the options passed to net_context...() functions
	are ok, then you can disable the checks to save some memory.

choice
	prompt "Use SLIP connectivity with QEMU"
	optional
	default NET_SLIP_TUN
	help
	The SLIP support is only used when the application is
	run inside QEMU and the network peer is run in your
	host.
	The SLIP support is only used when the application is
	run inside QEMU and the network peer is run in your
	host. The host needs to have tunslip running in order
	to receive and send network packets via the SLIP driver.
	The SLIP driver Kconfig options can be tweaked in drivers
	section.
	Options are provided to communicate with QEMU via a TUN driver,
	the default, as it requires less configuration in the host side,
	or via a TAP driver.
config NET_SLIP_TUN
	bool "TUN SLIP driver"
	select SLIP
	select UART_PIPE
	select UART_INTERRUPT_DRIVEN
	select NET_L2_DUMMY
	help
	The host needs to have tunslip running in order
	to receive and send network packets via the SLIP driver.
	Choose this if unsure.
config NET_SLIP_TAP
	bool "TAP SLIP driver"
	select SLIP
	select UART_PIPE
	select UART_INTERRUPT_DRIVEN
	select SLIP_TAP
	help
	SLIP TAP support is necessary when testing IPv4/ARP. The host
	needs to have tunslip with TAP support running in order to
	communicate via the SLIP driver.
endchoice

config NET_TRICKLE
	bool "Enable Trickle library"
	default n
	help
	Normally this is enabled automatically if needed,
	so say 'n' if unsure.

config NET_DEBUG_TRICKLE
	bool "Debug Trickle algorithm"
	default n
	depends on NET_TRICKLE && NET_LOG
	help
	Enables Trickle library output debug messages

endif # NET_L2_RAW_CHANNEL

config NET_PKT_RX_COUNT
	int "How many packet receives can be pending at the same time"
	default 4
	help
	Each RX buffer will occupy smallish amount of memory.
	See include/net/net_pkt.h and the sizeof(struct net_pkt)

config NET_PKT_TX_COUNT
	int "How many packet sends can be pending at the same time"
	default 2
	help
	Each TX buffer will occupy smallish amount of memory.
	See include/net/net_pkt.h and the sizeof(struct net_pkt)

config NET_BUF_RX_COUNT
	int "How many network buffers are allocated for receiving data"
	default 16
	help
	Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish
	header (sizeof(struct net_buf)) amount of data.

config NET_BUF_TX_COUNT
	int "How many network buffers are allocated for sending data"
	default 16
	help
	Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish
	header (sizeof(struct net_buf)) amount of data.

config NET_BUF_DATA_SIZE
	int "Size of each network data fragment"
	default 128
	default 125 if NET_L2_IEEE802154
	help
	This value tells what is the size of the data fragment that is
	received from the network.
	Example: For IEEE 802.15.4, the network packet is 127 bytes long,
	which leaves in worst case 81 bytes for user data (MTU).
	In order to be able to receive at least full IPv6 packet which
	has a size of 1280 bytes, the one should allocate 16 fragments here.

config NET_BUF_USER_DATA_SIZE
	int "Size of user_data reserved"
	default 0
	default 4 if NET_L2_BLUETOOTH
	help
	This is for drivers to set how much user_data shall be included in
	each network data fragment.
	Example: For Bluetooth, the user_data shall be at least 4 bytes as
	that is used for identifying the type of data they are carrying.

source "subsys/net/ip/Kconfig.stack"

source "subsys/net/ip/l2/Kconfig"

source "subsys/net/ip/Kconfig.mgmt"

source "subsys/net/ip/Kconfig.rpl"

source "subsys/net/ip/Kconfig.stats"

source "subsys/net/ip/Kconfig.app"

endmenu
