15#ifndef ZEPHYR_INCLUDE_NET_SOCKET_H_
16#define ZEPHYR_INCLUDE_NET_SOCKET_H_
57#define ZSOCK_POLLPRI 2
59#define ZSOCK_POLLOUT 4
61#define ZSOCK_POLLERR 8
63#define ZSOCK_POLLHUP 0x10
65#define ZSOCK_POLLNVAL 0x20
73#define ZSOCK_MSG_PEEK 0x02
76#define ZSOCK_MSG_CTRUNC 0x08
80#define ZSOCK_MSG_TRUNC 0x20
82#define ZSOCK_MSG_DONTWAIT 0x40
84#define ZSOCK_MSG_WAITALL 0x100
96#define ZSOCK_SHUT_RD 0
98#define ZSOCK_SHUT_WR 1
100#define ZSOCK_SHUT_RDWR 2
121#define TLS_SEC_TAG_LIST 1
126#define TLS_HOSTNAME 2
132#define TLS_CIPHERSUITE_LIST 3
137#define TLS_CIPHERSUITE_USED 4
148#define TLS_PEER_VERIFY 5
157#define TLS_DTLS_ROLE 6
163#define TLS_ALPN_LIST 7
168#define TLS_DTLS_HANDSHAKE_TIMEOUT_MIN 8
174#define TLS_DTLS_HANDSHAKE_TIMEOUT_MAX 9
180#define TLS_CERT_NOCOPY 10
196#define TLS_SESSION_CACHE 12
200#define TLS_SESSION_CACHE_PURGE 13
212#define TLS_DTLS_CID 14
222#define TLS_DTLS_CID_STATUS 15
227#define TLS_DTLS_CID_VALUE 16
234#define TLS_DTLS_PEER_CID_VALUE 17
242#define TLS_DTLS_HANDSHAKE_ON_CONNECT 18
245#define TLS_PEER_VERIFY_NONE 0
246#define TLS_PEER_VERIFY_OPTIONAL 1
247#define TLS_PEER_VERIFY_REQUIRED 2
250#define TLS_DTLS_ROLE_CLIENT 0
251#define TLS_DTLS_ROLE_SERVER 1
254#define TLS_CERT_NOCOPY_NONE 0
255#define TLS_CERT_NOCOPY_OPTIONAL 1
258#define TLS_SESSION_CACHE_DISABLED 0
259#define TLS_SESSION_CACHE_ENABLED 1
262#define TLS_DTLS_CID_DISABLED 0
263#define TLS_DTLS_CID_SUPPORTED 1
264#define TLS_DTLS_CID_ENABLED 2
267#define TLS_DTLS_CID_STATUS_DISABLED 0
268#define TLS_DTLS_CID_STATUS_DOWNLINK 1
269#define TLS_DTLS_CID_STATUS_UPLINK 2
270#define TLS_DTLS_CID_STATUS_BIDIRECTIONAL 3
581__syscall
int zsock_ioctl(
int sock,
unsigned long request, va_list ap);
691 char *dst,
size_t size)
711__syscall
int z_zsock_getaddrinfo_internal(
const char *host,
724#define AI_PASSIVE 0x1
726#define AI_CANONNAME 0x2
728#define AI_NUMERICHOST 0x4
730#define AI_V4MAPPED 0x8
734#define AI_ADDRCONFIG 0x20
736#define AI_NUMERICSERV 0x400
788#define NI_NUMERICHOST 1
790#define NI_NUMERICSERV 2
822#if defined(CONFIG_NET_SOCKETS_POSIX_NAMES)
830#define pollfd zsock_pollfd
833static inline int socket(
int family,
int type,
int proto)
839static inline int socketpair(
int family,
int type,
int proto,
int sv[2])
870static inline int listen(
int sock,
int backlog)
898static inline int zsock_fcntl_wrapper(
int sock,
int cmd, ...)
904 flags = va_arg(args,
int);
909#define fcntl zsock_fcntl_wrapper
913static inline int ioctl(
int sock,
unsigned long request, ...)
918 va_start(args, request);
960static inline int getsockopt(
int sock,
int level,
int optname,
967static inline int setsockopt(
int sock,
int level,
int optname,
988static inline int getaddrinfo(
const char *host,
const char *service,
1013 serv, servlen,
flags);
1017#define addrinfo zsock_addrinfo
1039#define POLLIN ZSOCK_POLLIN
1041#define POLLOUT ZSOCK_POLLOUT
1043#define POLLERR ZSOCK_POLLERR
1045#define POLLHUP ZSOCK_POLLHUP
1047#define POLLNVAL ZSOCK_POLLNVAL
1050#define MSG_PEEK ZSOCK_MSG_PEEK
1052#define MSG_CTRUNC ZSOCK_MSG_CTRUNC
1054#define MSG_TRUNC ZSOCK_MSG_TRUNC
1056#define MSG_DONTWAIT ZSOCK_MSG_DONTWAIT
1058#define MSG_WAITALL ZSOCK_MSG_WAITALL
1061#define SHUT_RD ZSOCK_SHUT_RD
1063#define SHUT_WR ZSOCK_SHUT_WR
1065#define SHUT_RDWR ZSOCK_SHUT_RDWR
1068#define EAI_BADFLAGS DNS_EAI_BADFLAGS
1070#define EAI_NONAME DNS_EAI_NONAME
1072#define EAI_AGAIN DNS_EAI_AGAIN
1074#define EAI_FAIL DNS_EAI_FAIL
1076#define EAI_NODATA DNS_EAI_NODATA
1078#define EAI_MEMORY DNS_EAI_MEMORY
1080#define EAI_SYSTEM DNS_EAI_SYSTEM
1082#define EAI_SERVICE DNS_EAI_SERVICE
1084#define EAI_SOCKTYPE DNS_EAI_SOCKTYPE
1086#define EAI_FAMILY DNS_EAI_FAMILY
1095#if defined(CONFIG_NET_INTERFACE_NAME)
1096#define IFNAMSIZ CONFIG_NET_INTERFACE_NAME_LEN
1098#define IFNAMSIZ Z_DEVICE_MAX_NAME_LEN
1119#define SO_REUSEADDR 2
1125#define SO_DONTROUTE 5
1127#define SO_BROADCAST 6
1135#define SO_KEEPALIVE 9
1137#define SO_OOBINLINE 10
1139#define SO_PRIORITY 12
1143#define SO_REUSEPORT 15
1146#define SO_RCVLOWAT 18
1148#define SO_SNDLOWAT 19
1154#define SO_RCVTIMEO 20
1156#define SO_SNDTIMEO 21
1159#define SO_BINDTODEVICE 25
1162#define SO_ACCEPTCONN 30
1165#define SO_TIMESTAMPING 37
1167#define SO_PROTOCOL 38
1178#define SCM_TXTIME SO_TXTIME
1188#define TCP_NODELAY 1
1190#define TCP_KEEPIDLE 2
1192#define TCP_KEEPINTVL 3
1194#define TCP_KEEPCNT 4
1228#define IP_MULTICAST_TTL 33
1230#define IP_ADD_MEMBERSHIP 35
1232#define IP_DROP_MEMBERSHIP 36
1251#define IPV6_UNICAST_HOPS 16
1254#define IPV6_MULTICAST_HOPS 18
1257#define IPV6_ADD_MEMBERSHIP 20
1260#define IPV6_DROP_MEMBERSHIP 21
1274#define IPV6_V6ONLY 26
1280#define IPV6_RECVPKTINFO 49
1294#define IPV6_TCLASS 67
1302#define SOMAXCONN 128
1309struct net_socket_register {
1312 bool (*is_supported)(
int family,
int type,
int proto);
1313 int (*handler)(
int family,
int type,
int proto);
1314#if defined(CONFIG_NET_SOCKETS_OBJ_CORE)
1318 const char *
const name;
1322#define NET_SOCKET_DEFAULT_PRIO CONFIG_NET_SOCKETS_PRIORITY_DEFAULT
1324#define NET_SOCKET_GET_NAME(socket_name, prio) \
1325 __net_socket_register_##prio##_##socket_name
1327#if defined(CONFIG_NET_SOCKETS_OBJ_CORE)
1328#define K_OBJ_TYPE_SOCK K_OBJ_TYPE_ID_GEN("SOCK")
1330#define NET_SOCKET_REGISTER_NAME(_name) \
1331 .name = STRINGIFY(_name),
1333#define NET_SOCKET_REGISTER_NAME(_name)
1336#define _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, _is_offloaded) \
1337 static const STRUCT_SECTION_ITERABLE(net_socket_register, \
1338 NET_SOCKET_GET_NAME(socket_name, prio)) = { \
1339 .family = _family, \
1340 .is_offloaded = _is_offloaded, \
1341 .is_supported = _is_supported, \
1342 .handler = _handler, \
1343 NET_SOCKET_REGISTER_NAME(socket_name) \
1346#define NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler) \
1347 _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, false)
1349#define NET_SOCKET_OFFLOAD_REGISTER(socket_name, prio, _family, _is_supported, _handler) \
1350 _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, true)
1358#include <syscalls/socket.h>
static int socket(int family, int type, int proto)
POSIX wrapper for zsock_socket.
Definition: socket.h:833
static int getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen)
POSIX wrapper for zsock_getpeername.
Definition: socket.h:974
int zsock_getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen)
Get peer name.
static int getaddrinfo(const char *host, const char *service, const struct zsock_addrinfo *hints, struct zsock_addrinfo **res)
POSIX wrapper for zsock_getaddrinfo.
Definition: socket.h:988
static int bind(int sock, const struct sockaddr *addr, socklen_t addrlen)
POSIX wrapper for zsock_bind.
Definition: socket.h:857
int zsock_fcntl(int sock, int cmd, int flags)
Control blocking/non-blocking mode of a socket.
static int gethostname(char *buf, size_t len)
POSIX wrapper for zsock_gethostname.
Definition: socket.h:1020
ssize_t zsock_sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
Send data to an arbitrary network address.
int zsock_connect(int sock, const struct sockaddr *addr, socklen_t addrlen)
Connect a socket to a peer network address.
static ssize_t sendmsg(int sock, const struct msghdr *message, int flags)
POSIX wrapper for zsock_sendmsg.
Definition: socket.h:934
int zsock_socketpair(int family, int type, int proto, int *sv)
Create an unnamed pair of connected sockets.
void * zsock_get_context_object(int sock)
Obtain a file descriptor's associated net context.
int zsock_accept(int sock, struct sockaddr *addr, socklen_t *addrlen)
Accept a connection on listening socket.
static int inet_pton(sa_family_t family, const char *src, void *dst)
POSIX wrapper for zsock_inet_pton.
Definition: socket.h:1026
static ssize_t recvfrom(int sock, void *buf, size_t max_len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
POSIX wrapper for zsock_recvfrom.
Definition: socket.h:941
static ssize_t zsock_send(int sock, const void *buf, size_t len, int flags)
Send data to a connected peer.
Definition: socket.h:481
static int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen)
POSIX wrapper for zsock_getsockopt.
Definition: socket.h:960
static int accept(int sock, struct sockaddr *addr, socklen_t *addrlen)
POSIX wrapper for zsock_accept.
Definition: socket.h:876
static int listen(int sock, int backlog)
POSIX wrapper for zsock_listen.
Definition: socket.h:870
static int close(int sock)
POSIX wrapper for zsock_close.
Definition: socket.h:845
int zsock_bind(int sock, const struct sockaddr *addr, socklen_t addrlen)
Bind a socket to a local network address.
int zsock_socket(int family, int type, int proto)
Create a network socket.
int zsock_getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen)
Get various socket options.
static ssize_t recvmsg(int sock, struct msghdr *msg, int flags)
POSIX wrapper for zsock_recvmsg.
Definition: socket.h:948
static int getnameinfo(const struct sockaddr *addr, socklen_t addrlen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags)
POSIX wrapper for zsock_getnameinfo.
Definition: socket.h:1008
static int ioctl(int sock, unsigned long request,...)
POSIX wrapper for zsock_ioctl.
Definition: socket.h:913
void zsock_freeaddrinfo(struct zsock_addrinfo *ai)
Free results returned by zsock_getaddrinfo()
static ssize_t zsock_recv(int sock, void *buf, size_t max_len, int flags)
Receive data from a connected peer.
Definition: socket.h:544
int zsock_gethostname(char *buf, size_t len)
Get local host name.
static int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
POSIX wrapper for zsock_setsockopt.
Definition: socket.h:967
int zsock_getsockname(int sock, struct sockaddr *addr, socklen_t *addrlen)
Get socket name.
static int getsockname(int sock, struct sockaddr *addr, socklen_t *addrlen)
POSIX wrapper for zsock_getsockname.
Definition: socket.h:981
int zsock_poll(struct zsock_pollfd *fds, int nfds, int timeout)
Efficiently poll multiple sockets for events.
const char * zsock_gai_strerror(int errcode)
Convert zsock_getaddrinfo() error code to textual message.
static const char * gai_strerror(int errcode)
POSIX wrapper for zsock_gai_strerror.
Definition: socket.h:1002
int zsock_ioctl(int sock, unsigned long request, va_list ap)
Control underlying socket parameters.
int zsock_shutdown(int sock, int how)
Shutdown socket send/receive operations.
ssize_t zsock_recvmsg(int sock, struct msghdr *msg, int flags)
Receive a message from an arbitrary network address.
ssize_t zsock_recvfrom(int sock, void *buf, size_t max_len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
Receive data from an arbitrary network address.
#define IFNAMSIZ
Network interface name length.
Definition: socket.h:1098
static ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
POSIX wrapper for zsock_sendto.
Definition: socket.h:926
int zsock_setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
Set various socket options.
static ssize_t send(int sock, const void *buf, size_t len, int flags)
POSIX wrapper for zsock_send.
Definition: socket.h:882
static int socketpair(int family, int type, int proto, int sv[2])
POSIX wrapper for zsock_socketpair.
Definition: socket.h:839
ssize_t zsock_sendmsg(int sock, const struct msghdr *msg, int flags)
Send data to an arbitrary network address.
static int connect(int sock, const struct sockaddr *addr, socklen_t addrlen)
POSIX wrapper for zsock_connect.
Definition: socket.h:863
static ssize_t recv(int sock, void *buf, size_t max_len, int flags)
POSIX wrapper for zsock_recv.
Definition: socket.h:888
static int poll(struct zsock_pollfd *fds, int nfds, int timeout)
POSIX wrapper for zsock_poll.
Definition: socket.h:954
static char * zsock_inet_ntop(sa_family_t family, const void *src, char *dst, size_t size)
Convert network address from internal to numeric ASCII form.
Definition: socket.h:690
int zsock_inet_pton(sa_family_t family, const char *src, void *dst)
Convert network address from numeric ASCII form to internal representation.
int zsock_close(int sock)
Close a network socket.
int zsock_listen(int sock, int backlog)
Set up a STREAM socket to accept peer connections.
int zsock_getnameinfo(const struct sockaddr *addr, socklen_t addrlen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags)
Resolve a network address to a domain name or ASCII address.
static char * inet_ntop(sa_family_t family, const void *src, char *dst, size_t size)
POSIX wrapper for zsock_inet_ntop.
Definition: socket.h:1032
int zsock_getaddrinfo(const char *host, const char *service, const struct zsock_addrinfo *hints, struct zsock_addrinfo **res)
Resolve a domain name to one or more network addresses.
static void freeaddrinfo(struct zsock_addrinfo *ai)
POSIX wrapper for zsock_freeaddrinfo.
Definition: socket.h:996
static int shutdown(int sock, int how)
POSIX wrapper for zsock_shutdown.
Definition: socket.h:851
#define DNS_MAX_NAME_SIZE
Max size of the resolved name.
Definition: dns_resolve.h:42
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition: ft8xx_reference_api.h:153
unsigned short int sa_family_t
Socket address family type.
Definition: net_ip.h:164
char * net_addr_ntop(sa_family_t family, const void *src, char *dst, size_t size)
Convert IP address to string form.
size_t socklen_t
Length of a socket address.
Definition: net_ip.h:168
__SIZE_TYPE__ ssize_t
Definition: types.h:28
IPv6 and IPv4 definitions.
flags
Definition: parser.h:96
#define bool
Definition: stdbool.h:13
Interface description structure.
Definition: socket.h:1102
char ifr_name[Z_DEVICE_MAX_NAME_LEN]
Network interface name.
Definition: socket.h:1103
IPv6 address struct.
Definition: net_ip.h:139
Incoming IPv6 packet information.
Definition: socket.h:1288
struct in6_addr ipi6_addr
Destination IPv6 address.
Definition: socket.h:1289
unsigned int ipi6_ifindex
Receive interface index.
Definition: socket.h:1290
IPv4 address struct.
Definition: net_ip.h:151
Incoming IPv4 packet information.
Definition: socket.h:1221
unsigned int ipi_ifindex
Network interface index.
Definition: socket.h:1222
struct in_addr ipi_spec_dst
Local address.
Definition: socket.h:1223
struct in_addr ipi_addr
Header Destination address.
Definition: socket.h:1224
Struct used when joining or leaving a IPv4 multicast group.
Definition: socket.h:1237
int imr_ifindex
Network interface index.
Definition: socket.h:1240
struct in_addr imr_multiaddr
IP multicast group address.
Definition: socket.h:1238
struct in_addr imr_address
IP address of local interface.
Definition: socket.h:1239
Struct used when joining or leaving a IPv6 multicast group.
Definition: socket.h:1265
struct in6_addr ipv6mr_multiaddr
IPv6 multicast address of group.
Definition: socket.h:1267
int ipv6mr_ifindex
Network interface index of the local IPv6 address.
Definition: socket.h:1270
Generic sockaddr struct.
Definition: net_ip.h:347
Definition used when querying address information.
Definition: socket.h:280
struct zsock_addrinfo * ai_next
Pointer to next address entry.
Definition: socket.h:281
int ai_family
Address family of the returned addresses.
Definition: socket.h:283
int ai_flags
Additional options.
Definition: socket.h:282
char * ai_canonname
Optional official name of the host.
Definition: socket.h:288
int ai_protocol
Protocol for addresses, 0 means any protocol.
Definition: socket.h:285
struct sockaddr * ai_addr
Pointer to the address.
Definition: socket.h:287
int ai_socktype
Socket type, for example SOCK_STREAM or SOCK_DGRAM.
Definition: socket.h:284
socklen_t ai_addrlen
Length of the socket address.
Definition: socket.h:286
Definition of the monitored socket/file descriptor.
Definition: socket.h:43
short events
Requested events.
Definition: socket.h:45
int fd
Socket descriptor.
Definition: socket.h:44
short revents
Returned events.
Definition: socket.h:46