Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
socket.h
Go to the documentation of this file.
1
8/*
9 * Copyright (c) 2017-2018 Linaro Limited
10 * Copyright (c) 2021 Nordic Semiconductor
11 *
12 * SPDX-License-Identifier: Apache-2.0
13 */
14
15#ifndef ZEPHYR_INCLUDE_NET_SOCKET_H_
16#define ZEPHYR_INCLUDE_NET_SOCKET_H_
17
25#include <sys/types.h>
26#include <zephyr/types.h>
27#include <zephyr/net/net_ip.h>
31#include <zephyr/sys/fdtable.h>
32#include <stdlib.h>
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
39 int fd;
40 short events;
41 short revents;
42};
43
44/* ZSOCK_POLL* values are compatible with Linux */
46#define ZSOCK_POLLIN 1
48#define ZSOCK_POLLPRI 2
50#define ZSOCK_POLLOUT 4
52#define ZSOCK_POLLERR 8
54#define ZSOCK_POLLHUP 0x10
56#define ZSOCK_POLLNVAL 0x20
57
59#define ZSOCK_MSG_PEEK 0x02
63#define ZSOCK_MSG_TRUNC 0x20
65#define ZSOCK_MSG_DONTWAIT 0x40
67#define ZSOCK_MSG_WAITALL 0x100
68
69/* Well-known values, e.g. from Linux man 2 shutdown:
70 * "The constants SHUT_RD, SHUT_WR, SHUT_RDWR have the value 0, 1, 2,
71 * respectively". Some software uses numeric values.
72 */
74#define ZSOCK_SHUT_RD 0
76#define ZSOCK_SHUT_WR 1
78#define ZSOCK_SHUT_RDWR 2
79
83#define SOL_TLS 282
84
94#define TLS_SEC_TAG_LIST 1
99#define TLS_HOSTNAME 2
105#define TLS_CIPHERSUITE_LIST 3
110#define TLS_CIPHERSUITE_USED 4
121#define TLS_PEER_VERIFY 5
130#define TLS_DTLS_ROLE 6
136#define TLS_ALPN_LIST 7
141#define TLS_DTLS_HANDSHAKE_TIMEOUT_MIN 8
142#define TLS_DTLS_HANDSHAKE_TIMEOUT_MAX 9
143
148#define TLS_CERT_NOCOPY 10
159#define TLS_NATIVE 11
164#define TLS_SESSION_CACHE 12
168#define TLS_SESSION_CACHE_PURGE 13
180#define TLS_DTLS_CID 14
190#define TLS_DTLS_CID_STATUS 15
195#define TLS_DTLS_CID_VALUE 16
202#define TLS_DTLS_PEER_CID_VALUE 17
205/* Valid values for TLS_PEER_VERIFY option */
206#define TLS_PEER_VERIFY_NONE 0
207#define TLS_PEER_VERIFY_OPTIONAL 1
208#define TLS_PEER_VERIFY_REQUIRED 2
210/* Valid values for TLS_DTLS_ROLE option */
211#define TLS_DTLS_ROLE_CLIENT 0
212#define TLS_DTLS_ROLE_SERVER 1
214/* Valid values for TLS_CERT_NOCOPY option */
215#define TLS_CERT_NOCOPY_NONE 0
216#define TLS_CERT_NOCOPY_OPTIONAL 1
218/* Valid values for TLS_SESSION_CACHE option */
219#define TLS_SESSION_CACHE_DISABLED 0
220#define TLS_SESSION_CACHE_ENABLED 1
222/* Valid values for TLS_DTLS_CID option */
223#define TLS_DTLS_CID_DISABLED 0
224#define TLS_DTLS_CID_SUPPORTED 1
225#define TLS_DTLS_CID_ENABLED 2
226
227/* Valid values for TLS_DTLS_CID_STATUS option */
228#define TLS_DTLS_CID_STATUS_DISABLED 0
229#define TLS_DTLS_CID_STATUS_DOWNLINK 1
230#define TLS_DTLS_CID_STATUS_UPLINK 2
231#define TLS_DTLS_CID_STATUS_BIDIRECTIONAL 3
232
242
243 struct sockaddr _ai_addr;
244 char _ai_canonname[DNS_MAX_NAME_SIZE + 1];
245};
246
283__syscall void *zsock_get_context_object(int sock);
284
302__syscall int zsock_socket(int family, int type, int proto);
303
316__syscall int zsock_socketpair(int family, int type, int proto, int *sv);
317
329__syscall int zsock_close(int sock);
330
344__syscall int zsock_shutdown(int sock, int how);
345
358__syscall int zsock_bind(int sock, const struct sockaddr *addr,
359 socklen_t addrlen);
360
373__syscall int zsock_connect(int sock, const struct sockaddr *addr,
374 socklen_t addrlen);
375
388__syscall int zsock_listen(int sock, int backlog);
389
402__syscall int zsock_accept(int sock, struct sockaddr *addr, socklen_t *addrlen);
403
416__syscall ssize_t zsock_sendto(int sock, const void *buf, size_t len,
417 int flags, const struct sockaddr *dest_addr,
418 socklen_t addrlen);
419
432static inline ssize_t zsock_send(int sock, const void *buf, size_t len,
433 int flags)
434{
435 return zsock_sendto(sock, buf, len, flags, NULL, 0);
436}
437
450__syscall ssize_t zsock_sendmsg(int sock, const struct msghdr *msg,
451 int flags);
452
465__syscall ssize_t zsock_recvfrom(int sock, void *buf, size_t max_len,
466 int flags, struct sockaddr *src_addr,
467 socklen_t *addrlen);
468
481static inline ssize_t zsock_recv(int sock, void *buf, size_t max_len,
482 int flags)
483{
484 return zsock_recvfrom(sock, buf, max_len, flags, NULL, NULL);
485}
486
499__syscall int zsock_fcntl(int sock, int cmd, int flags);
500
518__syscall int zsock_ioctl(int sock, unsigned long request, va_list ap);
519
533__syscall int zsock_poll(struct zsock_pollfd *fds, int nfds, int timeout);
534
550__syscall int zsock_getsockopt(int sock, int level, int optname,
551 void *optval, socklen_t *optlen);
552
568__syscall int zsock_setsockopt(int sock, int level, int optname,
569 const void *optval, socklen_t optlen);
570
583__syscall int zsock_getpeername(int sock, struct sockaddr *addr,
584 socklen_t *addrlen);
585
598__syscall int zsock_getsockname(int sock, struct sockaddr *addr,
599 socklen_t *addrlen);
600
613__syscall int zsock_gethostname(char *buf, size_t len);
614
627static inline char *zsock_inet_ntop(sa_family_t family, const void *src,
628 char *dst, size_t size)
629{
630 return net_addr_ntop(family, src, dst, size);
631}
632
645__syscall int zsock_inet_pton(sa_family_t family, const char *src, void *dst);
646
648__syscall int z_zsock_getaddrinfo_internal(const char *host,
649 const char *service,
650 const struct zsock_addrinfo *hints,
651 struct zsock_addrinfo *res);
654/* Flags for getaddrinfo() hints. */
655
657#define AI_PASSIVE 0x1
659#define AI_CANONNAME 0x2
661#define AI_NUMERICHOST 0x4
663#define AI_V4MAPPED 0x8
665#define AI_ALL 0x10
667#define AI_ADDRCONFIG 0x20
669#define AI_NUMERICSERV 0x400
670
683int zsock_getaddrinfo(const char *host, const char *service,
684 const struct zsock_addrinfo *hints,
685 struct zsock_addrinfo **res);
686
700
713const char *zsock_gai_strerror(int errcode);
714
716#define NI_NUMERICHOST 1
718#define NI_NUMERICSERV 2
720#define NI_NOFQDN 4
722#define NI_NAMEREQD 8
724#define NI_DGRAM 16
725
726/* POSIX extensions */
727
729#ifndef NI_MAXHOST
730#define NI_MAXHOST 64
731#endif
732
745int zsock_getnameinfo(const struct sockaddr *addr, socklen_t addrlen,
746 char *host, socklen_t hostlen,
747 char *serv, socklen_t servlen, int flags);
748
749#if defined(CONFIG_NET_SOCKETS_POSIX_NAMES)
750
751#define pollfd zsock_pollfd
752
754static inline int socket(int family, int type, int proto)
755{
756 return zsock_socket(family, type, proto);
757}
758
760static inline int socketpair(int family, int type, int proto, int sv[2])
761{
762 return zsock_socketpair(family, type, proto, sv);
763}
764
766static inline int close(int sock)
767{
768 return zsock_close(sock);
769}
770
772static inline int shutdown(int sock, int how)
773{
774 return zsock_shutdown(sock, how);
775}
776
778static inline int bind(int sock, const struct sockaddr *addr, socklen_t addrlen)
779{
780 return zsock_bind(sock, addr, addrlen);
781}
782
784static inline int connect(int sock, const struct sockaddr *addr,
785 socklen_t addrlen)
786{
787 return zsock_connect(sock, addr, addrlen);
788}
789
791static inline int listen(int sock, int backlog)
792{
793 return zsock_listen(sock, backlog);
794}
795
797static inline int accept(int sock, struct sockaddr *addr, socklen_t *addrlen)
798{
799 return zsock_accept(sock, addr, addrlen);
800}
801
803static inline ssize_t send(int sock, const void *buf, size_t len, int flags)
804{
805 return zsock_send(sock, buf, len, flags);
806}
807
809static inline ssize_t recv(int sock, void *buf, size_t max_len, int flags)
810{
811 return zsock_recv(sock, buf, max_len, flags);
812}
813
814/*
815 * Need this wrapper because newer GCC versions got too smart and "typecheck"
816 * even macros, so '#define fcntl zsock_fcntl' leads to error.
817 */
818static inline int zsock_fcntl_wrapper(int sock, int cmd, ...)
819{
820 va_list args;
821 int flags;
822
823 va_start(args, cmd);
824 flags = va_arg(args, int);
825 va_end(args);
826 return zsock_fcntl(sock, cmd, flags);
827}
828
829#define fcntl zsock_fcntl_wrapper
830
831static inline int ioctl(int sock, unsigned long request, ...)
832{
833 int ret;
834 va_list args;
835
836 va_start(args, request);
837 ret = zsock_ioctl(sock, request, args);
838 va_end(args);
839
840 return ret;
841}
842
844static inline ssize_t sendto(int sock, const void *buf, size_t len, int flags,
845 const struct sockaddr *dest_addr,
846 socklen_t addrlen)
847{
848 return zsock_sendto(sock, buf, len, flags, dest_addr, addrlen);
849}
850
852static inline ssize_t sendmsg(int sock, const struct msghdr *message,
853 int flags)
854{
855 return zsock_sendmsg(sock, message, flags);
856}
857
859static inline ssize_t recvfrom(int sock, void *buf, size_t max_len, int flags,
860 struct sockaddr *src_addr, socklen_t *addrlen)
861{
862 return zsock_recvfrom(sock, buf, max_len, flags, src_addr, addrlen);
863}
864
866static inline int poll(struct zsock_pollfd *fds, int nfds, int timeout)
867{
868 return zsock_poll(fds, nfds, timeout);
869}
870
872static inline int getsockopt(int sock, int level, int optname,
873 void *optval, socklen_t *optlen)
874{
875 return zsock_getsockopt(sock, level, optname, optval, optlen);
876}
877
879static inline int setsockopt(int sock, int level, int optname,
880 const void *optval, socklen_t optlen)
881{
882 return zsock_setsockopt(sock, level, optname, optval, optlen);
883}
884
886static inline int getpeername(int sock, struct sockaddr *addr,
887 socklen_t *addrlen)
888{
889 return zsock_getpeername(sock, addr, addrlen);
890}
891
893static inline int getsockname(int sock, struct sockaddr *addr,
894 socklen_t *addrlen)
895{
896 return zsock_getsockname(sock, addr, addrlen);
897}
898
900static inline int getaddrinfo(const char *host, const char *service,
901 const struct zsock_addrinfo *hints,
902 struct zsock_addrinfo **res)
903{
904 return zsock_getaddrinfo(host, service, hints, res);
905}
906
908static inline void freeaddrinfo(struct zsock_addrinfo *ai)
909{
911}
912
914static inline const char *gai_strerror(int errcode)
915{
916 return zsock_gai_strerror(errcode);
917}
918
920static inline int getnameinfo(const struct sockaddr *addr, socklen_t addrlen,
921 char *host, socklen_t hostlen,
922 char *serv, socklen_t servlen, int flags)
923{
924 return zsock_getnameinfo(addr, addrlen, host, hostlen,
925 serv, servlen, flags);
926}
927
928#define addrinfo zsock_addrinfo
929
931static inline int gethostname(char *buf, size_t len)
932{
933 return zsock_gethostname(buf, len);
934}
935
937static inline int inet_pton(sa_family_t family, const char *src, void *dst)
938{
939 return zsock_inet_pton(family, src, dst);
940}
941
943static inline char *inet_ntop(sa_family_t family, const void *src, char *dst,
944 size_t size)
945{
946 return zsock_inet_ntop(family, src, dst, size);
947}
948
950#define POLLIN ZSOCK_POLLIN
952#define POLLOUT ZSOCK_POLLOUT
954#define POLLERR ZSOCK_POLLERR
956#define POLLHUP ZSOCK_POLLHUP
958#define POLLNVAL ZSOCK_POLLNVAL
959
961#define MSG_PEEK ZSOCK_MSG_PEEK
963#define MSG_TRUNC ZSOCK_MSG_TRUNC
965#define MSG_DONTWAIT ZSOCK_MSG_DONTWAIT
967#define MSG_WAITALL ZSOCK_MSG_WAITALL
968
970#define SHUT_RD ZSOCK_SHUT_RD
972#define SHUT_WR ZSOCK_SHUT_WR
974#define SHUT_RDWR ZSOCK_SHUT_RDWR
975
977#define EAI_BADFLAGS DNS_EAI_BADFLAGS
979#define EAI_NONAME DNS_EAI_NONAME
981#define EAI_AGAIN DNS_EAI_AGAIN
983#define EAI_FAIL DNS_EAI_FAIL
985#define EAI_NODATA DNS_EAI_NODATA
987#define EAI_MEMORY DNS_EAI_MEMORY
989#define EAI_SYSTEM DNS_EAI_SYSTEM
991#define EAI_SERVICE DNS_EAI_SERVICE
993#define EAI_SOCKTYPE DNS_EAI_SOCKTYPE
995#define EAI_FAMILY DNS_EAI_FAMILY
996#endif /* defined(CONFIG_NET_SOCKETS_POSIX_NAMES) */
997
998#if defined(CONFIG_NET_INTERFACE_NAME)
999#define IFNAMSIZ CONFIG_NET_INTERFACE_NAME_LEN
1000#else
1001#define IFNAMSIZ Z_DEVICE_MAX_NAME_LEN
1002#endif
1003
1005struct ifreq {
1006 char ifr_name[IFNAMSIZ]; /* Interface name */
1007};
1008
1010#define SOL_SOCKET 1
1011
1012/* Socket options for SOL_SOCKET level */
1013
1015#define SO_DEBUG 1
1017#define SO_REUSEADDR 2
1019#define SO_TYPE 3
1021#define SO_ERROR 4
1023#define SO_DONTROUTE 5
1025#define SO_BROADCAST 6
1026
1028#define SO_SNDBUF 7
1030#define SO_RCVBUF 8
1031
1033#define SO_KEEPALIVE 9
1035#define SO_OOBINLINE 10
1037#define SO_LINGER 13
1039#define SO_REUSEPORT 15
1040
1042#define SO_RCVLOWAT 18
1044#define SO_SNDLOWAT 19
1045
1050#define SO_RCVTIMEO 20
1052#define SO_SNDTIMEO 21
1053
1055#define SO_BINDTODEVICE 25
1056
1058#define SO_ACCEPTCONN 30
1059
1061#define SO_TIMESTAMPING 37
1063#define SO_PROTOCOL 38
1064
1066#define SO_DOMAIN 39
1067
1070/* Socket options for IPPROTO_TCP level */
1072#define TCP_NODELAY 1
1073
1074/* Socket options for IPPROTO_IP level */
1076#define IP_TOS 1
1077
1078/* Socket options for IPPROTO_IPV6 level */
1080#define IPV6_V6ONLY 26
1081
1083#define IPV6_TCLASS 67
1084
1086#define SO_PRIORITY 12
1087
1089#define SO_TXTIME 61
1090#define SCM_TXTIME SO_TXTIME
1091
1092/* Socket options for SOCKS5 proxy */
1094#define SO_SOCKS5 60
1095
1097#define SOMAXCONN 128
1098
1103struct net_socket_register {
1104 int family;
1105 bool is_offloaded;
1106 bool (*is_supported)(int family, int type, int proto);
1107 int (*handler)(int family, int type, int proto);
1108};
1109
1110#define NET_SOCKET_DEFAULT_PRIO CONFIG_NET_SOCKETS_PRIORITY_DEFAULT
1111
1112#define NET_SOCKET_GET_NAME(socket_name, prio) \
1113 __net_socket_register_##prio##_##socket_name
1114
1115#define _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, _is_offloaded) \
1116 static const STRUCT_SECTION_ITERABLE(net_socket_register, \
1117 NET_SOCKET_GET_NAME(socket_name, prio)) = { \
1118 .family = _family, \
1119 .is_offloaded = _is_offloaded, \
1120 .is_supported = _is_supported, \
1121 .handler = _handler, \
1122 }
1123
1124#define NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler) \
1125 _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, false)
1126
1127#define NET_SOCKET_OFFLOAD_REGISTER(socket_name, prio, _family, _is_supported, _handler) \
1128 _NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, true)
1129
1132#ifdef __cplusplus
1133}
1134#endif
1135
1136#include <syscalls/socket.h>
1137
1142#endif /* ZEPHYR_INCLUDE_NET_SOCKET_H_ */
DNS resolving library.
static int socket(int family, int type, int proto)
POSIX wrapper for zsock_socket.
Definition: socket.h:754
static int getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen)
POSIX wrapper for zsock_getpeername.
Definition: socket.h:886
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:900
static int bind(int sock, const struct sockaddr *addr, socklen_t addrlen)
POSIX wrapper for zsock_bind.
Definition: socket.h:778
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:931
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:852
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:937
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:859
static ssize_t zsock_send(int sock, const void *buf, size_t len, int flags)
Send data to a connected peer.
Definition: socket.h:432
static int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen)
POSIX wrapper for zsock_getsockopt.
Definition: socket.h:872
static int zsock_fcntl_wrapper(int sock, int cmd,...)
Definition: socket.h:818
static int accept(int sock, struct sockaddr *addr, socklen_t *addrlen)
POSIX wrapper for zsock_accept.
Definition: socket.h:797
static int listen(int sock, int backlog)
POSIX wrapper for zsock_listen.
Definition: socket.h:791
static int close(int sock)
POSIX wrapper for zsock_close.
Definition: socket.h:766
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 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:920
static int ioctl(int sock, unsigned long request,...)
Definition: socket.h:831
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:481
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:879
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:893
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:914
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_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
Definition: socket.h:1001
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:844
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:803
static int socketpair(int family, int type, int proto, int sv[2])
POSIX wrapper for zsock_socketpair.
Definition: socket.h:760
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:784
static ssize_t recv(int sock, void *buf, size_t max_len, int flags)
POSIX wrapper for zsock_recv.
Definition: socket.h:809
static int poll(struct zsock_pollfd *fds, int nfds, int timeout)
POSIX wrapper for zsock_poll.
Definition: socket.h:866
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:627
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:943
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:908
static int shutdown(int sock, int how)
POSIX wrapper for zsock_shutdown.
Definition: socket.h:772
#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:1005
char ifr_name[Z_DEVICE_MAX_NAME_LEN]
Definition: socket.h:1006
Definition: net_ip.h:238
Generic sockaddr struct.
Definition: net_ip.h:347
Definition: socket.h:233
struct zsock_addrinfo * ai_next
Definition: socket.h:234
int ai_family
Definition: socket.h:236
int ai_flags
Definition: socket.h:235
char * ai_canonname
Definition: socket.h:241
int ai_protocol
Definition: socket.h:238
struct sockaddr * ai_addr
Definition: socket.h:240
int ai_socktype
Definition: socket.h:237
socklen_t ai_addrlen
Definition: socket.h:239
Definition: socket.h:38
short events
Definition: socket.h:40
int fd
Definition: socket.h:39
short revents
Definition: socket.h:41