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 (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) 85 #define M2MB_SOCKET_BSD_SO_REUSEPORT 0x0200 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 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 115 #define M2MB_SOCKET_IPV6_CHECKSUM 7 116 #define M2MB_SOCKET_IPV6_V6ONLY 27 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 125 #define M2MB_SOCKET_BSD_TCP_KEEPIDLE 0x03 126 #define M2MB_SOCKET_BSD_TCP_KEEPINTVL 0x04 127 #define M2MB_SOCKET_BSD_TCP_KEEPCNT 0x05 129 #define M2MB_SOCKET_BSD_IPPROTO_UDPLITE 136 133 #define M2MB_SOCKET_BSD_UDPLITE_SEND_CSCOV 0x01 134 #define M2MB_SOCKET_BSD_UDPLITE_RECV_CSCOV 0x02 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 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 184 #define M2MB_SOCKET_BSD_SHUT_RD 0x00 185 #define M2MB_SOCKET_BSD_SHUT_WR 0x01 186 #define M2MB_SOCKET_BSD_SHUT_RDWR 0x02 191 #define M2MB_SOCKET_BSD_FIONREAD 0 192 #define M2MB_SOCKET_BSD_FIONBIO 1 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 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 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 258 #define M2MB_SOCKET_MAX_SUPPORTED 16 263 #define MAKEIP(a,b,c,d) ((ULONG)d<<24 | (ULONG)c << 16 | (ULONG)b << 8 | (ULONG)a ) 305 #define addr8_s v6_v.addr8 306 #define addr16_s v6_v.addr16 307 #define addr32_s v6_v.addr32 399 #define Addr4 a.addr4 400 #define Addr6 a.addr6 460 #define m2mb_socket_bsd_htonl(l) (((((l) >> 24) & 0x000000ff)) | \ 461 ((((l) >> 8) & 0x0000ff00)) | \ 462 (((l) & 0x0000ff00) << 8) | \ 463 (((l) & 0x000000ff) << 24)) 487 #define m2mb_socket_bsd_ntohl(l) m2mb_socket_bsd_htonl(l) 512 #define m2mb_socket_bsd_htons(s) ((((s) >> 8) & 0xff) | (((s) << 8) & 0xff00)) 537 #define m2mb_socket_bsd_ntohs(s) m2mb_socket_bsd_htons(s) 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
struct M2MB_SOCKET_BSD_IPV6_ADDR M2MB_SOCKET_BSD_IPV6_ADDR_T
Structure for storing IPV6.
Socket IPv4/IPv6 Internet address union.
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.
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.
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
Argument structure for M2MB_SOCKET_BSD_IP_ADD_MEMBERSHIP and M2MB_SOCKET_BSD_IP_DROP_MEMBERSHIP.
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 long M2MB_IP4_ADDR_T
IPv4 Internet address.
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
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()
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 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.
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.
union M2MB_IP46_ADDR::@5 a
UINT8 fd_bits[M2MB_SOCKET_BSD_FD_SETSIZE]
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.
INT32(* M2MB_NET_TCP_ZEROCOPY_CB)(void *so, void *packet, INT32 errcode)
TCP zero-copy application RX callback handler.
M2MB_IP4_ADDR_T imr_interface
M2MB_SOCKET_BSD_IN_ADDR_T sin_addr
VOID M2MB_IPv6_CHANGE_ENDIAN(UINT32 *a)
Conversion between host and network byte order.
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.
iHANDLE M2MB_SOCKET_BSD_SOCKET
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.
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.