18#define _GNU_H_WINDOWS32_SOCKETS
24#if !defined ( _BSDTYPES_DEFINED )
34typedef unsigned int u_long;
37#define _BSDTYPES_DEFINED
48#define SD_RECEIVE 0x00
52#ifndef _SYS_TYPES_FD_SET
68#define FD_CLR(fd,set) do { u_int __i;\
69for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count ; __i++) {\
70 if (((fd_set FAR*)(set))->fd_array[__i] == (fd)) {\
71 while (__i < ((fd_set FAR*)(set))->fd_count-1) {\
72 ((fd_set FAR*)(set))->fd_array[__i] = ((fd_set FAR*)(set))->fd_array[__i+1];\
75 ((fd_set FAR*)(set))->fd_count--;\
83#define FD_SET(fd, set) do { \
84 if (((fd_set FAR*)(set))->fd_count < FD_SETSIZE) \
85 ((fd_set FAR*)(set))->fd_array[((fd_set FAR*)(set))->fd_count++]=(fd);\
90#define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count=0)
94#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR*)(set))
99#elif !defined(USE_SYS_TYPES_FD_SET)
100#warning "fd_set and associated macros have been defined in sys/types. \
101 This can cause runtime problems with W32 sockets"
104#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
106#ifndef _TIMEVAL_DEFINED
107#define _TIMEVAL_DEFINED
114#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
116#define timercmp(tvp, uvp, cmp) \
117 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
118 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
119 ((tvp)->tv_usec cmp (uvp)->tv_usec))
121#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
125#define h_addr h_addr_list[0]
140#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
141#define _IOR(x,y,t) (IOC_OUT|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
142#define _IOW(x,y,t) (IOC_IN|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
143#define FIONBIO _IOW('f', 126, u_long)
173#define SO_ACCEPTCONN 2
174#define SO_REUSEADDR 4
175#define SO_KEEPALIVE 8
176#define SO_DONTROUTE 16
177#define SO_BROADCAST 32
178#define SO_USELOOPBACK 64
180#define SO_OOBINLINE 256
181#define SO_DONTLINGER (u_int)(~SO_LINGER)
182#define SO_SNDBUF 0x1001
183#define SO_RCVBUF 0x1002
184#define SO_SNDLOWAT 0x1003
185#define SO_RCVLOWAT 0x1004
186#define SO_SNDTIMEO 0x1005
187#define SO_RCVTIMEO 0x1006
188#define SO_ERROR 0x1007
189#define SO_TYPE 0x1008
191#define SO_CONNDATA 0x7000
192#define SO_CONNOPT 0x7001
193#define SO_DISCDATA 0x7002
194#define SO_DISCOPT 0x7003
195#define SO_CONNDATALEN 0x7004
196#define SO_CONNOPTLEN 0x7005
197#define SO_DISCDATALEN 0x7006
198#define SO_DISCOPTLEN 0x7007
199#define SO_OPENTYPE 0x7008
200#define SO_MAXDG 0x7009
201#define SO_MAXPATHDG 0x700A
202#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
203#define SO_CONNECT_TIME 0x700C
205#define SO_SYNCHRONOUS_ALERT 0x10
206#define SO_SYNCHRONOUS_NONALERT 0x20
217#define MSG_DONTROUTE 4
219#define h_errno WSAGetLastError()
220#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
221#define TRY_AGAIN WSATRY_AGAIN
222#define NO_RECOVERY WSANO_RECOVERY
223#define NO_DATA WSANO_DATA
224#define NO_ADDRES WSANO_ADDRESS
235#define IOCPARM_MASK 0x7f
236#define IOC_VOID 0x20000000
237#define IOC_OUT 0x40000000
238#define IOC_IN 0x80000000
239#define IOC_INOUT (IOC_IN|IOC_OUT)
241#define FIONREAD _IOR('f', 127, u_long)
242#define FIOASYNC _IOW('f', 125, u_long)
243#define SIOCSHIWAT _IOW('s', 0, u_long)
244#define SIOCGHIWAT _IOR('s', 1, u_long)
245#define SIOCSLOWAT _IOW('s', 2, u_long)
246#define SIOCGLOWAT _IOR('s', 3, u_long)
247#define SIOCATMARK _IOR('s', 7, u_long)
250#define IPPROTO_ICMP 1
251#define IPPROTO_IGMP 2
254#define IPPROTO_PUP 12
255#define IPPROTO_UDP 17
256#define IPPROTO_IDP 22
258#define IPPROTO_RAW 255
259#define IPPROTO_MAX 256
261#define IPPORT_DISCARD 9
262#define IPPORT_SYSTAT 11
263#define IPPORT_DAYTIME 13
264#define IPPORT_NETSTAT 15
266#define IPPORT_TELNET 23
267#define IPPORT_SMTP 25
268#define IPPORT_TIMESERVER 37
269#define IPPORT_NAMESERVER 42
270#define IPPORT_WHOIS 43
272#define IPPORT_TFTP 69
274#define IPPORT_FINGER 79
275#define IPPORT_TTYLINK 87
276#define IPPORT_SUPDUP 95
277#define IPPORT_EXECSERVER 512
278#define IPPORT_LOGINSERVER 513
279#define IPPORT_CMDSERVER 514
280#define IPPORT_EFSSERVER 520
281#define IPPORT_BIFFUDP 512
282#define IPPORT_WHOSERVER 513
283#define IPPORT_ROUTESERVER 520
284#define IPPORT_RESERVED 1024
285#define IMPLINK_IP 155
286#define IMPLINK_LOWEXPER 156
287#define IMPLINK_HIGHEXPER 158
291#define IN_CLASSA(i) ((LONG)(i)&0x80000000)
292#define IN_CLASSA_NET 0xff000000
293#define IN_CLASSA_NSHIFT 24
294#define IN_CLASSA_HOST 0x00ffffff
295#define IN_CLASSA_MAX 128
296#define IN_CLASSB(i) (((LONG)(i)&0xc0000000)==0x80000000)
297#define IN_CLASSB_NET 0xffff0000
298#define IN_CLASSB_NSHIFT 16
299#define IN_CLASSB_HOST 0x0000ffff
300#define IN_CLASSB_MAX 65536
301#define IN_CLASSC(i) (((LONG)(i)&0xe0000000)==0xc0000000)
302#define IN_CLASSC_NET 0xffffff00
303#define IN_CLASSC_NSHIFT 8
304#define IN_CLASSC_HOST 0xff
305#define INADDR_ANY (u_long)0
306#define INADDR_LOOPBACK 0x7f000001
307#define INADDR_BROADCAST (u_long)0xffffffff
308#define INADDR_NONE 0xffffffff
310#define WSADESCRIPTION_LEN 256
311#define WSASYS_STATUS_LEN 128
313#define IP_MULTICAST_IF 2
314#define IP_MULTICAST_TTL 3
315#define IP_MULTICAST_LOOP 4
316#define IP_ADD_MEMBERSHIP 5
317#define IP_DROP_MEMBERSHIP 6
320#define IP_DONTFRAGMENT 9
322#define IP_DEFAULT_MULTICAST_TTL 1
323#define IP_DEFAULT_MULTICAST_LOOP 1
324#define IP_MAX_MEMBERSHIPS 20
326#define INVALID_SOCKET (SOCKET)(~0)
327#define SOCKET_ERROR (-1)
333#define SOCK_SEQPACKET 5
335#define TCP_NODELAY 0x0001
336#define TCP_BSDURGENT 0x7000
356#define AF_APPLETALK 16
358#define AF_VOICEVIEW 18
360#define AF_UNKNOWN1 20
365#define PF_UNSPEC AF_UNSPEC
366#define PF_UNIX AF_UNIX
367#define PF_INET AF_INET
368#define PF_IMPLINK AF_IMPLINK
370#define PF_CHAOS AF_CHAOS
375#define PF_ECMA AF_ECMA
376#define PF_DATAKIT AF_DATAKIT
377#define PF_CCITT AF_CCITT
379#define PF_DECnet AF_DECnet
382#define PF_HYLINK AF_HYLINK
383#define PF_APPLETALK AF_APPLETALK
384#define PF_VOICEVIEW AF_VOICEVIEW
385#define PF_FIREFOX AF_FIREFOX
386#define PF_UNKNOWN1 AF_UNKNOWN1
389#define PF_INET6 AF_INET6
392#define SOL_SOCKET 0xffff
395#define MSG_MAXIOVLEN 16
396#define MSG_PARTIAL 0x8000
397#define MAXGETHOSTSTRUCT 1024
408#define WSABASEERR 10000
409#define WSAEINTR (WSABASEERR+4)
410#define WSAEBADF (WSABASEERR+9)
411#define WSAEACCES (WSABASEERR+13)
412#define WSAEFAULT (WSABASEERR+14)
413#define WSAEINVAL (WSABASEERR+22)
414#define WSAEMFILE (WSABASEERR+24)
415#define WSAEWOULDBLOCK (WSABASEERR+35)
416#define WSAEINPROGRESS (WSABASEERR+36)
417#define WSAEALREADY (WSABASEERR+37)
418#define WSAENOTSOCK (WSABASEERR+38)
419#define WSAEDESTADDRREQ (WSABASEERR+39)
420#define WSAEMSGSIZE (WSABASEERR+40)
421#define WSAEPROTOTYPE (WSABASEERR+41)
422#define WSAENOPROTOOPT (WSABASEERR+42)
423#define WSAEPROTONOSUPPORT (WSABASEERR+43)
424#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
425#define WSAEOPNOTSUPP (WSABASEERR+45)
426#define WSAEPFNOSUPPORT (WSABASEERR+46)
427#define WSAEAFNOSUPPORT (WSABASEERR+47)
428#define WSAEADDRINUSE (WSABASEERR+48)
429#define WSAEADDRNOTAVAIL (WSABASEERR+49)
430#define WSAENETDOWN (WSABASEERR+50)
431#define WSAENETUNREACH (WSABASEERR+51)
432#define WSAENETRESET (WSABASEERR+52)
433#define WSAECONNABORTED (WSABASEERR+53)
434#define WSAECONNRESET (WSABASEERR+54)
435#define WSAENOBUFS (WSABASEERR+55)
436#define WSAEISCONN (WSABASEERR+56)
437#define WSAENOTCONN (WSABASEERR+57)
438#define WSAESHUTDOWN (WSABASEERR+58)
439#define WSAETOOMANYREFS (WSABASEERR+59)
440#define WSAETIMEDOUT (WSABASEERR+60)
441#define WSAECONNREFUSED (WSABASEERR+61)
442#define WSAELOOP (WSABASEERR+62)
443#define WSAENAMETOOLONG (WSABASEERR+63)
444#define WSAEHOSTDOWN (WSABASEERR+64)
445#define WSAEHOSTUNREACH (WSABASEERR+65)
446#define WSAENOTEMPTY (WSABASEERR+66)
447#define WSAEPROCLIM (WSABASEERR+67)
448#define WSAEUSERS (WSABASEERR+68)
449#define WSAEDQUOT (WSABASEERR+69)
450#define WSAESTALE (WSABASEERR+70)
451#define WSAEREMOTE (WSABASEERR+71)
452#define WSASYSNOTREADY (WSABASEERR+91)
453#define WSAVERNOTSUPPORTED (WSABASEERR+92)
454#define WSANOTINITIALISED (WSABASEERR+93)
455#define WSAEDISCON (WSABASEERR+101)
456#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
457#define WSATRY_AGAIN (WSABASEERR+1002)
458#define WSANO_RECOVERY (WSABASEERR+1003)
459#define WSANO_DATA (WSABASEERR+1004)
460#define WSA_SECURE_HOST_NOT_FOUND (WSABASEERR+1032)
461#define WSA_IPSEC_NAME_POLICY_ERROR (WSABASEERR+1033)
465#define WSANO_ADDRESS WSANO_DATA
467#define TF_DISCONNECT 0x01
468#define TF_REUSE_SOCKET 0x02
469#define TF_WRITE_BEHIND 0x04
471#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
472#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
473#define WSAGETASYNCBUFLEN(l) LOWORD(l)
474#define WSAGETASYNCERROR(l) HIWORD(l)
475#define WSAGETSELECTEVENT(l) LOWORD(l)
476#define WSAGETSELECTERROR(l) HIWORD(l)
894#if(_WIN32_WINNT >= 0x0501)
897#error WINSOCK2 required.
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * addr
static unsigned int number
unsigned __int3264 UINT_PTR
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_result_bytebuffer_ LocalSockaddrLength struct sockaddr ** LocalSockaddr
_In_ SOCKET sAcceptSocket
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_result_bytebuffer_ LocalSockaddrLength struct sockaddr _Out_ LPINT LocalSockaddrLength
_In_ HANDLE _In_ DWORD _In_ DWORD nNumberOfBytesPerSend
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_result_bytebuffer_ LocalSockaddrLength struct sockaddr _Out_ LPINT _Outptr_result_bytebuffer_ RemoteSockaddrLength struct sockaddr ** RemoteSockaddr
_In_ HANDLE _In_ DWORD nNumberOfBytesToWrite
_In_ SOCKET _In_ DWORD _In_ DWORD _In_ DWORD _Out_ LPDWORD lpdwBytesReceived
_In_ SOCKET _In_ DWORD dwReceiveDataLength
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_result_bytebuffer_ LocalSockaddrLength struct sockaddr _Out_ LPINT _Outptr_result_bytebuffer_ RemoteSockaddrLength struct sockaddr _Out_ LPINT RemoteSockaddrLength
_In_ SOCKET _In_ DWORD _In_ DWORD _In_ DWORD dwRemoteAddressLength
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers
_In_ SOCKET _In_ DWORD _In_ DWORD dwLocalAddressLength
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED lpOverlapped
#define _In_reads_bytes_(s)
#define _Outptr_result_bytebuffer_(s)
#define _Out_writes_bytes_opt_(s)
#define _Out_writes_bytes_to_(s, c)
#define _Out_writes_bytes_to_opt_(s, c)
#define _Out_writes_bytes_(s)
#define _In_reads_bytes_opt_(s)
#define __out_data_source(src_sym)
char szDescription[WSADESCRIPTION_LEN+1]
char szSystemStatus[WSASYS_STATUS_LEN+1]
unsigned short iMaxSockets
SOCKET fd_array[FD_SETSIZE]
struct in_addr imr_interface
struct in_addr imr_multiaddr
#define WSASYS_STATUS_LEN
#define WSADESCRIPTION_LEN
int PASCAL FAR send(_In_ SOCKET s, _In_reads_bytes_(len) const char FAR *buf, _In_ int len, _In_ int flags)
struct _TRANSMIT_FILE_BUFFERS * LPTRANSMIT_FILE_BUFFERS
int PASCAL FAR getsockopt(_In_ SOCKET s, _In_ int level, _In_ int optname, _Out_writes_bytes_(*optlen) char FAR *optval, _Inout_ int FAR *optlen)
void PASCAL FAR WSASetLastError(_In_ int iError)
int PASCAL FAR WSACancelAsyncRequest(_In_ HANDLE hAsyncTaskHandle)
struct sockaddr_in * LPSOCKADDR_IN
int PASCAL FAR WSAGetLastError(void)
unsigned long PASCAL FAR inet_addr(_In_z_ const char FAR *cp)
BOOL PASCAL FAR WSAIsBlocking(void)
int PASCAL FAR WSACleanup(void)
VOID PASCAL FAR GetAcceptExSockaddrs(_In_reads_bytes_(dwReceiveDataLength+dwLocalAddressLength+dwRemoteAddressLength) PVOID lpOutputBuffer, _In_ DWORD dwReceiveDataLength, _In_ DWORD dwLocalAddressLength, _In_ DWORD dwRemoteAddressLength, _Outptr_result_bytebuffer_(*LocalSockaddrLength) struct sockaddr **LocalSockaddr, _Out_ LPINT LocalSockaddrLength, _Outptr_result_bytebuffer_(*RemoteSockaddrLength) struct sockaddr **RemoteSockaddr, _Out_ LPINT RemoteSockaddrLength)
struct hostent * LPHOSTENT
int PASCAL FAR shutdown(_In_ SOCKET s, _In_ int how)
struct hostent * PHOSTENT
struct servent * LPSERVENT
int PASCAL FAR setsockopt(_In_ SOCKET s, _In_ int level, _In_ int optname, _In_reads_bytes_opt_(optlen) const char FAR *optval, _In_ int optlen)
struct hostent FAR *PASCAL FAR gethostbyname(_In_z_ const char FAR *name)
int PASCAL FAR getpeername(_In_ SOCKET s, _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, _Inout_ int FAR *namelen)
int PASCAL FAR WSARecvEx(_In_ SOCKET s, _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf, _In_ int len, _Inout_ int FAR *flags)
struct servent FAR *PASCAL FAR getservbyname(_In_z_ const char FAR *name, _In_z_ const char FAR *proto)
struct _TRANSMIT_FILE_BUFFERS * PTRANSMIT_FILE_BUFFERS
BOOL PASCAL FAR AcceptEx(_In_ SOCKET sListenSocket, _In_ SOCKET sAcceptSocket, _Out_writes_bytes_to_(dwReceiveDataLength+dwLocalAddressLength+dwRemoteAddressLength, *lpdwBytesReceived) PVOID lpOutputBuffer, _In_ DWORD dwReceiveDataLength, _In_ DWORD dwLocalAddressLength, _In_ DWORD dwRemoteAddressLength, _Out_ LPDWORD lpdwBytesReceived, _Inout_ LPOVERLAPPED lpOverlapped)
struct sockaddr_in * PSOCKADDR_IN
int PASCAL FAR WSACancelBlockingCall(void)
HANDLE PASCAL FAR WSAAsyncGetServByName(_In_ HWND hWnd, _In_ u_int wMsg, _In_z_ const char FAR *name, _In_z_ const char FAR *proto, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
HANDLE PASCAL FAR WSAAsyncGetProtoByName(_In_ HWND hWnd, _In_ u_int wMsg, _In_z_ const char FAR *name, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
struct sockaddr * PSOCKADDR
int PASCAL FAR bind(_In_ SOCKET s, _In_reads_bytes_(namelen) const struct sockaddr FAR *addr, _In_ int namelen)
struct servent FAR *PASCAL FAR getservbyport(_In_ int port, _In_z_ const char FAR *proto)
int PASCAL FAR sendto(_In_ SOCKET s, _In_reads_bytes_(len) const char FAR *buf, _In_ int len, _In_ int flags, _In_reads_bytes_opt_(tolen) const struct sockaddr FAR *to, _In_ int tolen)
FARPROC PASCAL FAR WSASetBlockingHook(_In_ FARPROC lpBlockFunc)
struct timeval * PTIMEVAL
int PASCAL FAR WSAAsyncSelect(_In_ SOCKET s, _In_ HWND hWnd, _In_ u_int wMsg, _In_ long lEvent)
struct WSAData * LPWSADATA
struct timeval * LPTIMEVAL
struct servent * PSERVENT
struct protoent FAR *PASCAL FAR getprotobyname(_In_z_ const char FAR *name)
int PASCAL FAR WSAStartup(_In_ WORD wVersionRequired, _Out_ LPWSADATA lpWSAData)
SOCKET PASCAL FAR accept(_In_ SOCKET s, _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr, _Inout_opt_ int FAR *addrlen)
struct _TRANSMIT_FILE_BUFFERS TRANSMIT_FILE_BUFFERS
struct protoent * PPROTOENT
int PASCAL FAR recv(_In_ SOCKET s, _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf, _In_ int len, _In_ int flags)
HANDLE PASCAL FAR WSAAsyncGetHostByAddr(_In_ HWND hWnd, _In_ u_int wMsg, _In_ const char FAR *addr, _In_ int len, _In_ int type, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
int PASCAL FAR recvfrom(_In_ SOCKET s, _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf, _In_ int len, _In_ int flags, _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR *from, _Inout_opt_ int FAR *fromlen)
int PASCAL gethostname(char *, int)
struct hostent FAR *PASCAL FAR gethostbyaddr(_In_reads_bytes_(len) const char FAR *addr, _In_ int len, _In_ int type)
SOCKET PASCAL FAR socket(_In_ int af, _In_ int type, _In_ int protocol)
struct protoent * LPPROTOENT
struct sockaddr * LPSOCKADDR
int PASCAL select(int nfds, fd_set *, fd_set *, fd_set *, const struct timeval *)
int PASCAL __WSAFDIsSet(SOCKET, fd_set FAR *)
BOOL PASCAL FAR TransmitFile(_In_ SOCKET hSocket, _In_ HANDLE hFile, _In_ DWORD nNumberOfBytesToWrite, _In_ DWORD nNumberOfBytesPerSend, _Inout_opt_ LPOVERLAPPED lpOverlapped, _In_opt_ LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, _In_ DWORD dwReserved)
HANDLE PASCAL FAR WSAAsyncGetProtoByNumber(_In_ HWND hWnd, _In_ u_int wMsg, _In_ int number, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
HANDLE PASCAL FAR WSAAsyncGetHostByName(_In_ HWND hWnd, _In_ u_int wMsg, _In_z_ const char FAR *name, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
int PASCAL FAR listen(_In_ SOCKET s, _In_ int backlog)
int PASCAL FAR WSAUnhookBlockingHook(void)
HANDLE PASCAL FAR WSAAsyncGetServByPort(_In_ HWND hWnd, _In_ u_int wMsg, _In_ int port, _In_ const char FAR *proto, _Out_writes_bytes_(buflen) char FAR *buf, _In_ int buflen)
struct protoent FAR *PASCAL FAR getprotobynumber(_In_ int number)
int PASCAL FAR getsockname(_In_ SOCKET s, _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, _Inout_ int FAR *namelen)
char FAR *PASCAL FAR inet_ntoa(_In_ struct in_addr in)