28 #ifndef M2M_M2MB_SOCKET_API_H 29 #define M2M_M2MB_SOCKET_API_H 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 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) 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 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 145 #define M2MB_SOCKET_BSD_SHUT_RD 0x00 146 #define M2MB_SOCKET_BSD_SHUT_WR 0x01 147 #define M2MB_SOCKET_BSD_SHUT_RDWR 0x02 152 #define M2MB_SOCKET_BSD_FIONREAD 0 153 #define M2MB_SOCKET_BSD_FIONBIO 1 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 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 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 219 #define M2MB_SOCKET_MAX_SUPPORTED 16 224 #define MAKEIP(a,b,c,d) ((ULONG)d<<24 | (ULONG)c << 16 | (ULONG)b << 8 | (ULONG)a ) 266 #define addr8_s v6_v.addr8 267 #define addr16_s v6_v.addr16 268 #define addr32_s v6_v.addr32 360 #define Addr4 a.addr4 361 #define Addr6 a.addr6 421 #define m2mb_socket_bsd_htonl(l) (((((l) >> 24) & 0x000000ff)) | \ 422 ((((l) >> 8) & 0x0000ff00)) | \ 423 (((l) & 0x0000ff00) << 8) | \ 424 (((l) & 0x000000ff) << 24)) 448 #define m2mb_socket_bsd_ntohl(l) m2mb_socket_bsd_htonl(l) 473 #define m2mb_socket_bsd_htons(s) ((((s) >> 8) & 0xff) | (((s) << 8) & 0xff00)) 498 #define m2mb_socket_bsd_ntohs(s) m2mb_socket_bsd_htons(s) 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()
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
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.
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.
INT32 m2mb_socket_bsd_close(M2MB_SOCKET_BSD_SOCKET s)
Close a socket.
Structure for storing IPV6.
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
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
struct M2MB_SOCKET_BSD_IPV6_ADDR M2MB_SOCKET_BSD_IPV6_ADDR_T
Structure for storing IPV6.
UINT32 fd_array[M2MB_SOCKET_BSD_FD_SETSIZE]
M2MB_IP4_ADDR_T imr_multiaddr
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_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
Socket IPv4/IPv6 Internet address union.
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
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.
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.
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.
struct M2MB_SOCKET_BSD_IN6_ADDR M2MB_SOCKET_BSD_IN6_ADDR_T
Structure for storing IPV6.
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
union M2MB_IP46_ADDR::@5 a
#define m2mb_socket_bsd_htonl(l)
Conversion between host and network byte order.
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.
Structure for storing IPV6.
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.
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.
INT32 m2mb_socket_bsd_fd_set_func(INT32 fd, M2MB_SOCKET_BSD_FD_SET_T *set)
Used for m2mb_socket_bsd_select()