WL865E4-P  36.07.001
m2mb_socket.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
27 /* Global declarations ==========================================================================*/
28 #ifndef M2M_M2MB_SOCKET_API_H
29 #define M2M_M2MB_SOCKET_API_H
30 
31 #include <stdint.h>
32 #include <string.h>
33 #include "m2mb_types.h"
45 /*-----------------------------------------------------------------------------------------------*/
46 #define M2MB_SOCKET_BSD_INVALID_SOCKET (M2MB_SOCKET_BSD_SOCKET)(~0)
49 #define M2MB_SOCKET_BSD_SOCK_STREAM 1
50 #define M2MB_SOCKET_BSD_SOCK_DGRAM 2
51 #define M2MB_SOCKET_BSD_SOCK_RAW 3
54 #define M2MB_SOCKET_BSD_AF_UNSPEC 0
55 #define M2MB_SOCKET_BSD_AF_INET 2
56 #define M2MB_SOCKET_BSD_AF_INET6 3
57 #define M2MB_SOCKET_BSD_AF_INET_DUAL46 4
58 #define M2MB_SOCKET_BSD_AF_PACKET 5
61 #define M2MB_SOCKET_BSD_PF_UNSPEC 0
62 #define M2MB_SOCKET_BSD_PF_INET 2
65 #define M2MB_SOCKET_BSD_IPPROTO_DFLT 0
66 #define M2MB_SOCKET_BSD_IPPROTO_TCP 6
67 #define M2MB_SOCKET_BSD_IPPROTO_UDP 17
68 #define M2MB_SOCKET_BSD_IPPROTO_ICMP 1
70 /* ======================================================================= */
71 
73 #define M2MB_SOCKET_BSD_SOL_SOCKET (-1)
75 #define M2MB_SOCKET_BSD_SO_DEBUG 0x00001
76 #define M2MB_SOCKET_BSD_SO_ACCEPTCONN 0x00002
77 #define M2MB_SOCKET_BSD_SO_REUSEADDR 0x00004
78 #define M2MB_SOCKET_BSD_SO_KEEPALIVE 0x00008
79 #define M2MB_SOCKET_BSD_SO_DONTROUTE 0x00010
80 #define M2MB_SOCKET_BSD_SO_BROADCAST 0x00020
81 #define M2MB_SOCKET_BSD_SO_USELOOPBACK 0x00040
82 #define M2MB_SOCKET_BSD_SO_LINGER 0x00080
83 #define M2MB_SOCKET_BSD_SO_OOBINLINE 0x00100
84 #define M2MB_SOCKET_BSD_SO_DONTLINGER (INT32)(~M2MB_SOCKET_BSD_SO_LINGER) /* Dont Linger, Not supported */
85 #define M2MB_SOCKET_BSD_SO_TCPSACK 0x00200
86 #define M2MB_SOCKET_BSD_SO_WINSCALE 0x00400
87 #define M2MB_SOCKET_BSD_SO_TIMESTAMP 0x00800
88 #define M2MB_SOCKET_BSD_SO_BIGCWND 0x01000
89 #define M2MB_SOCKET_BSD_SO_HDRINCL 0x02000
90 #define M2MB_SOCKET_BSD_SO_NOSLOWSTART 0x04000
91 #define M2MB_SOCKET_BSD_SO_FULLMSS 0x08000
92 #define M2MB_SOCKET_BSD_SO_SNDBUF 0x1001
93 #define M2MB_SOCKET_BSD_SO_RCVBUF 0x1002
94 #define M2MB_SOCKET_BSD_SO_SNDLOWAT 0x1003
95 #define M2MB_SOCKET_BSD_SO_RCVLOWAT 0x1004
96 #define M2MB_SOCKET_BSD_SO_SNDTIMEO 0x1005
97 #define M2MB_SOCKET_BSD_SO_RCVTIMEO 0x1006
98 #define M2MB_SOCKET_BSD_SO_ERROR 0x1007
99 #define M2MB_SOCKET_BSD_SO_TYPE 0x1008
100 #define M2MB_SOCKET_BSD_SO_HOPCNT 0x1009
101 #define M2MB_SOCKET_BSD_SO_MAXMSG 0x1010
102 #define M2MB_SOCKET_BSD_SO_RXDATA 0x1011
103 #define M2MB_SOCKET_BSD_SO_TXDATA 0x1012
104 #define M2MB_SOCKET_BSD_SO_MYADDR 0x1013
105 #define M2MB_SOCKET_BSD_SO_NBIO 0x1014
106 #define M2MB_SOCKET_BSD_SO_BIO 0x1015
107 #define M2MB_SOCKET_BSD_SO_NONBLOCK 0x1016
108 #define M2MB_SOCKET_BSD_SO_CALLBACK 0x1017
109 #define M2MB_SOCKET_BSD_SO_UDPCALLBACK 0x1019
111 #define M2MB_SOCKET_BSD_IPPROTO_IP 0
112 #define M2MB_SOCKET_BSD_IP_HDRINCL 2
113 #define M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP 12
114 #define M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP 13
115 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_IF 80
116 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_HOPS 81
117 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_LOOP 82
118 #define M2MB_SOCKET_BSD_IPV6_JOIN_GROUP 83
119 #define M2MB_SOCKET_BSD_IPV6_LEAVE_GROUP 84
121 #define M2MB_SOCKET_BSD_IP_OPTIONS 1
122 #define M2MB_SOCKET_BSD_IP_TOS 3
123 #define M2MB_SOCKET_BSD_IP_TTL_OPT 4
124 #define M2MB_SOCKET_BSD_IPV6_SCOPEID 14
125 #define M2MB_SOCKET_BSD_IPV6_UNICAST_HOPS 15
126 #define M2MB_SOCKET_BSD_IPV6_TCLASS 16
128 #define M2MB_SOCKET_BSD_TCP_NODELAY 0x01
129 #define M2MB_SOCKET_BSD_TCP_KEEPALIVE 0x03
132 /* ======================================================================= */
133 
135 #define M2MB_SOCKET_BSD_INADDR_ANY (UINT32) 0x00000000
137 #define M2MB_SOCKET_BSD_INADDR_LOOPBACK (UINT32) 0x7f000001
139 #define M2MB_SOCKET_BSD_INADDR_BROADCAST (UINT32) 0xffffffff
142 /* ======================================================================= */
143 
145 #define M2MB_SOCKET_BSD_SHUT_RD 0x00
146 #define M2MB_SOCKET_BSD_SHUT_WR 0x01
147 #define M2MB_SOCKET_BSD_SHUT_RDWR 0x02
149 /* ======================================================================= */
150 
152 #define M2MB_SOCKET_BSD_FIONREAD 0
153 #define M2MB_SOCKET_BSD_FIONBIO 1
156 /* ======================================================================= */
157 
160 #define M2MB_SOCKET_BSD_SOCKET_ERROR (-1)
161 #define M2MB_SOCKET_BSD_SOCKNOERROR 0
162 #define M2MB_SOCKET_BSD_ENOBUFS 1
163 #define M2MB_SOCKET_BSD_ETIMEDOUT 2
164 #define M2MB_SOCKET_BSD_EISCONN 3
165 #define M2MB_SOCKET_BSD_EOPNOTSUPP 4
166 #define M2MB_SOCKET_BSD_ECONNABORTED 5
167 #define M2MB_SOCKET_BSD_EWOULDBLOCK 6
168 #define M2MB_SOCKET_BSD_ECONNREFUSED 7
169 #define M2MB_SOCKET_BSD_ECONNRESET 8
170 #define M2MB_SOCKET_BSD_ENOTCONN 9
171 #define M2MB_SOCKET_BSD_EBADF 9
172 #define M2MB_SOCKET_BSD_EALREADY 10
173 #define M2MB_SOCKET_BSD_EINVAL 11
174 #define M2MB_SOCKET_BSD_EMSGSIZE 12
175 #define M2MB_SOCKET_BSD_EPIPE 13
176 #define M2MB_SOCKET_BSD_EDESTADDRREQ 14
177 #define M2MB_SOCKET_BSD_ESHUTDOWN 15
178 #define M2MB_SOCKET_BSD_ENOPROTOOPT 16
179 #define M2MB_SOCKET_BSD_EHAVEOOB 17
180 #define M2MB_SOCKET_BSD_ENOMEM 18
181 #define M2MB_SOCKET_BSD_EADDRNOTAVAIL 19
182 #define M2MB_SOCKET_BSD_EADDRINUSE 20
183 #define M2MB_SOCKET_BSD_EAFNOSUPPORT 21
184 #define M2MB_SOCKET_BSD_EINPROGRESS 22
185 #define M2MB_SOCKET_BSD_ELOWER 23
186 #define M2MB_SOCKET_BSD_ENOTSOCK 24
187 #define M2MB_SOCKET_BSD_EIEIO 27
188 #define M2MB_SOCKET_BSD_ETOOMANYREFS 28
189 #define M2MB_SOCKET_BSD_EFAULT 29
190 #define M2MB_SOCKET_BSD_ENETUNREACH 30
192 /* ======================================================================= */
193 
196 #define M2MB_SOCKET_HOST_NOT_FOUND 210
197 #define M2MB_SOCKET_NO_DATA 211
198 #define M2MB_SOCKET_NO_RECOVERY 212
199 #define M2MB_SOCKET_TRY_AGAIN 213
200 #define M2MB_SOCKET_ERANGE 214
201 
202 
206 #define M2MB_SOCKET_MSG_OOB 0x1
207 #define M2MB_SOCKET_MSG_PEEK 0x2
208 #define M2MB_SOCKET_MSG_DONTROUTE 0x4
209 #define M2MB_SOCKET_MSG_DONTWAIT 0x20
210 #define M2MB_SOCKET_MSG_ZEROCOPYSEND 0x1000
213 #define M2MB_SOCKET_BSD_FD_SETSIZE 32
214 
219 #define M2MB_SOCKET_MAX_SUPPORTED 16
220 
224 #define MAKEIP(a,b,c,d) ((ULONG)d<<24 | (ULONG)c << 16 | (ULONG)b << 8 | (ULONG)a )
225 
226 /* Global typedefs ==============================================================================*/
227 /* Socket identifier */
229 
232 {
236 
239 {
244 
245 /* ======================================================================= */
246 
247 /* Structure for storing IPV4 address. */
249 {
254 {
259 {
260  union
261  {
265  }v6_v;
266 #define addr8_s v6_v.addr8
267 #define addr16_s v6_v.addr16
268 #define addr32_s v6_v.addr32
270 
273 {
280 
281 
284 {
292 
295 {
302 
305 {
309 
317 {
324 typedef struct M2MB_IP6_ADDR
325 {
326 
327  UINT8 s_addr[16];
332 typedef unsigned long M2MB_IP4_ADDR_T;
336 typedef struct M2MB_IP_MREQ
337 {
343 
347 typedef struct M2MB_IP46_ADDR
348 {
351  union
352  {
357  } a;
360 #define Addr4 a.addr4
361 #define Addr6 a.addr6
363 
368  void *so,
371  void *packet,
374  INT32 errcode
376  );
377 
382  void *so,
385  void *packet,
388  INT32 errcode,
391  void *from,
394  INT32 family
396  );
397 /* ======================================================================== */
398 /*-----------------------------------------------------------------------------------------------*/
421 #define m2mb_socket_bsd_htonl(l) (((((l) >> 24) & 0x000000ff)) | \
422  ((((l) >> 8) & 0x0000ff00)) | \
423  (((l) & 0x0000ff00) << 8) | \
424  (((l) & 0x000000ff) << 24))
425 /*-----------------------------------------------------------------------------------------------*/
448 #define m2mb_socket_bsd_ntohl(l) m2mb_socket_bsd_htonl(l)
449 /*-----------------------------------------------------------------------------------------------*/
473 #define m2mb_socket_bsd_htons(s) ((((s) >> 8) & 0xff) | (((s) << 8) & 0xff00))
474 /*-----------------------------------------------------------------------------------------------*/
498 #define m2mb_socket_bsd_ntohs(s) m2mb_socket_bsd_htons(s)
499 /*-----------------------------------------------------------------------------------------------*/
521 inline VOID
523 {
524  a[0] = m2mb_socket_bsd_htonl(a[0]);
525  a[1] = m2mb_socket_bsd_htonl(a[1]);
526  a[2] = m2mb_socket_bsd_htonl(a[2]);
527  a[3] = m2mb_socket_bsd_htonl(a[3]);
528 }
529 
530 
531 /* Global functions =============================================================================*/
532 /* ======================================================================= */
533 
534 /* M2M BSD socket interface */
535 
536 /*-----------------------------------------------------------------------------------------------*/
612 /*-----------------------------------------------------------------------------------------------*/
613 
615 
616 /*-----------------------------------------------------------------------------------------------*/
685 /*-----------------------------------------------------------------------------------------------*/
687 
688 /*-----------------------------------------------------------------------------------------------*/
756 /*-----------------------------------------------------------------------------------------------*/
758 
759 /*-----------------------------------------------------------------------------------------------*/
817 /*-----------------------------------------------------------------------------------------------*/
819 
820 /*-----------------------------------------------------------------------------------------------*/
882 /*-----------------------------------------------------------------------------------------------*/
884  struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen );
885 
886 /*-----------------------------------------------------------------------------------------------*/
923 /*-----------------------------------------------------------------------------------------------*/
925 
926 /*-----------------------------------------------------------------------------------------------*/
993 /*-----------------------------------------------------------------------------------------------*/
995 
996 /*-----------------------------------------------------------------------------------------------*/
1071 /*-----------------------------------------------------------------------------------------------*/
1073 
1074 /*-----------------------------------------------------------------------------------------------*/
1145 /*-----------------------------------------------------------------------------------------------*/
1146 INT32 m2mb_socket_bsd_recv( M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags );
1147 
1148 /*-----------------------------------------------------------------------------------------------*/
1226 /*-----------------------------------------------------------------------------------------------*/
1228  struct M2MB_SOCKET_BSD_SOCKADDR *from, INT32 *fromlen );
1229 
1230 
1231 /*-----------------------------------------------------------------------------------------------*/
1301 /*-----------------------------------------------------------------------------------------------*/
1302 INT32 m2mb_socket_bsd_send( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags );
1303 
1304 /*-----------------------------------------------------------------------------------------------*/
1380 /*-----------------------------------------------------------------------------------------------*/
1381 INT32 m2mb_socket_bsd_send_to( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags,
1382  const struct M2MB_SOCKET_BSD_SOCKADDR *to, INT32 tolen );
1383 
1384 /*-----------------------------------------------------------------------------------------------*/
1460 /*-----------------------------------------------------------------------------------------------*/
1461 INT32 m2mb_socket_bsd_get_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen );
1462 
1463 /*-----------------------------------------------------------------------------------------------*/
1537 /*-----------------------------------------------------------------------------------------------*/
1538 INT32 m2mb_socket_bsd_set_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, const void *optval, INT32 optlen );
1539 
1540 /*-----------------------------------------------------------------------------------------------*/
1570 /*-----------------------------------------------------------------------------------------------*/
1571 
1573 
1574 /*-----------------------------------------------------------------------------------------------*/
1645 /*-----------------------------------------------------------------------------------------------*/
1647  M2MB_SOCKET_BSD_FD_SET_T *exceptfds, const struct M2MB_SOCKET_BSD_TIMEVAL *timeout );
1648 
1649 /*-----------------------------------------------------------------------------------------------*/
1710 /*-----------------------------------------------------------------------------------------------*/
1712 
1713 /*-----------------------------------------------------------------------------------------------*/
1777 
1778 /*-----------------------------------------------------------------------------------------------*/
1841 
1842 /*-----------------------------------------------------------------------------------------------*/
1905 
1906 /*-----------------------------------------------------------------------------------------------*/
1972 
1973 /*-----------------------------------------------------------------------------------------------*/
2013 const CHAR *m2mb_socket_bsd_inet_ntop( INT32 af, const void *src, CHAR *dst, SIZE_T size );
2014 
2015 /*-----------------------------------------------------------------------------------------------*/
2056 INT32 m2mb_socket_bsd_inet_pton( INT32 af, const CHAR *src, void *dst );
2057 
2058 /*-----------------------------------------------------------------------------------------------*/
2098  struct M2MB_SOCKET_BSD_HOSTENT *ret, CHAR *buf, SIZE_T buflen,
2099  struct M2MB_SOCKET_BSD_HOSTENT **result, INT32 *h_errnop, UINT8 cid );
2100 
2101 /*-----------------------------------------------------------------------------------------------*/
2128 /*-----------------------------------------------------------------------------------------------*/
2166 INT32 m2mb_socket_TCP_Keepalive_Set(INT32 idle_Time, INT32 resp_Timeout);
2167 /*-----------------------------------------------------------------------------------------------*/
2201 INT32 m2mb_socket_TCP_Keepalive_Get(INT32 *idle_Time, INT32 *resp_Timeout);
2202 
2205 #endif /* M2M_M2MB_SOCKET_API_H */
struct M2MB_SOCKET_BSD_IN_ADDR M2MB_SOCKET_BSD_IN_ADDR_T
INT32 m2mb_socket_bsd_fd_zero_func(M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
unsigned char UINT8
Definition: m2mb_types.h:83
INT32 m2mb_socket_bsd_listen(M2MB_SOCKET_BSD_SOCKET s, INT32 backlog)
Listen for connections on a socket.
struct M2MB_SOCKET_BSD_IPV6_ADDR sin6_addr
Definition: m2mb_socket.h:289
UINT8 s_addr[16]
Definition: m2mb_socket.h:327
INT32 m2mb_socket_bsd_connect(M2MB_SOCKET_BSD_SOCKET s, const struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
connect a socket
INT32(* M2MB_NET_TCP_ZEROCOPY_CB)(void *so, void *packet, INT32 errcode)
TCP zero-copy application RX callback handler.
Definition: m2mb_socket.h:367
const CHAR * m2mb_socket_bsd_inet_ntop(INT32 af, const void *src, CHAR *dst, SIZE_T size)
Converts IPv4 and IPv6 addresses from binary to text form.
unsigned long M2MB_IP4_ADDR_T
IPv4 Internet address.
Definition: m2mb_socket.h:332
INT32 m2mb_socket_bsd_close(M2MB_SOCKET_BSD_SOCKET s)
Close a socket.
Structure for storing IPV6.
Definition: m2mb_socket.h:258
struct M2MB_SOCKET_BSD_LINGER M2MB_SOCKET_BSD_LINGER_T
struct M2MB_SOCKET_BSD_FD_SET M2MB_SOCKET_BSD_FD_SET_T
INT32 m2mb_socket_bsd_recv_from(M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags, struct M2MB_SOCKET_BSD_SOCKADDR *from, INT32 *fromlen)
Receive a message from a socket.
INT32 m2mb_socket_bsd_get_sock_opt(M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen)
Get options from sockets.
struct M2MB_IP_MREQ M2MB_IP_MREQ_T
Argument structure for M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP and M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP.
struct M2MB_SOCKET_BSD_SOCKADDR M2MB_SOCKET_BSD_SOCKADDR_T
M2MB_SOCKET_BSD_IN_ADDR_T sin_addr
Definition: m2mb_socket.h:277
INT32 m2mb_socket_bsd_fd_clr_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
INT32 m2mb_socket_bsd_send(M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags)
Send a message on a socket.
INT32 m2mb_socket_bsd_inet_pton(INT32 af, const CHAR *src, void *dst)
Converts IPv4 and IPv6 addresses from text to binary form.
struct M2MB_IP6_ADDR M2MB_IP6_ADDR_T
IPv6 Internet address.
struct M2MB_SOCKET_BSD_SOCKADDR_IN6 M2MB_SOCKET_BSD_SOCKADDR_IN6_T
M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_accept(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen)
Accept a connection on a socket.
INT32 m2mb_socket_bsd_bind(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
Bind the address with the socket.
struct M2MB_SOCKET_BSD_TIMEVAL M2MB_SOCKET_BSD_TIMEVAL_T
INT32 m2mb_socket_bsd_send_to(M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags, const struct M2MB_SOCKET_BSD_SOCKADDR *to, INT32 tolen)
send a message on a socket
unsigned short UINT16
Definition: m2mb_types.h:84
struct M2MB_SOCKET_BSD_IPV6_ADDR M2MB_SOCKET_BSD_IPV6_ADDR_T
Structure for storing IPV6.
UINT32 fd_array[M2MB_SOCKET_BSD_FD_SETSIZE]
Definition: m2mb_socket.h:319
M2MB_IP4_ADDR_T imr_multiaddr
Definition: m2mb_socket.h:338
INT32 iHANDLE
Definition: m2mb_types.h:93
INT32 m2mb_socket_bsd_set_sock_opt(M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, const void *optval, INT32 optlen)
Set options on sockets.
UINT32 SIZE_T
Definition: m2mb_types.h:99
unsigned long int UINT32
Definition: m2mb_types.h:85
char CHAR
Definition: m2mb_types.h:74
IPv6 Internet address.
Definition: m2mb_socket.h:324
INT32 m2mb_socket_bsd_get_host_by_name_2_r_cid(const CHAR *name, INT32 af, struct M2MB_SOCKET_BSD_HOSTENT *ret, CHAR *buf, SIZE_T buflen, struct M2MB_SOCKET_BSD_HOSTENT **result, INT32 *h_errnop, UINT8 cid)
Get network host entry.
#define M2MB_SOCKET_BSD_FD_SETSIZE
Definition: m2mb_socket.h:213
void VOID
Definition: m2mb_types.h:72
Socket IPv4/IPv6 Internet address union.
Definition: m2mb_socket.h:347
M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_socket(INT32 domain, INT32 type, INT32 protocol)
Create an endpoint for communication.
INT32 m2mb_socket_errno(INT32 fd)
Gets the last error occurred.
M2MB_IP4_ADDR_T imr_interface
Definition: m2mb_socket.h:340
struct M2MB_SOCKET_BSD_SOCKADDR_IN M2MB_SOCKET_BSD_SOCKADDR_IN_T
INT32 m2mb_socket_bsd_fd_isset_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
INT32 m2mb_socket_TCP_Keepalive_Set(INT32 idle_Time, INT32 resp_Timeout)
Set TCP Keepalive parameters.
signed int INT32
Definition: m2mb_types.h:80
union M2MB_SOCKET_BSD_IPV6_ADDR::@4 v6_v
INT32 m2mb_socket_bsd_recv(M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags)
Receive a message from a socket.
Argument structure for M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP and M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP.
Definition: m2mb_socket.h:336
struct M2MB_SOCKET_BSD_HOSTENT M2MB_SOCKET_BSD_HOSTENT_T
INT32(* M2MB_NET_UDP_ZEROCOPY_CB)(void *so, void *packet, INT32 errcode, void *from, INT32 family)
UDP zero-copy application RX callback handler.
Definition: m2mb_socket.h:381
struct M2MB_SOCKET_BSD_IN6_ADDR M2MB_SOCKET_BSD_IN6_ADDR_T
Structure for storing IPV6.
M2M base types (ver. )
INT32 m2mb_socket_set_cid(M2MB_SOCKET_BSD_SOCKET s, UINT8 cid)
Link a socket to a CID.
INT32 m2mb_socket_bsd_ioctl(M2MB_SOCKET_BSD_SOCKET s, INT32 cmd, void *argp)
IO control function.
iHANDLE M2MB_SOCKET_BSD_SOCKET
Definition: m2mb_socket.h:228
union M2MB_IP46_ADDR::@5 a
#define m2mb_socket_bsd_htonl(l)
Conversion between host and network byte order.
Definition: m2mb_socket.h:421
INT32 m2mb_socket_bsd_select(INT32 nfds, M2MB_SOCKET_BSD_FD_SET_T *readfds, M2MB_SOCKET_BSD_FD_SET_T *writefds, M2MB_SOCKET_BSD_FD_SET_T *exceptfds, const struct M2MB_SOCKET_BSD_TIMEVAL *timeout)
synchronous I/O multiplexing
VOID M2MB_IPv6_CHANGE_ENDIAN(UINT32 *a)
Conversion between host and network byte order.
Definition: m2mb_socket.h:522
Structure for storing IPV6.
Definition: m2mb_socket.h:253
INT32 m2mb_socket_TCP_Keepalive_Get(INT32 *idle_Time, INT32 *resp_Timeout)
Get TCP Keepalive parameters.
INT32 m2mb_socket_bsd_get_peer_name(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen)
Get the name of the peer socket.
M2MB_IP6_ADDR_T addr6
Definition: m2mb_socket.h:355
struct M2MB_IP46_ADDR M2MB_IP46_ADDR_T
Socket IPv4/IPv6 Internet address union.
INT32 m2mb_socket_bsd_get_sock_name(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen)
Get socket name.
M2MB_IP4_ADDR_T addr4
Definition: m2mb_socket.h:353
INT32 m2mb_socket_bsd_fd_set_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()