m2mb API docs  25.30.008.0
m2mb API sets documentation
m2mb_socket.h
Go to the documentation of this file.
1 /* $version: 252422_R1 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
27 #ifndef M2M_M2MB_SOCKET_API_H
28 #define M2M_M2MB_SOCKET_API_H
29 
30 
31 
32 /* Global declarations ==========================================================================*/
33 #define M2MB_SOCKET_BSD_INVALID_SOCKET (M2MB_SOCKET_BSD_SOCKET)(~0) /* Invalid socket handle */
34 
35 /* M2M Socket Types */
36 #define M2MB_SOCKET_BSD_SOCK_STREAM 1 /* Stream socket type used for TCP */
37 #define M2MB_SOCKET_BSD_SOCK_DGRAM 2 /* Datagram socket type used for UDP */
38 #define M2MB_SOCKET_BSD_SOCK_RAW 3 /* Raw socket type */
39 
40 /* M2M Socket Address Families */
41 #define M2MB_SOCKET_BSD_AF_UNSPEC 0 /* Unspecified Address Family */
42 #define M2MB_SOCKET_BSD_AF_INET 2 /* Internetwork: UDP, TCP, etc. */
43 #define M2MB_SOCKET_BSD_AF_INET6 10
44 
45 /* M2M Socket Protocol Families */
46 #define M2MB_SOCKET_BSD_PF_UNSPEC 0 /* Unspecified Protocol Family */
47 #define M2MB_SOCKET_BSD_PF_INET 2 /* Internetwork: UDP, TCP, etc. */
48 
49 /* M2M Socket Protocols */
50 #define M2MB_SOCKET_BSD_IPPROTO_IP 0 /* Dummy for IP */
51 #define M2MB_SOCKET_BSD_IPPROTO_TCP 6 /* Transmission Control Protocol */
52 #define M2MB_SOCKET_BSD_IPPROTO_UDP 17 /* User Datagram Protocol */
53 #define M2MB_SOCKET_BSD_IPPROTO_ICMP 1 /* Internet Control Message Protocol */
54 #define M2MB_SOCKET_BSD_IPPROTO_IPV6 41 /* IPv6 Protocol */
55 #define M2MB_SOCKET_BSD_IPPROTO_ICMPV6 58 /* IPV6 Internet Control Message Protocol */
56 
57 /* ======================================================================= */
58 
59 /* Level number for M2MB_SOCKET_bsd_get_sock_opt() and M2MB_SOCKET_bsd_set_sock_opt() to apply to socket itself. */
60 #define M2MB_SOCKET_BSD_SOL_SOCKET 0xffff /* options for socket level */
61 
62 /* M2M Socket Option Flags */
63 #define M2MB_SOCKET_BSD_SO_DEBUG 0x0001 /* Turn on debugging info recording, Not supported */
64 #define M2MB_SOCKET_BSD_SO_ACCEPTCONN 0x0002 /* Socket has had listen(), Not supported */
65 #define M2MB_SOCKET_BSD_SO_REUSEADDR 0x0004 /* Allow local address reuse, always set */
66 #define M2MB_SOCKET_BSD_SO_KEEPALIVE 0x0008 /* Keep connections alive, not enabled by default */
67 #define M2MB_SOCKET_BSD_SO_DONTROUTE 0x0010 /* Just use interface addresses, Not supported */
68 #define M2MB_SOCKET_BSD_SO_BROADCAST 0x0020 /* Permit sending of broadcast msgs, Not supported */
69 #define M2MB_SOCKET_BSD_SO_LINGER 0x0080 /* Linger on close if data present, Not supported */
70 #define M2MB_SOCKET_BSD_SO_OOBINLINE 0x0100 /* Leave received OOB data in line, Not supported */
71 #define M2MB_SOCKET_BSD_SO_DONTLINGER (INT32)(~M2MB_SOCKET_BSD_SO_LINGER) /* Dont Linger, Not supported */
72 #define M2MB_SOCKET_BSD_SO_SNDBUF 0x1001 /* Send buffer size, Not supported for MDM9206 */
73 #define M2MB_SOCKET_BSD_SO_RCVBUF 0x1002 /* Receive buffer size, Not supported for MDM9206 */
74 #define M2MB_SOCKET_BSD_SO_SNDLOWAT 0x1003 /* Send low-water mark, Not supported */
75 #define M2MB_SOCKET_BSD_SO_RCVLOWAT 0x1004 /* Receive low-water mark, Not supported */
76 #define M2MB_SOCKET_BSD_SO_SNDTIMEO 0x1005 /* Send timeout, Not supported */
77 #define M2MB_SOCKET_BSD_SO_RCVTIMEO 0x1006 /* Receive timeout, supported */
78 #define M2MB_SOCKET_BSD_SO_ERROR 0x1007 /* Get error status and clear */
79 #define M2MB_SOCKET_BSD_SO_TYPE 0x1008 /* Get socket type, supported */
80 #define M2MB_SOCKET_BSD_SO_TXDATA 0x1009 /* Get a count of bytes in send buffer supported */
81 #define M2MB_SOCKET_BSD_SO_RXDATA 0x1010 /* Get a count of bytes in receive buffer, supported */
82 #define M2MB_SOCKET_BSD_SO_NONBLOCK 0x1011 /* Set/get blocking, supported */
83 #define M2MB_SOCKET_BSD_SO_TCPSACK 0x1012 /* Set/get TCP SACK enable, supported */
84 #define M2MB_SOCKET_BSD_SO_WINSCALE 0x1013 /* Set/get Window Scale option, supported */
85 
86 /* M2M Socket TCP Option Flags */
87 #define M2MB_SOCKET_BSD_TCP_NODELAY 0x01 /* Don't delay send to coalesce packets, supported */
88 #define M2MB_SOCKET_BSD_TCP_KEEPALIVE 0x03 /* TCP keepalive timer */
89 #define M2MB_SOCKET_BSD_TCP_MAXSEG 0x04 /* TCP segment size */
90 /* level M2MB_SOCKET_BSD_IPPROTO_IP */
91 #define M2MB_SOCKET_BSD_IP_TTL_OPT 0x02 /* time to live */
92 
93 /* ======================================================================= */
94 
95 /* M2M Internet address.*/
96 
97 /* Any internet address. */
98 #define M2MB_SOCKET_BSD_INADDR_ANY (UINT32) 0x00000000
99 
100 /* Loopback internet address. */
101 #define M2MB_SOCKET_BSD_INADDR_LOOPBACK (UINT32) 0x7f000001
102 
103 /* Broadcast internet address. */
104 #define M2MB_SOCKET_BSD_INADDR_BROADCAST (UINT32) 0xffffffff
105 
106 /* ======================================================================= */
107 
108 
109 /* M2M Socket constants for M2MB_SOCKET_bsd_shutdown() */
110 #define M2MB_SOCKET_BSD_SHUT_RD 0x00 /* Read socket */
111 #define M2MB_SOCKET_BSD_SHUT_WR 0x01 /* Write socket */
112 #define M2MB_SOCKET_BSD_SHUT_RDWR 0x02 /* Read Write socket */
113 
114 
115 /* ======================================================================= */
116 
117 /* M2M Socket I/O control options for m2mb_socket_bsd_ioctl() */
118 
119 /* command to get the number of bytes to read */
120 #define M2MB_SOCKET_BSD_FIONREAD 0
121 
122 /* command to select the blocking or non-blocking mode */
123 #define M2MB_SOCKET_BSD_FIONBIO 1
124 
125 
126 /* ======================================================================= */
127 
128 /* M2M Socket Error Types */
129 /* Errors can be retrieved via the m2mb_socket_errno() */
130 
131 #define M2MB_SOCKET_BSD_SOCKET_ERROR (-1)
132 #define M2MB_SOCKET_BSD_SOCKNOERROR 0
133 #define M2MB_SOCKET_BSD_EUNDEFINED 1
134 #define M2MB_SOCKET_BSD_EACCES 2
135 #define M2MB_SOCKET_BSD_EADDRINUSE 3
136 #define M2MB_SOCKET_BSD_EADDRNOTAVAIL 4
137 #define M2MB_SOCKET_BSD_EAFNOSUPPORT 5
138 #define M2MB_SOCKET_BSD_EALREADY 6
139 #define M2MB_SOCKET_BSD_EBADF 7
140 #define M2MB_SOCKET_BSD_ECONNABORTED 8
141 #define M2MB_SOCKET_BSD_ECONNREFUSED 9
142 #define M2MB_SOCKET_BSD_ECONNRESET 10
143 #define M2MB_SOCKET_BSD_EDESTADDRREQ 11
144 #define M2MB_SOCKET_BSD_EFAULT 12
145 #define M2MB_SOCKET_BSD_EHOSTDOWN 13
146 #define M2MB_SOCKET_BSD_EHOSTUNREACH 14
147 #define M2MB_SOCKET_BSD_EINPROGRESS 15
148 #define M2MB_SOCKET_BSD_EINTR 16
149 #define M2MB_SOCKET_BSD_EINVAL 17
150 #define M2MB_SOCKET_BSD_EISCONN 18
151 #define M2MB_SOCKET_BSD_EMFILE 19
152 #define M2MB_SOCKET_BSD_EMSGSIZE 20
153 #define M2MB_SOCKET_BSD_ENETDOWN 21
154 #define M2MB_SOCKET_BSD_ENETRESET 22
155 #define M2MB_SOCKET_BSD_ENETUNREACH 23
156 #define M2MB_SOCKET_BSD_ENOBUFS 24
157 #define M2MB_SOCKET_BSD_ENOPROTOOPT 25
158 #define M2MB_SOCKET_BSD_ENOTCONN 26
159 #define M2MB_SOCKET_BSD_ENOTSOCK 27
160 #define M2MB_SOCKET_BSD_EOPNOTSUPP 28
161 #define M2MB_SOCKET_BSD_EPFNOSUPPORT 29
162 #define M2MB_SOCKET_BSD_EPROTONOSUPPORT 30
163 #define M2MB_SOCKET_BSD_EPROTOTYPE 31
164 #define M2MB_SOCKET_BSD_ESHUTDOWN 32
165 #define M2MB_SOCKET_BSD_ESOCKTNOSUPPORT 33
166 #define M2MB_SOCKET_BSD_ETIMEDOUT 34
167 #define M2MB_SOCKET_BSD_EWOULDBLOCK 35
168 
169 /* ======================================================================= */
170 
171 /* Errors used by the DNS API functions, h_errno can be one of them */
172 
173 #define M2MB_SOCKET_HOST_NOT_FOUND 210
174 #define M2MB_SOCKET_NO_DATA 211
175 #define M2MB_SOCKET_NO_RECOVERY 212
176 #define M2MB_SOCKET_TRY_AGAIN 213
177 #define M2MB_SOCKET_ERANGE 214
178 
179 
180 /* ======================================================================= */
181 
182 /* m2mb_socket_bsd_recv Flags */
183 #define M2MB_MSG_PEEK 0x02
184 /* Supported range of values for M2MB_SOCKET_BSD_SO_RCVBUF */
185 
186 #define M2MB_SOCKET_TCPWINDOW_MIN 536 /* minimum TCP window size */
187 #define M2MB_SOCKET_TCPWINDOW_MAX 65535 /* maximum TCP window size */
188 
189 /* Supported range of values for M2MB_SOCKET_BSD_SO_WINSCALE */
190 #define M2MB_SOCKET_TCPSCALE_MIN 0 /* minimum TCP window scale */
191 #define M2MB_SOCKET_TCPSCALE_MAX 8 /* maximum TCP window scale */
192 
193 /* Supported range of values for M2MB_SOCKET_BSD_SO_TCPSACK */
194 #define M2MB_SOCKET_TCPSACK_DISABLED 0 /* TCP SACK disabled */
195 #define M2MB_SOCKET_TCPSACK_ENABLED 1 /* TCP SACK enabled */
196 
197 
198 /* Global typedefs ==============================================================================*/
199 /* Socket identifier */
200 typedef iHANDLE M2MB_SOCKET_BSD_SOCKET;
201 
202 /* Structure used for manipulating linger option. */
204 {
205  INT32 l_onoff; /* option on/off */
206  INT32 l_linger; /* linger time */
207 };
208 
209 /* Structure used by TCP/IP stack to store most addresses. */
211 {
212  UINT8 _internal_sa_len; /* INTERNAL USE ONLY */
213  UINT8 sa_family;
214  CHAR sa_data[14];
215 };
216 
217 /* ======================================================================= */
218 
219 /* Structure for storing Internet address. */
221 {
222  UINT32 s_addr; /* 32 bits inet address */
223 };
224 
225 /* Socket address, internet style. */
227 {
228  UINT8 _internal_sin_len; /* INTERNAL USE ONLY */
229  UINT8 sin_family; /* M2M Socket Protocol Families, e.g. M2MB_SOCKET_BSD_PF_INET. */
230  UINT16 sin_port; /* 16 bits port number. */
231  struct M2MB_SOCKET_BSD_IN_ADDR sin_addr; /* 32 bits inet address (IP). */
232  CHAR sin_zero[8]; /* INTERNAL USE ONLY */
233 };
234 
236 {
237  UINT32 s_addr[4];
238 };
239 
241 {
242  union
243  {
244  UINT8 addr8[16];
245  UINT16 addr16[8];
246  UINT32 addr32[4];
247  } v6_v;
248 
249 #define addr8_s v6_v.addr8
250 #define addr16_s v6_v.addr16
251 #define addr32_s v6_v.addr32
252 
253 };
254 
255 /* Socket address, internet style. */
257 {
258  UINT8 _internal_sin6_len; /* INTERNAL USE ONLY */
259  UINT8 sin6_family; /* M2M Socket Protocol Families, e.g. M2MB_SOCKET_BSD_PF_INET. */
260  UINT16 sin6_port; /* 16 bits port number. */
261  UINT32 sin6_flowinfo;
262  struct M2MB_SOCKET_BSD_IPV6_ADDR sin6_addr; /* 32 bits inet address (IP). */
263  UINT32 sin6_scope_id;
264 };
265 
266 /* Structure returned by network data base library. */
268 {
269  CHAR *h_name; /* Official name of host */
270  CHAR **h_aliases; /* Pointer to struct of aliases */
271  INT32 h_addrtype; /* Host address type, equals M2MB_SOCKET_BSD_AF_INET */
272  INT32 h_length; /* Length of address */
273  CHAR **h_addr_list; /* Pointer to array of pointers with inet v4 addresses */
274 };
275 
276 /* Structure used in M2MB_SOCKET_bsd_select() call. */
278 {
279  INT32 m_tv_sec; /* seconds */
280  INT32 m_tv_usec; /* microseconds */
281 };
282 
283 /* FD set size used by M2MB_SOCKET_bsd_select(). */
284 #define M2MB_SOCKET_BSD_FD_SETSIZE 32
285 
286 /* Note: This is already under investigation.
287 
288  FD set used by m2mb_socket_bsd_select().
289  Users please do not access to this struct directly, instead use the APIs
290  m2mb_socket_bsd_fd_zero_func, m2mb_socket_bsd_fd_set_func,
291  m2mb_socket_bsd_fd_clr_func,m2mb_socket_bsd_fd_isset_func */
293 {
294  INT32 fd_count; /* How many are SET? */
295  UINT32 fd_array[M2MB_SOCKET_BSD_FD_SETSIZE]; /* Bit map of SOCKET Descriptors. */
297 
298 
299 
300 /* Global functions =============================================================================*/
301 /* ======================================================================= */
302 
303 /* M2M BSD socket interface */
304 
305 /*-----------------------------------------------------------------------------------------------*/
341 /*-----------------------------------------------------------------------------------------------*/
342 
343 M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_socket( INT32 domain, INT32 type, INT32 protocol );
344 
345 /*-----------------------------------------------------------------------------------------------*/
376 /*-----------------------------------------------------------------------------------------------*/
377 INT32 m2mb_socket_bsd_bind( M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen );
378 
379 /*-----------------------------------------------------------------------------------------------*/
409 /*-----------------------------------------------------------------------------------------------*/
410 INT32 m2mb_socket_bsd_connect( M2MB_SOCKET_BSD_SOCKET s, const struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen );
411 
412 /*-----------------------------------------------------------------------------------------------*/
438 /*-----------------------------------------------------------------------------------------------*/
439 INT32 m2mb_socket_bsd_listen( M2MB_SOCKET_BSD_SOCKET s, INT32 backlog );
440 
441 /*-----------------------------------------------------------------------------------------------*/
471 /*-----------------------------------------------------------------------------------------------*/
472 M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_accept( M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen );
473 
474 /*-----------------------------------------------------------------------------------------------*/
497 /*-----------------------------------------------------------------------------------------------*/
498 INT32 m2mb_socket_bsd_close( M2MB_SOCKET_BSD_SOCKET s );
499 
500 /*-----------------------------------------------------------------------------------------------*/
529 /*-----------------------------------------------------------------------------------------------*/
530 INT32 m2mb_socket_bsd_get_peer_name( M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen );
531 
532 /*-----------------------------------------------------------------------------------------------*/
561 /*-----------------------------------------------------------------------------------------------*/
562 INT32 m2mb_socket_bsd_get_sock_name( M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen );
563 
564 /*-----------------------------------------------------------------------------------------------*/
597 /*-----------------------------------------------------------------------------------------------*/
598 INT32 m2mb_socket_bsd_recv( M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags );
599 
600 /*-----------------------------------------------------------------------------------------------*/
640 /*-----------------------------------------------------------------------------------------------*/
641 INT32 m2mb_socket_bsd_recv_from( M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags,
642  struct M2MB_SOCKET_BSD_SOCKADDR *from, INT32 *fromlen );
643 
644 
645 /*-----------------------------------------------------------------------------------------------*/
678 /*-----------------------------------------------------------------------------------------------*/
679 INT32 m2mb_socket_bsd_send( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags );
680 
681 /*-----------------------------------------------------------------------------------------------*/
722 /*-----------------------------------------------------------------------------------------------*/
723 INT32 m2mb_socket_bsd_send_to( M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags,
724  const struct M2MB_SOCKET_BSD_SOCKADDR *to, INT32 tolen );
725 
726 /*-----------------------------------------------------------------------------------------------*/
758 /*-----------------------------------------------------------------------------------------------*/
759 INT32 m2mb_socket_bsd_get_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen );
760 
761 /*-----------------------------------------------------------------------------------------------*/
792 /*-----------------------------------------------------------------------------------------------*/
793 INT32 m2mb_socket_bsd_set_sock_opt( M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, const void *optval, INT32 optlen );
794 
795 /*-----------------------------------------------------------------------------------------------*/
821 /*-----------------------------------------------------------------------------------------------*/
822 
823 INT32 m2mb_socket_bsd_ioctl( M2MB_SOCKET_BSD_SOCKET s, INT32 cmd, void *argp );
824 
825 /*-----------------------------------------------------------------------------------------------*/
860 /*-----------------------------------------------------------------------------------------------*/
861 INT32 m2mb_socket_bsd_select( INT32 nfds, M2MB_SOCKET_BSD_FD_SET_T *readfds,
863  const struct M2MB_SOCKET_BSD_TIMEVAL *timeout );
864 
865 /*-----------------------------------------------------------------------------------------------*/
887 /*-----------------------------------------------------------------------------------------------*/
889 
890 /*-----------------------------------------------------------------------------------------------*/
916 
917 /*-----------------------------------------------------------------------------------------------*/
943 
944 /*-----------------------------------------------------------------------------------------------*/
971 
972 /*-----------------------------------------------------------------------------------------------*/
994 INT32 m2mb_socket_errno( void );
995 
996 /*-----------------------------------------------------------------------------------------------*/
1019 UINT16 m2mb_socket_bsd_htons( UINT16 x ); /* Host to network byte order (short) */
1020 
1021 /*-----------------------------------------------------------------------------------------------*/
1044 UINT16 m2mb_socket_bsd_ntohs( UINT16 x ); /* Network to host byte order (short) */
1045 
1046 /*-----------------------------------------------------------------------------------------------*/
1069 UINT32 m2mb_socket_bsd_htonl( UINT32 x ); /* Host to network byte order (long) */
1070 
1071 /*-----------------------------------------------------------------------------------------------*/
1094 UINT32 m2mb_socket_bsd_ntohl( UINT32 x ); /* Network to host byte order (long) */
1095 
1096 /*-----------------------------------------------------------------------------------------------*/
1127 CHAR *m2mb_socket_bsd_inet_ntop( INT32 af, const void *src, CHAR *dst, SIZE_T size );
1128 
1129 /*-----------------------------------------------------------------------------------------------*/
1159 INT32 m2mb_socket_bsd_inet_pton( INT32 af, const CHAR *src, void *dst );
1160 
1161 /*-----------------------------------------------------------------------------------------------*/
1199 INT32 m2mb_socket_bsd_get_host_by_name_2_r_cid( const CHAR *name, INT32 af,
1200  struct M2MB_SOCKET_BSD_HOSTENT *ret, CHAR *buf, SIZE_T buflen,
1201  struct M2MB_SOCKET_BSD_HOSTENT **result, INT32 *h_errnop, UINT8 cid );
1202 
1203 /*-----------------------------------------------------------------------------------------------*/
1248 INT32 m2mb_socket_set_cid( M2MB_SOCKET_BSD_SOCKET s, UINT8 cid );
1249 
1250 
1251 #endif /* M2M_M2MB_SOCKET_API_H */
M2MB_SOCKET_BSD_FD_SET
Definition: m2mb_socket.h:292
m2mb_socket_bsd_htons
UINT16 m2mb_socket_bsd_htons(UINT16 x)
convertion between host and network byte order
m2mb_socket_bsd_fd_set_func
void m2mb_socket_bsd_fd_set_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
used for m2mb_socket_bsd_select()
m2mb_socket_bsd_fd_zero_func
void m2mb_socket_bsd_fd_zero_func(M2MB_SOCKET_BSD_FD_SET_T *set)
used for m2mb_socket_bsd_select()
m2mb_socket_bsd_send
INT32 m2mb_socket_bsd_send(M2MB_SOCKET_BSD_SOCKET s, const void *buf, INT32 len, INT32 flags)
send a message on a socket
m2mb_socket_bsd_recv
INT32 m2mb_socket_bsd_recv(M2MB_SOCKET_BSD_SOCKET s, void *buf, INT32 len, INT32 flags)
receive a message from a socket
M2MB_SOCKET_BSD_IPV6_ADDR
Definition: m2mb_socket.h:240
m2mb_socket_bsd_fd_isset_func
UINT8 m2mb_socket_bsd_fd_isset_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
used for m2mb_socket_bsd_select()
m2mb_socket_bsd_ioctl
INT32 m2mb_socket_bsd_ioctl(M2MB_SOCKET_BSD_SOCKET s, INT32 cmd, void *argp)
IO control function.
M2MB_SOCKET_BSD_IN_ADDR
Definition: m2mb_socket.h:220
M2MB_SOCKET_BSD_IN6_ADDR
Definition: m2mb_socket.h:235
M2MB_SOCKET_BSD_SOCKADDR_IN
Definition: m2mb_socket.h:226
m2mb_socket_bsd_bind
INT32 m2mb_socket_bsd_bind(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
bind the address with the socket
m2mb_socket_errno
INT32 m2mb_socket_errno(void)
Gets the last error occured.
m2mb_socket_bsd_fd_clr_func
void m2mb_socket_bsd_fd_clr_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
used for m2mb_socket_bsd_select()
m2mb_socket_bsd_get_peer_name
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_socket_bsd_select
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
M2MB_SOCKET_BSD_TIMEVAL
Definition: m2mb_socket.h:277
M2MB_SOCKET_BSD_SOCKADDR_IN6
Definition: m2mb_socket.h:256
m2mb_socket_bsd_socket
M2MB_SOCKET_BSD_SOCKET m2mb_socket_bsd_socket(INT32 domain, INT32 type, INT32 protocol)
create an endpoint for communication
m2mb_socket_bsd_get_sock_name
INT32 m2mb_socket_bsd_get_sock_name(M2MB_SOCKET_BSD_SOCKET s, struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 *namelen)
get socket name
m2mb_socket_bsd_accept
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
M2MB_SOCKET_BSD_SOCKADDR
Definition: m2mb_socket.h:210
m2mb_socket_bsd_get_sock_opt
INT32 m2mb_socket_bsd_get_sock_opt(M2MB_SOCKET_BSD_SOCKET s, INT32 level, INT32 optname, void *optval, INT32 *optlen)
get options from sockets
M2MB_SOCKET_BSD_HOSTENT
Definition: m2mb_socket.h:267
m2mb_socket_bsd_close
INT32 m2mb_socket_bsd_close(M2MB_SOCKET_BSD_SOCKET s)
close a socket
m2mb_socket_bsd_connect
INT32 m2mb_socket_bsd_connect(M2MB_SOCKET_BSD_SOCKET s, const struct M2MB_SOCKET_BSD_SOCKADDR *name, INT32 namelen)
connect a socket
m2mb_socket_set_cid
INT32 m2mb_socket_set_cid(M2MB_SOCKET_BSD_SOCKET s, UINT8 cid)
link a socket to a cid
m2mb_socket_bsd_inet_pton
INT32 m2mb_socket_bsd_inet_pton(INT32 af, const CHAR *src, void *dst)
convert IPv4 and IPv6 addresses from text to binary form
m2mb_socket_bsd_htonl
UINT32 m2mb_socket_bsd_htonl(UINT32 x)
convertion between host and network byte order
m2mb_socket_bsd_get_host_by_name_2_r_cid
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
m2mb_socket_bsd_ntohs
UINT16 m2mb_socket_bsd_ntohs(UINT16 x)
convertion between host and network byte order
m2mb_socket_bsd_recv_from
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
M2MB_SOCKET_BSD_LINGER
Definition: m2mb_socket.h:203
m2mb_socket_bsd_send_to
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
m2mb_socket_bsd_inet_ntop
CHAR * m2mb_socket_bsd_inet_ntop(INT32 af, const void *src, CHAR *dst, SIZE_T size)
convert IPv4 and IPv6 addresses from binary to text form
m2mb_socket_bsd_listen
INT32 m2mb_socket_bsd_listen(M2MB_SOCKET_BSD_SOCKET s, INT32 backlog)
listen for connections on a socket
m2mb_socket_bsd_set_sock_opt
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
m2mb_socket_bsd_ntohl
UINT32 m2mb_socket_bsd_ntohl(UINT32 x)
convertion between host and network byte order