blob: 943d49fd66da3e1d1b21aa764d8a7d2099165f4d [file] [log] [blame]
# BSD Sockets compatible API
# Copyright (c) 2017 Linaro Limited.
# SPDX-License-Identifier: Apache-2.0
menuconfig NET_SOCKETS
bool "BSD Sockets compatible API"
help
Provide BSD Sockets like API on top of native Zephyr networking API.
if NET_SOCKETS
config NET_SOCKETS_POSIX_NAMES
bool "POSIX names for Sockets API (without full POSIX API)"
default y if !POSIX_API
depends on !POSIX_API
help
With this option, Socket API functions are available under the
standard POSIX names like socket(), recv(), and close(), etc.,
even if full POSIX API (CONFIG_POSIX_API) is not enabled. (Note
that close() may require a special attention, as in POSIX it
closes any file descriptor, while with this option enabled, it
will apply only to sockets.)
Various networking libraries require either
CONFIG_NET_SOCKETS_POSIX_NAMES or CONFIG_POSIX_API to be set.
If both are disabled, Zephyr's socket functions will be
available (only) with ``zsock_`` prefix, (e.g. `zsock_socket`).
This is useful only in peculiar cases, e.g. when integrating
with 3rd-party socket libraries.
config NET_SOCKETS_POLL_MAX
int "Max number of supported poll() entries"
default 3
help
Maximum number of entries supported for poll() call.
config NET_SOCKETS_CONNECT_TIMEOUT
int "Timeout value in milliseconds to CONNECT"
default 3000
range 0 60000
help
This variable specifies time in milliseconds after connect()
API call will timeout if we have not received SYN-ACK from
peer.
config NET_SOCKETS_DNS_TIMEOUT
int "Timeout value in milliseconds for DNS queries"
default 2000
range 1000 300000
depends on DNS_RESOLVER
help
This variable specifies time in milliseconds after which DNS
query is considered timeout. Minimum timeout is 1 second and
maximum timeout is 5 min.
config NET_SOCKETS_SOCKOPT_TLS
bool "Enable TCP TLS socket option support [EXPERIMENTAL]"
imply TLS_CREDENTIALS
select MBEDTLS if NET_NATIVE
help
Enable TLS socket option support which automatically establishes
a TLS connection to the remote host.
config NET_SOCKETS_TLS_SET_MAX_FRAGMENT_LENGTH
bool "Set Maximum Fragment Length (MFL)"
default y
help
Call mbedtls_ssl_conf_max_frag_len() on created TLS context
configuration, so that Maximum Fragment Length (MFL) will be sent to
peer using RFC 6066 max_fragment_length extension.
Maximum Fragment Length (MFL) value is automatically chosen based on
MBEDTLS_SSL_OUT_CONTENT_LEN and MBEDTLS_SSL_IN_CONTENT_LEN mbed TLS
macros (which are configured by CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN in
case of default mbed TLS config).
This is mostly useful for TLS client side to tell TLS server what is
the maximum supported receive record length.
config NET_SOCKETS_ENABLE_DTLS
bool "Enable DTLS socket support [EXPERIMENTAL]"
depends on NET_SOCKETS_SOCKOPT_TLS
select MBEDTLS_DTLS if NET_NATIVE
help
Enable DTLS socket support. By default only TLS over TCP is supported.
config NET_SOCKETS_DTLS_TIMEOUT
int "Timeout value in milliseconds for DTLS connection"
default 5000
depends on NET_SOCKETS_ENABLE_DTLS
help
This variable specifies time in milliseconds after which DTLS
connection is considered dead by TLS server and DTLS resources are
freed. This is needed to prevent situation when DTLS client shuts down
without closing connection gracefully, which can prevent other peers
from connecting. Value of 0 indicates no timeout - resources will be
freed only when connection is gracefully closed by peer sending TLS
notification or socket is closed.
config NET_SOCKETS_TLS_MAX_CONTEXTS
int "Maximum number of TLS/DTLS contexts"
default 1
depends on NET_SOCKETS_SOCKOPT_TLS
help
"This variable specifies maximum number of TLS/DTLS contexts that can
be allocated at the same time."
config NET_SOCKETS_TLS_MAX_CREDENTIALS
int "Maximum number of TLS/DTLS credentials per socket"
default 4
depends on NET_SOCKETS_SOCKOPT_TLS
help
This variable sets maximum number of TLS/DTLS credentials that can be
used with a specific socket.
config NET_SOCKETS_TLS_MAX_CIPHERSUITES
int "Maximum number of TLS/DTLS ciphersuites per socket"
default 4
depends on NET_SOCKETS_SOCKOPT_TLS
help
This variable sets maximum number of TLS/DTLS ciphersuites that can
be used with specific socket, if set explicitly by socket option.
By default, all ciphersuites that are available in the system are
available to the socket.
config NET_SOCKETS_TLS_MAX_APP_PROTOCOLS
int "Maximum number of supported application layer protocols"
default 2
depends on NET_SOCKETS_SOCKOPT_TLS && MBEDTLS_SSL_ALPN
help
This variable sets maximum number of supported application layer
protocols over TLS/DTL that can be set explicitly by a socket option.
By default, no supported application layer protocol is set.
config NET_SOCKETS_OFFLOAD
bool "Offload Socket APIs [EXPERIMENTAL]"
help
Enables direct offloading of socket operations to dedicated TCP/IP
hardware.
This feature is intended to save resources by bypassing the Zephyr
TCP/IP stack in the case where there is only one network interface
required in the system, providing full BSD socket offload capability.
As a result, it bypasses any potential IP routing that Zephyr might
provide between multiple network interfaces.
See NET_OFFLOAD for a more deeply integrated approach which offloads
from the net_context() API within the Zephyr IP stack.
config NET_SOCKETS_OFFLOAD_TLS
bool "Offload TLS socket calls to the offloaded sockets"
depends on NET_SOCKETS_OFFLOAD
default y
help
If enabled, the offloading engine is expected to handle TLS/DTLS
socket calls. Othwerwise, Zephyrs native TLS socket implementation
will be used, and only TCP/UDP socket calls will be offloaded.
config NET_SOCKETS_PACKET
bool "Enable packet socket support"
help
This is an initial version of packet socket support (special type
raw socket). Packets are passed to and from the device driver
without any changes in the packet headers. It's API caller
responsibility to provide all the headers (e.g L2, L3 and so on)
while sending. While receiving, packets (including all the headers)
will be feed to sockets as it as from the driver.
config NET_SOCKETS_PACKET_DGRAM
bool "Enable packet socket SOCK_DGRAM support"
depends on NET_SOCKETS_PACKET
default y
help
For AF_PACKET sockets with SOCK_DGRAM type, the L2 header
is removed before the packet is passed to the user. Packets sent
through a SOCK_DGRAM packet socket get a suitable L2 header based
on the information in the sockaddr_ll destination address before
they are queued.
config NET_SOCKETS_CAN
bool "Enable socket CAN support [EXPERIMENTAL]"
select NET_L2_CANBUS_RAW
help
The value depends on your network needs.
config NET_SOCKETS_CAN_RECEIVERS
int "How many simultaneous SocketCAN receivers are allowed"
default 1
depends on NET_SOCKETS_CAN
help
The value tells how many sockets can receive data from same
Socket-CAN interface.
config NET_SOCKETPAIR
bool "Support for the socketpair syscall [EXPERIMENTAL]"
depends on HEAP_MEM_POOL_SIZE != 0
help
Choose y here if you would like to use the socketpair(2)
system call.
config NET_SOCKETPAIR_BUFFER_SIZE
int "Size of the intermediate buffer, in bytes"
default 64
range 1 4096
depends on NET_SOCKETPAIR
help
Buffer size for socketpair(2)
config NET_SOCKETS_NET_MGMT
bool "Enable network management socket support [EXPERIMENTAL]"
depends on NET_MGMT_EVENT
select NET_MGMT_EVENT_INFO
help
Select this if you want to use socket API to get network
managements events to your application.
config NET_SOCKETS_NET_MGMT_MAX_LISTENERS
int "Max number of sockets to listen"
default 1
depends on NET_SOCKETS_NET_MGMT
help
This sets the maximum number of net_mgmt sockets that can
be set by the socket interface. So if you have two separate
sockets that are used for listening events, you need to set
this to two.
module = NET_SOCKETS
module-dep = NET_LOG
module-str = Log level for BSD sockets compatible API calls
module-help = Enables logging for sockets code.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_SOCKETS