Sockets
lwIP » Options (lwipopts.h) » Thread-safe APIs

## Macros

#define | LWIP_SOCKET 1
#define | LWIP_COMPAT_SOCKETS 1
#define | LWIP_POSIX_SOCKETS_IO_NAMES 1
#define | LWIP_SOCKET_OFFSET 0
#define | LWIP_SOCKET_EXTERNAL_HEADERS 0
#define | LWIP_TCP_KEEPALIVE 0
#define | LWIP_SO_SNDTIMEO 0
#define | LWIP_SO_RCVTIMEO 0
#define | LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0
#define | LWIP_SO_RCVBUF 0
#define | LWIP_SO_LINGER 0
#define | RECV_BUFSIZE_DEFAULT INT_MAX
#define | LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000
#define | SO_REUSE 0
#define | SO_REUSE_RXTOALL 0
#define | LWIP_FIONREAD_LINUXMODE 0
#define | LWIP_SOCKET_SELECT 1
#define | LWIP_SOCKET_POLL 1

## Detailed Description

## Macro Definition Documentation

## LWIP_COMPAT_SOCKETS

#define LWIP_COMPAT_SOCKETS 1

LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names through defines. LWIP_COMPAT_SOCKETS==2: Same as ==1 but correctly named functions are created. While this helps code completion, it might conflict with existing libraries. (only used if you use sockets.c)

## LWIP_FIONREAD_LINUXMODE

#define LWIP_FIONREAD_LINUXMODE 0

LWIP_FIONREAD_LINUXMODE==0 (default): ioctl/FIONREAD returns the amount of pending data in the network buffer. This is the way windows does it. It's the default for lwIP since it is smaller. LWIP_FIONREAD_LINUXMODE==1: ioctl/FIONREAD returns the size of the next pending datagram in bytes. This is the way linux does it. This code is only here for compatibility.

## LWIP_POSIX_SOCKETS_IO_NAMES

#define LWIP_POSIX_SOCKETS_IO_NAMES 1

LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. Disable this option if you use a POSIX operating system that uses the same names (read, write & close). (only used if you use sockets.c)

## LWIP_SO_LINGER

#define LWIP_SO_LINGER 0

LWIP_SO_LINGER==1: Enable SO_LINGER processing.

## LWIP_SO_RCVBUF

#define LWIP_SO_RCVBUF 0

LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing.

## LWIP_SO_RCVTIMEO

#define LWIP_SO_RCVTIMEO 0

LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and SO_RCVTIMEO processing.

## LWIP_SO_SNDRCVTIMEO_NONSTANDARD

#define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0

LWIP_SO_SNDRCVTIMEO_NONSTANDARD==1: SO_RCVTIMEO/SO_SNDTIMEO take an int (milliseconds, much like winsock does) instead of a struct timeval (default).

## LWIP_SO_SNDTIMEO

#define LWIP_SO_SNDTIMEO 0

LWIP_SO_SNDTIMEO==1: Enable send timeout for sockets/netconns and SO_SNDTIMEO processing.

## LWIP_SOCKET

#define LWIP_SOCKET 1

LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)

## LWIP_SOCKET_EXTERNAL_HEADERS

#define LWIP_SOCKET_EXTERNAL_HEADERS 0

LWIP_SOCKET_EXTERNAL_HEADERS==1: Use external headers instead of sockets.h and inet.h. In this case, user must provide its own headers by setting the values for LWIP_SOCKET_EXTERNAL_HEADER_SOCKETS_H and LWIP_SOCKET_EXTERNAL_HEADER_INET_H to appropriate include file names and the whole content of the default sockets.h and inet.h is skipped.

## LWIP_SOCKET_OFFSET

#define LWIP_SOCKET_OFFSET 0

LWIP_SOCKET_OFFSET==n: Increases the file descriptor number created by LwIP with n. This can be useful when there are multiple APIs which create file descriptors. When they all start with a different offset and you won't make them overlap you can re implement read/write/close/ioctl/fnctl to send the requested action to the right library (sharing select will need more work though).

## LWIP_SOCKET_POLL

#define LWIP_SOCKET_POLL 1

LWIP_SOCKET_POLL==1 (default): enable poll() for sockets (including struct pollfd, nfds_t, and constants)

## LWIP_SOCKET_SELECT

#define LWIP_SOCKET_SELECT 1

LWIP_SOCKET_SELECT==1 (default): enable select() for sockets (uses a netconn callback to keep track of events). This saves RAM (counters per socket) and code (netconn event callback), which should improve performance a bit).

## LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT

#define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000

By default, TCP socket/netconn close waits 20 seconds max to send the FIN

## LWIP_TCP_KEEPALIVE

#define LWIP_TCP_KEEPALIVE 0

LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds. (does not require sockets.c, and will affect tcp.c)

## RECV_BUFSIZE_DEFAULT

#define RECV_BUFSIZE_DEFAULT INT_MAX

If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize.

## SO_REUSE

#define SO_REUSE 0

SO_REUSE==1: Enable SO_REUSEADDR option.

## SO_REUSE_RXTOALL

#define SO_REUSE_RXTOALL 0

SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets to all local matches if SO_REUSEADDR is turned on. WARNING: Adds a memcpy for every packet if passing to more than one pcb!