blob: 66f54130d175d09847363426268a580b98be29eb [file] [log] [blame]
/**
* Copyright (c) 2024 Marcin Niestroj
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __DRIVERS_NET_NSOS_SOCKET_H__
#define __DRIVERS_NET_NSOS_SOCKET_H__
#include <stdint.h>
/**
* @name Socket level options (NSOS_MID_SOL_SOCKET)
* @{
*/
/** Socket-level option */
#define NSOS_MID_SOL_SOCKET 1
/* Socket options for NSOS_MID_SOL_SOCKET level */
/** Recording debugging information (ignored, for compatibility) */
#define NSOS_MID_SO_DEBUG 1
/** address reuse */
#define NSOS_MID_SO_REUSEADDR 2
/** Type of the socket */
#define NSOS_MID_SO_TYPE 3
/** Async error */
#define NSOS_MID_SO_ERROR 4
/** Bypass normal routing and send directly to host (ignored, for compatibility) */
#define NSOS_MID_SO_DONTROUTE 5
/** Transmission of broadcast messages is supported (ignored, for compatibility) */
#define NSOS_MID_SO_BROADCAST 6
/** Size of socket send buffer */
#define NSOS_MID_SO_SNDBUF 7
/** Size of socket recv buffer */
#define NSOS_MID_SO_RCVBUF 8
/** Enable sending keep-alive messages on connections */
#define NSOS_MID_SO_KEEPALIVE 9
/** Place out-of-band data into receive stream (ignored, for compatibility) */
#define NSOS_MID_SO_OOBINLINE 10
/** Socket priority */
#define NSOS_MID_SO_PRIORITY 12
/** Socket lingers on close (ignored, for compatibility) */
#define NSOS_MID_SO_LINGER 13
/** Allow multiple sockets to reuse a single port */
#define NSOS_MID_SO_REUSEPORT 15
/** Receive low watermark (ignored, for compatibility) */
#define NSOS_MID_SO_RCVLOWAT 18
/** Send low watermark (ignored, for compatibility) */
#define NSOS_MID_SO_SNDLOWAT 19
/**
* Receive timeout
* Applies to receive functions like recv(), but not to connect()
*/
#define NSOS_MID_SO_RCVTIMEO 20
/** Send timeout */
#define NSOS_MID_SO_SNDTIMEO 21
/** Bind a socket to an interface */
#define NSOS_MID_SO_BINDTODEVICE 25
/** Socket accepts incoming connections (ignored, for compatibility) */
#define NSOS_MID_SO_ACCEPTCONN 30
/** Timestamp TX packets */
#define NSOS_MID_SO_TIMESTAMPING 37
/** Protocol used with the socket */
#define NSOS_MID_SO_PROTOCOL 38
/** Domain used with SOCKET */
#define NSOS_MID_SO_DOMAIN 39
/** Enable SOCKS5 for Socket */
#define NSOS_MID_SO_SOCKS5 60
/** Socket TX time (when the data should be sent) */
#define NSOS_MID_SO_TXTIME 61
struct nsos_mid_timeval {
int64_t tv_sec;
int64_t tv_usec;
};
/** @} */
/**
* @name TCP level options (NSOS_MID_IPPROTO_TCP)
* @{
*/
/* Socket options for NSOS_MID_IPPROTO_TCP level */
/** Disable TCP buffering (ignored, for compatibility) */
#define NSOS_MID_TCP_NODELAY 1
/** Start keepalives after this period (seconds) */
#define NSOS_MID_TCP_KEEPIDLE 2
/** Interval between keepalives (seconds) */
#define NSOS_MID_TCP_KEEPINTVL 3
/** Number of keepalives before dropping connection */
#define NSOS_MID_TCP_KEEPCNT 4
/** @} */
/**
* @name IPv6 level options (NSOS_MID_IPPROTO_IPV6)
* @{
*/
/* Socket options for NSOS_MID_IPPROTO_IPV6 level */
/** Set the unicast hop limit for the socket. */
#define NSOS_MID_IPV6_UNICAST_HOPS 16
/** Set the multicast hop limit for the socket. */
#define NSOS_MID_IPV6_MULTICAST_HOPS 18
/** Join IPv6 multicast group. */
#define NSOS_MID_IPV6_ADD_MEMBERSHIP 20
/** Leave IPv6 multicast group. */
#define NSOS_MID_IPV6_DROP_MEMBERSHIP 21
/** Don't support IPv4 access */
#define NSOS_MID_IPV6_V6ONLY 26
/** Pass an IPV6_RECVPKTINFO ancillary message that contains a
* in6_pktinfo structure that supplies some information about the
* incoming packet. See RFC 3542.
*/
#define NSOS_MID_IPV6_RECVPKTINFO 49
/** @} */
#endif /* __DRIVERS_NET_NSOS_SOCKET_H__ */