|  | # 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_PRIORITY_DEFAULT | 
|  | int "Default processing priority for sockets" | 
|  | default 50 | 
|  | help | 
|  | Default processing priority for socket implementations. This defines | 
|  | the order of processing of particular socket implementations when | 
|  | creating a new socket, lower value indicate earlier processing. This | 
|  | allows to for instance prioritize offloaded socket processing during | 
|  | socket creation over the native one, or vice versa. | 
|  |  | 
|  | 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 "TCP TLS socket option support [EXPERIMENTAL]" | 
|  | imply TLS_CREDENTIALS | 
|  | select MBEDTLS if NET_NATIVE | 
|  | select EXPERIMENTAL | 
|  | help | 
|  | Enable TLS socket option support which automatically establishes | 
|  | a TLS connection to the remote host. | 
|  |  | 
|  | config NET_SOCKETS_TLS_PRIORITY | 
|  | int "Default processing priority for TLS sockets" | 
|  | default 45 | 
|  | help | 
|  | Processing priority for TLS sockets. Should be lower than | 
|  | NET_SOCKETS_PRIORITY_DEFAULT in order to be processed correctly. | 
|  |  | 
|  | 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 "DTLS socket support [EXPERIMENTAL]" | 
|  | depends on NET_SOCKETS_SOCKOPT_TLS | 
|  | select MBEDTLS_DTLS if NET_NATIVE | 
|  | select EXPERIMENTAL | 
|  | 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_TLS_MAX_CLIENT_SESSION_COUNT | 
|  | int "Maximum number of stored client TLS/DTLS sessions" | 
|  | default 1 | 
|  | depends on NET_SOCKETS_SOCKOPT_TLS | 
|  | help | 
|  | This variable specifies maximum number of stored TLS/DTLS sessions, | 
|  | used for TLS/DTLS session resumption. | 
|  |  | 
|  | config NET_SOCKETS_OFFLOAD | 
|  | bool "Offload Socket APIs" | 
|  | 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_PRIORITY | 
|  | int "Default processing priority for offloaded sockets" | 
|  | default 40 | 
|  | help | 
|  | Processing priority for offloaded sockets. | 
|  |  | 
|  | If native TLS is enabled, lower value than NET_SOCKETS_TLS_PRIORITY | 
|  | means that TLS will be offloaded as well (if supported by offloaded | 
|  | socket implementation). Higher value than NET_SOCKETS_TLS_PRIORITY | 
|  | means that native TLS will be used. | 
|  |  | 
|  | config NET_SOCKETS_OFFLOAD_DISPATCHER | 
|  | bool "Intermediate socket offloading layer" | 
|  | depends on NET_SOCKETS_OFFLOAD | 
|  | help | 
|  | If enabled, an intermediate socket offloading layer is included | 
|  | (called socket dispatcher), allowing to select an offloaded network | 
|  | interface and thus socket implementation with SO_BINDTODEVICE socket | 
|  | option. This can be useful, when multiple offloaded sockets | 
|  | implementations are available in the system, allowing to easily bind | 
|  | a socket to a particular implementation. | 
|  |  | 
|  | config NET_SOCKETS_OFFLOAD_DISPATCHER_CONTEXT_MAX | 
|  | int "Maximum number of dispatcher sockets created" | 
|  | default 4 | 
|  | depends on NET_SOCKETS_OFFLOAD_DISPATCHER | 
|  | help | 
|  | Maximum number of dispatcher sockets created at a time. Note, that | 
|  | only sockets that has not been dispatched yet count into the limit. | 
|  | After a proper socket has been created for a given file descriptor, | 
|  | the dispatcher context is released and can be reused. | 
|  |  | 
|  | config NET_SOCKETS_PACKET | 
|  | bool "Packet socket support" | 
|  | select NET_CONNECTION_SOCKETS | 
|  | 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 fed to sockets unchanged as provided by the driver. | 
|  |  | 
|  | config NET_SOCKETS_PACKET_DGRAM | 
|  | bool "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 "Socket CAN support [EXPERIMENTAL]" | 
|  | select NET_L2_CANBUS_RAW | 
|  | select NET_CONNECTION_SOCKETS | 
|  | select EXPERIMENTAL | 
|  | 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]" | 
|  | select EXPERIMENTAL | 
|  | select PIPES | 
|  | 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 "Network management socket support [EXPERIMENTAL]" | 
|  | depends on NET_MGMT_EVENT | 
|  | select NET_MGMT_EVENT_INFO | 
|  | select EXPERIMENTAL | 
|  | 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 |