posix-next API 0.1.0
Out-of-tree Zephyr POSIX module
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: Copyright The Zephyr Project Contributors
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
16#ifndef ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
17#define ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_
18
19#include <stddef.h>
20#include <sys/types.h>
21
22#include <zephyr/net/net_ip.h>
23#include <zephyr/net/socket.h>
24#include <zephyr/sys/util.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#if !(defined(_SOCKLEN_T_DECLARED) || defined(__socklen_t_defined)) || defined(__DOXYGEN__)
32typedef net_socklen_t socklen_t;
33#define _SOCKLEN_T_DECLARED
34#define __socklen_t_defined
35#endif
36
37#if !(defined(_SA_FAMILY_T_DECLARED) || defined(__sa_family_t_defined)) || defined(__DOXYGEN__)
39typedef net_sa_family_t sa_family_t;
40#define _SA_FAMILY_T_DECLARED
41#define __sa_family_t_defined
42#endif
43
44#if !(defined(_SOCKADDR_DECLARED) || defined(__sockaddr_defined)) || defined(__DOXYGEN__)
46struct sockaddr {
47 sa_family_t sa_family;
48 char sa_data[14];
49};
50#define _SOCKADDR_DECLARED
51#define __sockaddr_defined
52#endif
53
54#if !(defined(_SOCKADDR_STORAGE_DECLARED) || defined(__sockaddr_storage_defined)) || defined(__DOXYGEN__)
58 char __ss_padding[128 - sizeof(sa_family_t)];
59};
60#define _SOCKADDR_STORAGE_DECLARED
61#define __sockaddr_storage_defined
62#endif
63
64/* slightly out of order w.r.t. the specification */
65#if !defined(_IOVEC_DECLARED) && !defined(__iovec_defined)
66struct iovec {
67 void *iov_base;
68 size_t iov_len;
69};
70#define _IOVEC_DECLARED
71#define __iovec_defined
72#endif
73
74#if !(defined(_MSGHDR_DECLARED) || defined(__msghdr_defined)) || defined(__DOXYGEN__)
85#define _MSGHDR_DECLARED
86#define __msghdr_defined
87#endif
88
89#if !(defined(_CMSGHDR_DECLARED) || defined(__cmsghdr_defined)) || defined(__DOXYGEN__)
96#define _CMSGHDR_DECLARED
97#define __cmsghdr_defined
98#endif
99
101#define SCM_RIGHTS 1
102
103
105#define CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + ROUND_UP(sizeof(struct cmsghdr), sizeof(size_t)))
106
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) ? \
113 NULL : \
114 (struct cmsghdr *)((unsigned char *)(cmsg) + ROUND_UP((cmsg)->cmsg_len, sizeof(size_t)))))
115
117#define CMSG_FIRSTHDR(mhdr) \
118 (((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
119 (struct cmsghdr *)((mhdr)->msg_control) : NULL))
120
121#if !(defined(_LINGER_DECLARED) || defined(__linger_defined)) || defined(__DOXYGEN__)
123struct linger {
126};
127#define _LINGER_DECLARED
128#define __linger_defined
129#endif
130
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
139
141#define SOL_SOCKET ZSOCK_SOL_SOCKET
142
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
175
177#define SOMAXCONN ZSOCK_SOMAXCONN
178
180#define MSG_CTRUNC ZSOCK_MSG_CTRUNC
182#define MSG_DONTROUTE 0x04
184#define MSG_EOR 0x80
186#define MSG_OOB 0x01
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
195
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
204
206#define SHUT_RD ZSOCK_SHUT_RD
208#define SHUT_WR ZSOCK_SHUT_WR
210#define SHUT_RDWR ZSOCK_SHUT_RDWR
211
221int accept(int sock, struct sockaddr *addr, socklen_t *addrlen);
222
232int bind(int sock, const struct sockaddr *addr, socklen_t addrlen);
233
243int connect(int sock, const struct sockaddr *addr, socklen_t addrlen);
244
254int getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen);
255
265int getsockname(int sock, struct sockaddr *addr, socklen_t *addrlen);
266
278int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);
279
288int listen(int sock, int backlog);
289
300ssize_t recv(int sock, void *buf, size_t max_len, int flags);
301
314ssize_t recvfrom(int sock, void *buf, size_t max_len, int flags, struct sockaddr *src_addr,
315 socklen_t *addrlen);
316
326ssize_t recvmsg(int sock, struct msghdr *msg, int flags);
327
338ssize_t send(int sock, const void *buf, size_t len, int flags);
339
349ssize_t sendmsg(int sock, const struct msghdr *message, int flags);
350
363ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr,
364 socklen_t addrlen);
365
377int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
378
387int shutdown(int sock, int how);
388
396int sockatmark(int s);
397
407int socket(int family, int type, int proto);
408
419int socketpair(int family, int type, int proto, int sv[2]);
420
421#ifdef __cplusplus
422}
423#endif
424
425#endif /* ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_ */
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.
Definition socket.h:32
net_sa_family_t sa_family_t
Socket address family type.
Definition socket.h:39
Ancillary data object header.
Definition socket.h:91
int cmsg_type
Protocol-specific type.
Definition socket.h:94
socklen_t cmsg_len
Number of bytes, including header.
Definition socket.h:92
int cmsg_level
Originating protocol.
Definition socket.h:93
Scatter/gather array element.
Definition socket.h:66
void * iov_base
Pointer to data.
Definition socket.h:67
size_t iov_len
Length of the data.
Definition socket.h:68
Socket linger option structure.
Definition socket.h:123
int l_linger
Linger time, in seconds.
Definition socket.h:125
int l_onoff
Indicates whether linger option is enabled.
Definition socket.h:124
Message header for sendmsg() and recvmsg().
Definition socket.h:76
struct iovec * msg_iov
Scatter/gather array.
Definition socket.h:79
socklen_t msg_namelen
Size of socket address.
Definition socket.h:78
void * msg_name
Optional socket address.
Definition socket.h:77
int msg_flags
Flags on received message.
Definition socket.h:83
size_t msg_controllen
Ancillary data buffer length.
Definition socket.h:82
size_t msg_iovlen
Number of elements in msg_iov.
Definition socket.h:80
void * msg_control
Ancillary data.
Definition socket.h:81
Protocol-independent socket address storage.
Definition socket.h:56
sa_family_t ss_family
Address family.
Definition socket.h:57
Generic socket address.
Definition netdb.h:100
char sa_data[14]
Address payload.
Definition netdb.h:102
sa_family_t sa_family
Address family.
Definition netdb.h:101
POSIX fundamental types (<sys/types.h>)