16#ifndef ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
17#define ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
22#include <zephyr/net/net_ip.h>
23#include <zephyr/net/socket.h>
24#include <zephyr/sys/util.h>
30#if !(defined(_SOCKLEN_T_DECLARED) || defined(__socklen_t_defined)) || defined(__DOXYGEN__)
33#define _SOCKLEN_T_DECLARED
34#define __socklen_t_defined
37#if !(defined(_SA_FAMILY_T_DECLARED) || defined(__sa_family_t_defined)) || defined(__DOXYGEN__)
40#define _SA_FAMILY_T_DECLARED
41#define __sa_family_t_defined
44#if !(defined(_SOCKADDR_DECLARED) || defined(__sockaddr_defined)) || defined(__DOXYGEN__)
50#define _SOCKADDR_DECLARED
51#define __sockaddr_defined
54#if !(defined(_SOCKADDR_STORAGE_DECLARED) || defined(__sockaddr_storage_defined)) || defined(__DOXYGEN__)
60#define _SOCKADDR_STORAGE_DECLARED
61#define __sockaddr_storage_defined
65#if !defined(_IOVEC_DECLARED) && !defined(__iovec_defined)
70#define _IOVEC_DECLARED
71#define __iovec_defined
74#if !(defined(_MSGHDR_DECLARED) || defined(__msghdr_defined)) || defined(__DOXYGEN__)
85#define _MSGHDR_DECLARED
86#define __msghdr_defined
89#if !(defined(_CMSGHDR_DECLARED) || defined(__cmsghdr_defined)) || defined(__DOXYGEN__)
96#define _CMSGHDR_DECLARED
97#define __cmsghdr_defined
105#define CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + ROUND_UP(sizeof(struct cmsghdr), sizeof(size_t)))
108#define CMSG_NXTHDR(mhdr, cmsg) \
109 (((cmsg) == NULL) ? CMSG_FIRSTHDR(mhdr) : \
110 (((unsigned char *)(cmsg) + ROUND_UP((cmsg)->cmsg_len, sizeof(size_t)) + \
111 ROUND_UP(sizeof(struct cmsghdr), sizeof(size_t)) > \
112 (unsigned char *)((mhdr)->msg_control) + (mhdr)->msg_controllen) ? \
114 (struct cmsghdr *)((unsigned char *)(cmsg) + ROUND_UP((cmsg)->cmsg_len, sizeof(size_t)))))
117#define CMSG_FIRSTHDR(mhdr) \
118 (((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
119 (struct cmsghdr *)((mhdr)->msg_control) : NULL))
121#if !(defined(_LINGER_DECLARED) || defined(__linger_defined)) || defined(__DOXYGEN__)
127#define _LINGER_DECLARED
128#define __linger_defined
132#define SOCK_DGRAM NET_SOCK_DGRAM
134#define SOCK_RAW NET_SOCK_RAW
136#define SOCK_SEQPACKET 5
138#define SOCK_STREAM NET_SOCK_STREAM
141#define SOL_SOCKET ZSOCK_SOL_SOCKET
144#define SO_ACCEPTCONN ZSOCK_SO_ACCEPTCONN
146#define SO_BROADCAST ZSOCK_SO_BROADCAST
148#define SO_DEBUG ZSOCK_SO_DEBUG
150#define SO_DONTROUTE ZSOCK_SO_DONTROUTE
152#define SO_ERROR ZSOCK_SO_ERROR
154#define SO_KEEPALIVE ZSOCK_SO_KEEPALIVE
156#define SO_LINGER ZSOCK_SO_LINGER
158#define SO_OOBINLINE ZSOCK_SO_OOBINLINE
160#define SO_RCVBUF ZSOCK_SO_RCVBUF
162#define SO_RCVLOWAT ZSOCK_SO_RCVLOWAT
164#define SO_RCVTIMEO ZSOCK_SO_RCVTIMEO
166#define SO_REUSEADDR ZSOCK_SO_REUSEADDR
168#define SO_SNDBUF ZSOCK_SO_SNDBUF
170#define SO_SNDLOWAT ZSOCK_SO_SNDLOWAT
172#define SO_SNDTIMEO ZSOCK_SO_SNDTIMEO
174#define SO_TYPE ZSOCK_SO_TYPE
177#define SOMAXCONN ZSOCK_SOMAXCONN
180#define MSG_CTRUNC ZSOCK_MSG_CTRUNC
182#define MSG_DONTROUTE 0x04
188#define MSG_NOSIGNAL 0x4000
190#define MSG_PEEK ZSOCK_MSG_PEEK
192#define MSG_TRUNC ZSOCK_MSG_TRUNC
194#define MSG_WAITALL ZSOCK_MSG_WAITALL
197#define AF_UNSPEC NET_AF_UNSPEC
199#define AF_INET NET_AF_INET
201#define AF_INET6 NET_AF_INET6
203#define AF_UNIX NET_AF_UNIX
206#define SHUT_RD ZSOCK_SHUT_RD
208#define SHUT_WR ZSOCK_SHUT_WR
210#define SHUT_RDWR ZSOCK_SHUT_RDWR
278int getsockopt(
int sock,
int level,
int optname,
void *optval, socklen_t *optlen);
300ssize_t
recv(
int sock,
void *buf,
size_t max_len,
int flags);
338ssize_t
send(
int sock,
const void *buf,
size_t len,
int flags);
363ssize_t
sendto(
int sock,
const void *buf,
size_t len,
int flags,
const struct sockaddr *dest_addr,
377int setsockopt(
int sock,
int level,
int optname,
const void *optval, socklen_t optlen);
407int socket(
int family,
int type,
int proto);
int bind(int sock, const struct sockaddr *addr, socklen_t addrlen)
Assign a local address to a socket.
ssize_t send(int sock, const void *buf, size_t len, int flags)
Send data on a connected socket.
ssize_t recvfrom(int sock, void *buf, size_t max_len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
Receive data and the sender's address from a socket.
int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen)
Get socket options.
int socket(int family, int type, int proto)
Create a new socket.
int getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen)
Get the address of the peer connected to a socket.
int socketpair(int family, int type, int proto, int sv[2])
Create a pair of connected sockets.
int accept(int sock, struct sockaddr *addr, socklen_t *addrlen)
Accept a new connection on a listening socket.
int listen(int sock, int backlog)
Mark a socket as passive (ready to accept connections).
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
Set socket options.
ssize_t sendmsg(int sock, const struct msghdr *message, int flags)
Send a message (with scatter-gather I/O and ancillary data).
int shutdown(int sock, int how)
Shut down part or all of a full-duplex connection.
int connect(int sock, const struct sockaddr *addr, socklen_t addrlen)
Initiate a connection on a socket.
int getsockname(int sock, struct sockaddr *addr, socklen_t *addrlen)
Get the local address bound to a socket.
ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
Send data to a specific destination address.
ssize_t recv(int sock, void *buf, size_t max_len, int flags)
Receive data from a connected socket.
ssize_t recvmsg(int sock, struct msghdr *msg, int flags)
Receive a message (with scatter-gather I/O and ancillary data).
int sockatmark(int s)
Determine whether a socket is at the out-of-band mark.
net_socklen_t socklen_t
Type for socket address length values.
net_sa_family_t sa_family_t
Socket address family type.
Ancillary data object header.
int cmsg_type
Protocol-specific type.
socklen_t cmsg_len
Number of bytes, including header.
int cmsg_level
Originating protocol.
Scatter/gather array element.
void * iov_base
Pointer to data.
size_t iov_len
Length of the data.
Socket linger option structure.
int l_linger
Linger time, in seconds.
int l_onoff
Indicates whether linger option is enabled.
Message header for sendmsg() and recvmsg().
struct iovec * msg_iov
Scatter/gather array.
socklen_t msg_namelen
Size of socket address.
void * msg_name
Optional socket address.
int msg_flags
Flags on received message.
size_t msg_controllen
Ancillary data buffer length.
size_t msg_iovlen
Number of elements in msg_iov.
void * msg_control
Ancillary data.
Protocol-independent socket address storage.
sa_family_t ss_family
Address family.
char sa_data[14]
Address payload.
sa_family_t sa_family
Address family.
POSIX fundamental types (<sys/types.h>)