WE310F5  39.00.000
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 (0xfff)
75 #define M2MB_SOCKET_BSD_SO_DEBUG 0x0001
76 #define M2MB_SOCKET_BSD_SO_ACCEPTCONN 0x0002
77 #define M2MB_SOCKET_BSD_SO_REUSEADDR 0x0004
78 #define M2MB_SOCKET_BSD_SO_KEEPALIVE 0x0008
79 #define M2MB_SOCKET_BSD_SO_DONTROUTE 0x0010
80 #define M2MB_SOCKET_BSD_SO_BROADCAST 0x0020
81 #define M2MB_SOCKET_BSD_SO_USELOOPBACK 0x0040
82 #define M2MB_SOCKET_BSD_SO_LINGER 0x0080
83 #define M2MB_SOCKET_BSD_SO_OOBINLINE 0x0100
84 #define M2MB_SOCKET_BSD_SO_DONTLINGER (INT32)(~M2MB_SOCKET_BSD_SO_LINGER) /* Dont Linger, supported */
85 #define M2MB_SOCKET_BSD_SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */
86 #define M2MB_SOCKET_BSD_SO_SNDBUF 0x1001
87 #define M2MB_SOCKET_BSD_SO_RCVBUF 0x1002
88 #define M2MB_SOCKET_BSD_SO_SNDLOWAT 0x1003
89 #define M2MB_SOCKET_BSD_SO_RCVLOWAT 0x1004
90 #define M2MB_SOCKET_BSD_SO_SNDTIMEO 0x1005
91 #define M2MB_SOCKET_BSD_SO_RCVTIMEO 0x1006
92 #define M2MB_SOCKET_BSD_SO_ERROR 0x1007
93 #define M2MB_SOCKET_BSD_SO_TYPE 0x1008
94 #define M2MB_SOCKET_BSD_SO_CONTIMEO 0x1009
95 #define M2MB_SOCKET_BSD_SO_NO_CHECK 0x1010
96 #define M2MB_SOCKET_BSD_SO_BINDTODEVICE 0x100b
98 #define M2MB_SOCKET_BSD_IPPROTO_IP 0
99 #define M2MB_SOCKET_BSD_IP_TOS 1
100 #define M2MB_SOCKET_BSD_IP_TTL 2
101 #define M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP 3
102 #define M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP 4
103 /*
104  * Options and types for UDP multicast traffic handling
105  */
106 #define M2MB_SOCKET_BSD_IP_MULTICAST_TTL 5
107 #define M2MB_SOCKET_BSD_IP_MULTICAST_IF 6
108 #define M2MB_SOCKET_BSD_IP_MULTICAST_LOOP 7
109 #define M2MB_SOCKET_BSD_IP_PKTINFO 8
111 #define M2MB_SOCKET_BSD_IPPROTO_IPV6 41
112 /*
113  * Options for level IPPROTO_IPV6
114  */
115 #define M2MB_SOCKET_IPV6_CHECKSUM 7 /* RFC3542: calculate and insert the ICMPv6 checksum for raw sockets. */
116 #define M2MB_SOCKET_IPV6_V6ONLY 27 /* RFC3493: boolean control to restrict AF_INET6 sockets to IPv6 communications only. */
117 #define M2MB_SOCKET_BSD_IPV6_JOIN_GROUP 12
118 #define M2MB_SOCKET_BSD_IPV6_LEAVE_GROUP 13
119 #define M2MB_SOCKET_BSD_IPV6_ADD_MEMBERSHIP M2MB_SOCKET_BSD_IPV6_JOIN_GROUP
120 #define M2MB_SOCKET_BSD_IPV6_DROP_MEMBERSHIP M2MB_SOCKET_BSD_IPV6_LEAVE_GROUP
122 #define M2MB_SOCKET_BSD_IPPROTO_TCP 6
123 #define M2MB_SOCKET_BSD_TCP_NODELAY 0x01
124 #define M2MB_SOCKET_BSD_TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
125 #define M2MB_SOCKET_BSD_TCP_KEEPIDLE 0x03 /* Set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
126 #define M2MB_SOCKET_BSD_TCP_KEEPINTVL 0x04 /* Set pcb->keep_intvl - Use seconds for get/setsockopt */
127 #define M2MB_SOCKET_BSD_TCP_KEEPCNT 0x05 /* Set pcb->keep_cnt - Use number of probes sent for get/setsockopt */
128 
129 #define M2MB_SOCKET_BSD_IPPROTO_UDPLITE 136
130 /*
131  * Options for level IPPROTO_UDPLITE
132  */
133 #define M2MB_SOCKET_BSD_UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */
134 #define M2MB_SOCKET_BSD_UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */
135 
136 /* QCA Flags */
137 #define M2MB_SOCKET_BSD_SO_TCPSACK 0x00200
138 #define M2MB_SOCKET_BSD_SO_WINSCALE 0x00400
139 #define M2MB_SOCKET_BSD_SO_TIMESTAMP 0x00800
140 #define M2MB_SOCKET_BSD_SO_BIGCWND 0x01000
141 #define M2MB_SOCKET_BSD_SO_HDRINCL 0x02000
142 #define M2MB_SOCKET_BSD_SO_NOSLOWSTART 0x04000
143 #define M2MB_SOCKET_BSD_SO_FULLMSS 0x08000
145 #define M2MB_SOCKET_BSD_SO_HOPCNT 0x1009
146 #define M2MB_SOCKET_BSD_SO_MAXMSG 0x1010
147 #define M2MB_SOCKET_BSD_SO_RXDATA 0x1011
148 #define M2MB_SOCKET_BSD_SO_TXDATA 0x1012
149 #define M2MB_SOCKET_BSD_SO_MYADDR 0x1013
150 #define M2MB_SOCKET_BSD_SO_NBIO 0x1014
151 #define M2MB_SOCKET_BSD_SO_BIO 0x1015
152 #define M2MB_SOCKET_BSD_SO_NONBLOCK 0x1016
153 #define M2MB_SOCKET_BSD_SO_CALLBACK 0x1017
154 #define M2MB_SOCKET_BSD_SO_UDPCALLBACK 0x1019
156 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_IF 80
157 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_HOPS 81
158 #define M2MB_SOCKET_BSD_IPV6_MULTICAST_LOOP 82
160 #define M2MB_SOCKET_BSD_IP_HDRINCL 2
161 #define M2MB_SOCKET_BSD_IP_TTL_OPT 4
163 #define M2MB_SOCKET_BSD_IP_OPTIONS 1
164 #define M2MB_SOCKET_BSD_IPV6_SCOPEID 14
165 #define M2MB_SOCKET_BSD_IPV6_UNICAST_HOPS 15
166 #define M2MB_SOCKET_BSD_IPV6_TCLASS 16
171 /* ======================================================================= */
172 
174 #define M2MB_SOCKET_BSD_INADDR_ANY (UINT32) 0x00000000
176 #define M2MB_SOCKET_BSD_INADDR_LOOPBACK (UINT32) 0x7f000001
178 #define M2MB_SOCKET_BSD_INADDR_BROADCAST (UINT32) 0xffffffff
181 /* ======================================================================= */
182 
184 #define M2MB_SOCKET_BSD_SHUT_RD 0x00
185 #define M2MB_SOCKET_BSD_SHUT_WR 0x01
186 #define M2MB_SOCKET_BSD_SHUT_RDWR 0x02
188 /* ======================================================================= */
189 
191 #define M2MB_SOCKET_BSD_FIONREAD 0
192 #define M2MB_SOCKET_BSD_FIONBIO 1
195 /* ======================================================================= */
196 
199 #define M2MB_SOCKET_BSD_SOCKET_ERROR (-1)
200 #define M2MB_SOCKET_BSD_SOCKNOERROR 0
201 #define M2MB_SOCKET_BSD_ENOBUFS 1
202 #define M2MB_SOCKET_BSD_ETIMEDOUT 2
203 #define M2MB_SOCKET_BSD_EISCONN 3
204 #define M2MB_SOCKET_BSD_EOPNOTSUPP 4
205 #define M2MB_SOCKET_BSD_ECONNABORTED 5
206 #define M2MB_SOCKET_BSD_EWOULDBLOCK 6
207 #define M2MB_SOCKET_BSD_ECONNREFUSED 7
208 #define M2MB_SOCKET_BSD_ECONNRESET 8
209 #define M2MB_SOCKET_BSD_ENOTCONN 9
210 #define M2MB_SOCKET_BSD_EBADF 9
211 #define M2MB_SOCKET_BSD_EALREADY 10
212 #define M2MB_SOCKET_BSD_EINVAL 11
213 #define M2MB_SOCKET_BSD_EMSGSIZE 12
214 #define M2MB_SOCKET_BSD_EPIPE 13
215 #define M2MB_SOCKET_BSD_EDESTADDRREQ 14
216 #define M2MB_SOCKET_BSD_ESHUTDOWN 15
217 #define M2MB_SOCKET_BSD_ENOPROTOOPT 16
218 #define M2MB_SOCKET_BSD_EHAVEOOB 17
219 #define M2MB_SOCKET_BSD_ENOMEM 18
220 #define M2MB_SOCKET_BSD_EADDRNOTAVAIL 19
221 #define M2MB_SOCKET_BSD_EADDRINUSE 20
222 #define M2MB_SOCKET_BSD_EAFNOSUPPORT 21
223 #define M2MB_SOCKET_BSD_EINPROGRESS 22
224 #define M2MB_SOCKET_BSD_ELOWER 23
225 #define M2MB_SOCKET_BSD_ENOTSOCK 24
226 #define M2MB_SOCKET_BSD_EIEIO 27
227 #define M2MB_SOCKET_BSD_ETOOMANYREFS 28
228 #define M2MB_SOCKET_BSD_EFAULT 29
229 #define M2MB_SOCKET_BSD_ENETUNREACH 30
231 /* ======================================================================= */
232 
235 #define M2MB_SOCKET_HOST_NOT_FOUND 210
236 #define M2MB_SOCKET_NO_DATA 211
237 #define M2MB_SOCKET_NO_RECOVERY 212
238 #define M2MB_SOCKET_TRY_AGAIN 213
239 #define M2MB_SOCKET_ERANGE 214
240 
241 
245 #define M2MB_SOCKET_MSG_OOB 0x04
246 #define M2MB_SOCKET_MSG_PEEK 0x01
247 #define M2MB_SOCKET_MSG_DONTROUTE 0x14
248 #define M2MB_SOCKET_MSG_DONTWAIT 0x08
249 #define M2MB_SOCKET_MSG_ZEROCOPYSEND 0x1000
252 #define M2MB_SOCKET_BSD_FD_SETSIZE 32
253 
258 #define M2MB_SOCKET_MAX_SUPPORTED 16
259 
263 #define MAKEIP(a,b,c,d) ((ULONG)d<<24 | (ULONG)c << 16 | (ULONG)b << 8 | (ULONG)a )
264 
265 /* Global typedefs ==============================================================================*/
266 /* Socket identifier */
268 
271 {
275 
278 {
283 
284 /* ======================================================================= */
285 
286 /* Structure for storing IPV4 address. */
288 {
293 {
298 {
299  union
300  {
304  }v6_v;
305 #define addr8_s v6_v.addr8
306 #define addr16_s v6_v.addr16
307 #define addr32_s v6_v.addr32
309 
312 {
319 
320 
323 {
331 
334 {
341 
344 {
348 
356 {
363 typedef struct M2MB_IP6_ADDR
364 {
365 
366  UINT8 s_addr[16];
371 typedef unsigned long M2MB_IP4_ADDR_T;
375 typedef struct M2MB_IP_MREQ
376 {
382 
386 typedef struct M2MB_IP46_ADDR
387 {
390  union
391  {
396  } a;
399 #define Addr4 a.addr4
400 #define Addr6 a.addr6
402 
407  void *so,
410  void *packet,
413  INT32 errcode
415  );
416 
421  void *so,
424  void *packet,
427  INT32 errcode,
430  void *from,
433  INT32 family
435  );
436 /* ======================================================================== */
437 /*-----------------------------------------------------------------------------------------------*/
460 #define m2mb_socket_bsd_htonl(l) (((((l) >> 24) & 0x000000ff)) | \
461  ((((l) >> 8) & 0x0000ff00)) | \
462  (((l) & 0x0000ff00) << 8) | \
463  (((l) & 0x000000ff) << 24))
464 /*-----------------------------------------------------------------------------------------------*/
487 #define m2mb_socket_bsd_ntohl(l) m2mb_socket_bsd_htonl(l)
488 /*-----------------------------------------------------------------------------------------------*/
512 #define m2mb_socket_bsd_htons(s) ((((s) >> 8) & 0xff) | (((s) << 8) & 0xff00))
513 /*-----------------------------------------------------------------------------------------------*/
537 #define m2mb_socket_bsd_ntohs(s) m2mb_socket_bsd_htons(s)
538 /*-----------------------------------------------------------------------------------------------*/
560 inline VOID
562 {
563  a[0] = m2mb_socket_bsd_htonl(a[0]);
564  a[1] = m2mb_socket_bsd_htonl(a[1]);
565  a[2] = m2mb_socket_bsd_htonl(a[2]);
566  a[3] = m2mb_socket_bsd_htonl(a[3]);
567 }
568 
569 
570 /* Global functions =============================================================================*/
571 /* ======================================================================= */
572 
573 /* M2M BSD socket interface */
574 
575 /*-----------------------------------------------------------------------------------------------*/
651 /*-----------------------------------------------------------------------------------------------*/
652 
654 
655 /*-----------------------------------------------------------------------------------------------*/
724 /*-----------------------------------------------------------------------------------------------*/
726 
727 /*-----------------------------------------------------------------------------------------------*/
795 /*-----------------------------------------------------------------------------------------------*/
797 
798 /*-----------------------------------------------------------------------------------------------*/
856 /*-----------------------------------------------------------------------------------------------*/
858 
859 /*-----------------------------------------------------------------------------------------------*/
921 /*-----------------------------------------------------------------------------------------------*/
923  struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen );
924 
925 /*-----------------------------------------------------------------------------------------------*/
962 /*-----------------------------------------------------------------------------------------------*/
964 
965 /*-----------------------------------------------------------------------------------------------*/
1032 /*-----------------------------------------------------------------------------------------------*/
1034 
1035 /*-----------------------------------------------------------------------------------------------*/
1110 /*-----------------------------------------------------------------------------------------------*/
1112 
1113 /*-----------------------------------------------------------------------------------------------*/
1184 /*-----------------------------------------------------------------------------------------------*/
1185 INT32 m2mb_socket_bsd_recv( M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags );
1186 
1187 /*-----------------------------------------------------------------------------------------------*/
1265 /*-----------------------------------------------------------------------------------------------*/
1267  M2MB_SOCKET_BSD_SOCKADDR_T *from, INT32 *fromlen );
1268 
1269 
1270 /*-----------------------------------------------------------------------------------------------*/
1340 /*-----------------------------------------------------------------------------------------------*/
1341 INT32 m2mb_socket_bsd_send( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags );
1342 
1343 /*-----------------------------------------------------------------------------------------------*/
1419 /*-----------------------------------------------------------------------------------------------*/
1420 INT32 m2mb_socket_bsd_send_to( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags,
1421  const struct M2MB_SOCKET_BSD_SOCKADDR *to, INT32 tolen );
1422 
1423 /*-----------------------------------------------------------------------------------------------*/
1499 /*-----------------------------------------------------------------------------------------------*/
1500 INT32 m2mb_socket_bsd_get_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen );
1501 
1502 /*-----------------------------------------------------------------------------------------------*/
1576 /*-----------------------------------------------------------------------------------------------*/
1577 INT32 m2mb_socket_bsd_set_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, const void *optval, INT32 optlen );
1578 
1579 /*-----------------------------------------------------------------------------------------------*/
1609 /*-----------------------------------------------------------------------------------------------*/
1610 
1612 
1613 /*-----------------------------------------------------------------------------------------------*/
1684 /*-----------------------------------------------------------------------------------------------*/
1686  M2MB_SOCKET_BSD_FD_SET_T *exceptfds, const struct M2MB_SOCKET_BSD_TIMEVAL *timeout );
1687 
1688 /*-----------------------------------------------------------------------------------------------*/
1749 /*-----------------------------------------------------------------------------------------------*/
1751 
1752 /*-----------------------------------------------------------------------------------------------*/
1816 
1817 /*-----------------------------------------------------------------------------------------------*/
1880 
1881 /*-----------------------------------------------------------------------------------------------*/
1944 
1945 /*-----------------------------------------------------------------------------------------------*/
2011 
2012 /*-----------------------------------------------------------------------------------------------*/
2052 CHAR *m2mb_socket_bsd_inet_ntop( INT32 af, const void *src, CHAR *dst, INT32 size );
2053 
2054 /*-----------------------------------------------------------------------------------------------*/
2095 INT32 m2mb_socket_bsd_inet_pton( INT32 af, const CHAR *src, void *dst );
2096 
2097 /*-----------------------------------------------------------------------------------------------*/
2137  struct M2MB_SOCKET_BSD_HOSTENT *ret, CHAR *buf, INT32 buflen,
2138  struct M2MB_SOCKET_BSD_HOSTENT **result, INT32 *h_errnop, UINT8 cid );
2139 
2140 /*-----------------------------------------------------------------------------------------------*/
2167 /*-----------------------------------------------------------------------------------------------*/
2205 INT32 m2mb_socket_TCP_Keepalive_Set(INT32 idle_Time, INT32 resp_Timeout);
2206 /*-----------------------------------------------------------------------------------------------*/
2240 INT32 m2mb_socket_TCP_Keepalive_Get(INT32 *idle_Time, INT32 *resp_Timeout);
2241 
2244 #endif /* M2M_M2MB_SOCKET_API_H */
INT32 m2mb_socket_bsd_recv_from(M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags, M2MB_SOCKET_BSD_SOCKADDR_T *from, INT32 *fromlen)
Receive a message from a socket.
M2MB_IP4_ADDR_T imr_multiaddr
Definition: m2mb_socket.h:377
struct M2MB_SOCKET_BSD_IPV6_ADDR M2MB_SOCKET_BSD_IPV6_ADDR_T
Structure for storing IPV6.
Socket IPv4/IPv6 Internet address union.
Definition: m2mb_socket.h:386
INT32 m2mb_socket_bsd_close(M2MB_SOCKET_BSD_SOCKET s)
Close a socket.
struct M2MB_IP_MREQ M2MB_IP_MREQ_T
Argument structure for M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP and M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP.
M2MB_IP4_ADDR_T addr4
Definition: m2mb_socket.h:392
M2MB_IP6_ADDR_T addr6
Definition: m2mb_socket.h:394
INT32 m2mb_socket_bsd_fd_zero_func(M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
INT32 m2mb_socket_set_cid(M2MB_SOCKET_BSD_SOCKET s, UINT8 cid)
Link a socket to a CID.
unsigned char UINT8
Definition: m2mb_types.h:86
struct M2MB_SOCKET_BSD_IN6_ADDR M2MB_SOCKET_BSD_IN6_ADDR_T
Structure for storing IPV6.
struct M2MB_SOCKET_BSD_SOCKADDR_IN6 M2MB_SOCKET_BSD_SOCKADDR_IN6_T
CHAR * m2mb_socket_bsd_inet_ntop(INT32 af, const void *src, CHAR *dst, INT32 size)
Converts IPv4 and IPv6 addresses from binary to text form.
struct M2MB_SOCKET_BSD_IPV6_ADDR sin6_addr
Definition: m2mb_socket.h:328
Argument structure for M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP and M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP.
Definition: m2mb_socket.h:375
INT32 m2mb_socket_bsd_bind(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
Bind the address with the socket.
INT32 m2mb_socket_errno(INT32 fd)
Gets the last error occurred.
INT32 m2mb_socket_bsd_get_sock_name(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen)
Get socket name.
struct M2MB_SOCKET_BSD_SOCKADDR_IN M2MB_SOCKET_BSD_SOCKADDR_IN_T
struct M2MB_SOCKET_BSD_LINGER M2MB_SOCKET_BSD_LINGER_T
INT32 m2mb_socket_bsd_ioctl(M2MB_SOCKET_BSD_SOCKET s, INT32 cmd, void *argp)
IO control function.
struct M2MB_SOCKET_BSD_HOSTENT M2MB_SOCKET_BSD_HOSTENT_T
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
unsigned short UINT16
Definition: m2mb_types.h:87
UINT8 s_addr[16]
Definition: m2mb_socket.h:366
unsigned long M2MB_IP4_ADDR_T
IPv4 Internet address.
Definition: m2mb_socket.h:371
INT32 m2mb_socket_bsd_connect(M2MB_SOCKET_BSD_SOCKET s, const struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
connect a socket
struct M2MB_SOCKET_BSD_SOCKADDR M2MB_SOCKET_BSD_SOCKADDR_T
#define M2MB_SOCKET_BSD_FD_SETSIZE
Definition: m2mb_socket.h:252
struct M2MB_SOCKET_BSD_IN_ADDR M2MB_SOCKET_BSD_IN_ADDR_T
INT32 m2mb_socket_TCP_Keepalive_Set(INT32 idle_Time, INT32 resp_Timeout)
Set TCP Keepalive parameters.
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.
INT32 m2mb_socket_bsd_fd_clr_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
char CHAR
Definition: m2mb_types.h:76
struct M2MB_SOCKET_BSD_FD_SET M2MB_SOCKET_BSD_FD_SET_T
struct M2MB_IP46_ADDR M2MB_IP46_ADDR_T
Socket IPv4/IPv6 Internet address union.
INT32 iHANDLE
Definition: m2mb_types.h:96
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.
Structure for storing IPV6.
Definition: m2mb_socket.h:297
INT32 m2mb_socket_bsd_fd_set_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
struct M2MB_IP6_ADDR M2MB_IP6_ADDR_T
IPv6 Internet address.
void VOID
Definition: m2mb_types.h:74
union M2MB_IP46_ADDR::@5 a
UINT8 fd_bits[M2MB_SOCKET_BSD_FD_SETSIZE]
Definition: m2mb_socket.h:358
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
INT32 m2mb_socket_TCP_Keepalive_Get(INT32 *idle_Time, INT32 *resp_Timeout)
Get TCP Keepalive parameters.
INT32 m2mb_socket_bsd_send(M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags)
Send a message on a socket.
struct M2MB_SOCKET_BSD_TIMEVAL M2MB_SOCKET_BSD_TIMEVAL_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:420
unsigned long int UINT32
Definition: m2mb_types.h:88
INT32(* M2MB_NET_TCP_ZEROCOPY_CB)(void *so, void *packet, INT32 errcode)
TCP zero-copy application RX callback handler.
Definition: m2mb_socket.h:406
signed int INT32
Definition: m2mb_types.h:82
M2MB_IP4_ADDR_T imr_interface
Definition: m2mb_socket.h:379
M2MB_SOCKET_BSD_IN_ADDR_T sin_addr
Definition: m2mb_socket.h:316
VOID M2MB_IPv6_CHANGE_ENDIAN(UINT32 *a)
Conversion between host and network byte order.
Definition: m2mb_socket.h:561
INT32 m2mb_socket_bsd_inet_pton(INT32 af, const CHAR *src, void *dst)
Converts IPv4 and IPv6 addresses from text to binary form.
INT32 m2mb_socket_bsd_get_sock_opt(M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen)
Get options from sockets.
INT32 m2mb_socket_bsd_recv(M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags)
Receive a message from a socket.
INT32 m2mb_socket_bsd_listen(M2MB_SOCKET_BSD_SOCKET s, INT32 backlog)
Listen for connections on a socket.
union M2MB_SOCKET_BSD_IPV6_ADDR::@4 v6_v
INT32 m2mb_socket_bsd_fd_isset_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()
Structure for storing IPV6.
Definition: m2mb_socket.h:292
M2M base types (ver. )
iHANDLE M2MB_SOCKET_BSD_SOCKET
Definition: m2mb_socket.h:267
M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_socket(INT32 domain, INT32 type, INT32 protocol)
Create an endpoint for communication.
#define m2mb_socket_bsd_htonl(l)
Conversion between host and network byte order.
Definition: m2mb_socket.h:460
IPv6 Internet address.
Definition: m2mb_socket.h:363
INT32 m2mb_socket_bsd_get_host_by_name_2_r_cid(const CHAR *name, INT32 af, struct M2MB_SOCKET_BSD_HOSTENT *ret, CHAR *buf, INT32 buflen, struct M2MB_SOCKET_BSD_HOSTENT **result, INT32 *h_errnop, UINT8 cid)
Get network host entry.
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.