OSDN Git Service

Merge W32API updates, from Cygwin CVS, into legacy branch.
[mingw/mingw-org-wsl.git] / w32api / include / winsock.h
1 /*
2
3   Definitions for winsock 1.1
4
5   Portions Copyright (c) 1980, 1983, 1988, 1993
6   The Regents of the University of California.  All rights reserved.
7
8   Portions Copyright (c) 1993 by Digital Equipment Corporation.
9  */
10
11 #ifndef _WINSOCK_H
12 #define _WINSOCK_H
13 #if __GNUC__ >=3
14 #pragma GCC system_header
15 #endif
16
17 #define _GNU_H_WINDOWS32_SOCKETS
18
19 #include <windows.h>
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 #if !defined ( _BSDTYPES_DEFINED )
26 /* also defined in gmon.h and in cygwin's sys/types */
27 typedef unsigned char   u_char;
28 typedef unsigned short  u_short;
29 typedef unsigned int    u_int;
30 typedef unsigned long   u_long;
31 #define _BSDTYPES_DEFINED
32 #endif /* !defined  _BSDTYPES_DEFINED */
33 typedef u_int   SOCKET;
34 #ifndef FD_SETSIZE
35 #define FD_SETSIZE      64
36 #endif
37
38 /* shutdown() how types */
39 #define SD_RECEIVE      0x00
40 #define SD_SEND         0x01
41 #define SD_BOTH         0x02
42
43 #ifndef _SYS_TYPES_FD_SET
44 /* fd_set may have be defined by the newlib <sys/types.h>
45  * if  __USE_W32_SOCKETS not defined.
46  */
47 #ifdef fd_set
48 #undef fd_set
49 #endif
50 typedef struct fd_set {
51         u_int   fd_count;
52         SOCKET  fd_array[FD_SETSIZE];
53 } fd_set;
54 int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
55 #ifndef FD_CLR
56 #define FD_CLR(fd,set) do { u_int __i;\
57 for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
58         if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
59         while (__i < ((fd_set *)(set))->fd_count-1) {\
60                 ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\
61                 __i++;\
62         }\
63         ((fd_set*)(set))->fd_count--;\
64         break;\
65         }\
66 }\
67 } while (0)
68 #endif
69 #ifndef FD_SET
70 #define FD_SET(fd, set) do { \
71     if (((fd_set *)(set))->fd_count < FD_SETSIZE) \
72         ((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\
73 }while (0)
74 #endif
75 #ifndef FD_ZERO
76 #define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
77 #endif
78 #ifndef FD_ISSET
79 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
80 #endif
81 #elif !defined(USE_SYS_TYPES_FD_SET)
82 #warning "fd_set and associated macros have been defined in sys/types.  \
83     This can cause runtime problems with W32 sockets"
84 #endif /* ndef _SYS_TYPES_FD_SET */
85
86 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
87 #ifndef _TIMEVAL_DEFINED /* also in sys/time.h */
88 #define _TIMEVAL_DEFINED
89 struct timeval {
90         long    tv_sec;
91         long    tv_usec;
92 };
93 #define timerisset(tvp)  ((tvp)->tv_sec || (tvp)->tv_usec)
94 #define timercmp(tvp, uvp, cmp) \
95         (((tvp)->tv_sec != (uvp)->tv_sec) ? \
96         ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
97         ((tvp)->tv_usec cmp (uvp)->tv_usec))
98 #define timerclear(tvp)  (tvp)->tv_sec = (tvp)->tv_usec = 0
99 #endif /* _TIMEVAL_DEFINED */
100 struct  hostent {
101         char    *h_name;
102         char    **h_aliases;
103         short   h_addrtype;
104         short   h_length;
105         char    **h_addr_list;
106 #define h_addr h_addr_list[0]
107 };
108 struct linger {
109         u_short l_onoff;
110         u_short l_linger;
111 };
112 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
113 #define IOCPARM_MASK    0x7f
114 #define IOC_VOID        0x20000000
115 #define IOC_OUT 0x40000000
116 #define IOC_IN  0x80000000
117 #define IOC_INOUT       (IOC_IN|IOC_OUT)
118
119 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
120 #define _IO(x,y)        (IOC_VOID|((x)<<8)|(y))
121 #define _IOR(x,y,t)     (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
122 #define _IOW(x,y,t)     (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
123 #define FIONBIO _IOW('f', 126, u_long)
124 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
125
126 #define FIONREAD        _IOR('f', 127, u_long)
127 #define FIOASYNC        _IOW('f', 125, u_long)
128 #define SIOCSHIWAT      _IOW('s',  0, u_long)
129 #define SIOCGHIWAT      _IOR('s',  1, u_long)
130 #define SIOCSLOWAT      _IOW('s',  2, u_long)
131 #define SIOCGLOWAT      _IOR('s',  3, u_long)
132 #define SIOCATMARK      _IOR('s',  7, u_long)
133
134 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
135 struct netent {
136         char    * n_name;
137         char    **n_aliases;
138         short   n_addrtype;
139         u_long n_net;
140 };
141 struct  servent {
142         char    *s_name;
143         char    **s_aliases;
144         short   s_port;
145         char    *s_proto;
146 };
147 struct  protoent {
148         char    *p_name;
149         char    **p_aliases;
150         short   p_proto;
151 };
152 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
153
154 #define IPPROTO_IP      0
155 #define IPPROTO_ICMP    1
156 #define IPPROTO_IGMP 2
157 #define IPPROTO_GGP 3
158 #define IPPROTO_TCP     6
159 #define IPPROTO_PUP     12
160 #define IPPROTO_UDP     17
161 #define IPPROTO_IDP     22
162 #define IPPROTO_ND      77
163 #define IPPROTO_RAW     255
164 #define IPPROTO_MAX     256
165 #define IPPORT_ECHO     7
166 #define IPPORT_DISCARD  9
167 #define IPPORT_SYSTAT   11
168 #define IPPORT_DAYTIME  13
169 #define IPPORT_NETSTAT  15
170 #define IPPORT_FTP      21
171 #define IPPORT_TELNET   23
172 #define IPPORT_SMTP     25
173 #define IPPORT_TIMESERVER 37
174 #define IPPORT_NAMESERVER 42
175 #define IPPORT_WHOIS    43
176 #define IPPORT_MTP      57
177 #define IPPORT_TFTP     69
178 #define IPPORT_RJE      77
179 #define IPPORT_FINGER   79
180 #define IPPORT_TTYLINK  87
181 #define IPPORT_SUPDUP   95
182 #define IPPORT_EXECSERVER       512
183 #define IPPORT_LOGINSERVER      513
184 #define IPPORT_CMDSERVER        514
185 #define IPPORT_EFSSERVER        520
186 #define IPPORT_BIFFUDP  512
187 #define IPPORT_WHOSERVER        513
188 #define IPPORT_ROUTESERVER      520
189 #define IPPORT_RESERVED 1024
190 #define IMPLINK_IP      155
191 #define IMPLINK_LOWEXPER        156
192 #define IMPLINK_HIGHEXPER       158
193 struct in_addr {
194         union {
195                 struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
196                 struct { u_short s_w1,s_w2; } S_un_w;
197                 u_long S_addr;
198         } S_un;
199 #define s_addr  S_un.S_addr
200 #define s_host  S_un.S_un_b.s_b2
201 #define s_net   S_un.S_un_b.s_b1
202 #define s_imp   S_un.S_un_w.s_w2
203 #define s_impno S_un.S_un_b.s_b4
204 #define s_lh    S_un.S_un_b.s_b3
205 };
206 #define IN_CLASSA(i)    (((long)(i)&0x80000000) == 0)
207 #define IN_CLASSA_NET   0xff000000
208 #define IN_CLASSA_NSHIFT        24
209 #define IN_CLASSA_HOST  0x00ffffff
210 #define IN_CLASSA_MAX   128
211 #define IN_CLASSB(i)    (((long)(i)&0xc0000000)==0x80000000)
212 #define IN_CLASSB_NET      0xffff0000
213 #define IN_CLASSB_NSHIFT        16
214 #define IN_CLASSB_HOST    0x0000ffff
215 #define IN_CLASSB_MAX      65536
216 #define IN_CLASSC(i)    (((long)(i)&0xe0000000)==0xc0000000)
217 #define IN_CLASSC_NET      0xffffff00
218 #define IN_CLASSC_NSHIFT        8
219 #define IN_CLASSC_HOST    0xff
220 #define INADDR_ANY            (u_long)0
221 #define INADDR_LOOPBACK  0x7f000001
222 #define INADDR_BROADCAST        (u_long)0xffffffff
223 #define INADDR_NONE     0xffffffff
224 struct sockaddr_in {
225         short   sin_family;
226         u_short sin_port;
227         struct  in_addr sin_addr;
228         char    sin_zero[8];
229 };
230 #define WSADESCRIPTION_LEN      256
231 #define WSASYS_STATUS_LEN       128
232 typedef struct WSAData {
233         WORD    wVersion;
234         WORD    wHighVersion;
235         char    szDescription[WSADESCRIPTION_LEN+1];
236         char    szSystemStatus[WSASYS_STATUS_LEN+1];
237         unsigned short  iMaxSockets;
238         unsigned short  iMaxUdpDg;
239         char *  lpVendorInfo;
240 } WSADATA;
241 typedef WSADATA *LPWSADATA;
242
243 #ifndef __INSIDE_MSYS__
244 #define IP_OPTIONS      1
245 #define SO_DEBUG        1
246 #define SO_ACCEPTCONN   2
247 #define SO_REUSEADDR    4
248 #define SO_KEEPALIVE    8
249 #define SO_DONTROUTE    16
250 #define SO_BROADCAST    32
251 #define SO_USELOOPBACK  64
252 #define SO_LINGER       128
253 #define SO_OOBINLINE    256
254 #define SO_DONTLINGER   (u_int)(~SO_LINGER)
255 #define SO_SNDBUF       0x1001
256 #define SO_RCVBUF       0x1002
257 #define SO_SNDLOWAT     0x1003
258 #define SO_RCVLOWAT     0x1004
259 #define SO_SNDTIMEO     0x1005
260 #define SO_RCVTIMEO     0x1006
261 #define SO_ERROR        0x1007
262 #define SO_TYPE 0x1008
263 #endif /* !__INSIDE_MSYS__ */
264 /*
265  * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll).
266  * They will cause errors or unexpected results if used with the
267  * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h.
268  */
269 #define IP_MULTICAST_IF 2
270 #define IP_MULTICAST_TTL        3
271 #define IP_MULTICAST_LOOP       4
272 #define IP_ADD_MEMBERSHIP       5
273 #define IP_DROP_MEMBERSHIP  6
274
275 #define IP_DEFAULT_MULTICAST_TTL   1
276 #define IP_DEFAULT_MULTICAST_LOOP  1
277 #define IP_MAX_MEMBERSHIPS       20
278 struct ip_mreq {
279         struct in_addr imr_multiaddr;
280         struct in_addr imr_interface;
281 };
282 #define INVALID_SOCKET (SOCKET)(~0)
283 #define SOCKET_ERROR    (-1)
284 #define SOCK_STREAM     1
285 #define SOCK_DGRAM      2
286 #define SOCK_RAW        3
287 #define SOCK_RDM        4
288 #define SOCK_SEQPACKET  5
289 #define TCP_NODELAY     0x0001
290 #define AF_UNSPEC       0
291 #define AF_UNIX 1
292 #define AF_INET 2
293 #define AF_IMPLINK      3
294 #define AF_PUP  4
295 #define AF_CHAOS        5
296 #define AF_IPX  6
297 #define AF_NS   6
298 #define AF_ISO  7
299 #define AF_OSI  AF_ISO
300 #define AF_ECMA 8
301 #define AF_DATAKIT      9
302 #define AF_CCITT        10
303 #define AF_SNA  11
304 #define AF_DECnet       12
305 #define AF_DLI  13
306 #define AF_LAT  14
307 #define AF_HYLINK       15
308 #define AF_APPLETALK    16
309 #define AF_NETBIOS      17
310 #define AF_VOICEVIEW    18
311 #define AF_FIREFOX      19
312 #define AF_UNKNOWN1     20
313 #define AF_BAN  21
314 #define AF_ATM  22
315 #define AF_INET6        23
316 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
317 #define AF_MAX  24
318 struct sockaddr {
319         u_short sa_family;
320         char    sa_data[14];
321 };
322 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
323
324 struct sockproto {
325         u_short sp_family;
326         u_short sp_protocol;
327 };
328 #define PF_UNSPEC       AF_UNSPEC
329 #define PF_UNIX AF_UNIX
330 #define PF_INET AF_INET
331 #define PF_IMPLINK      AF_IMPLINK
332 #define PF_PUP  AF_PUP
333 #define PF_CHAOS        AF_CHAOS
334 #define PF_NS   AF_NS
335 #define PF_IPX  AF_IPX
336 #define PF_ISO  AF_ISO
337 #define PF_OSI  AF_OSI
338 #define PF_ECMA AF_ECMA
339 #define PF_DATAKIT      AF_DATAKIT
340 #define PF_CCITT        AF_CCITT
341 #define PF_SNA  AF_SNA
342 #define PF_DECnet       AF_DECnet
343 #define PF_DLI  AF_DLI
344 #define PF_LAT  AF_LAT
345 #define PF_HYLINK       AF_HYLINK
346 #define PF_APPLETALK    AF_APPLETALK
347 #define PF_VOICEVIEW    AF_VOICEVIEW
348 #define PF_FIREFOX      AF_FIREFOX
349 #define PF_UNKNOWN1     AF_UNKNOWN1
350 #define PF_BAN  AF_BAN
351 #define PF_ATM  AF_ATM
352 #define PF_INET6        AF_INET6
353 #define PF_MAX  AF_MAX
354 #define SOL_SOCKET      0xffff
355 #define SOMAXCONN       5
356 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
357 #define MSG_OOB 1
358 #define MSG_PEEK        2
359 #define MSG_DONTROUTE   4
360 #endif  /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
361 #define MSG_MAXIOVLEN   16
362 #define MSG_PARTIAL     0x8000
363 #define MAXGETHOSTSTRUCT        1024
364 #define FD_READ 1
365 #define FD_WRITE        2
366 #define FD_OOB  4
367 #define FD_ACCEPT       8
368 #define FD_CONNECT      16
369 #define FD_CLOSE        32
370 #ifndef WSABASEERR
371 #define WSABASEERR      10000
372 #define WSAEINTR        (WSABASEERR+4)
373 #define WSAEBADF        (WSABASEERR+9)
374 #define WSAEACCES       (WSABASEERR+13)
375 #define WSAEFAULT       (WSABASEERR+14)
376 #define WSAEINVAL       (WSABASEERR+22)
377 #define WSAEMFILE       (WSABASEERR+24)
378 #define WSAEWOULDBLOCK  (WSABASEERR+35)
379 #define WSAEINPROGRESS  (WSABASEERR+36)
380 #define WSAEALREADY     (WSABASEERR+37)
381 #define WSAENOTSOCK     (WSABASEERR+38)
382 #define WSAEDESTADDRREQ (WSABASEERR+39)
383 #define WSAEMSGSIZE     (WSABASEERR+40)
384 #define WSAEPROTOTYPE   (WSABASEERR+41)
385 #define WSAENOPROTOOPT  (WSABASEERR+42)
386 #define WSAEPROTONOSUPPORT      (WSABASEERR+43)
387 #define WSAESOCKTNOSUPPORT      (WSABASEERR+44)
388 #define WSAEOPNOTSUPP   (WSABASEERR+45)
389 #define WSAEPFNOSUPPORT (WSABASEERR+46)
390 #define WSAEAFNOSUPPORT (WSABASEERR+47)
391 #define WSAEADDRINUSE   (WSABASEERR+48)
392 #define WSAEADDRNOTAVAIL        (WSABASEERR+49)
393 #define WSAENETDOWN     (WSABASEERR+50)
394 #define WSAENETUNREACH  (WSABASEERR+51)
395 #define WSAENETRESET    (WSABASEERR+52)
396 #define WSAECONNABORTED (WSABASEERR+53)
397 #define WSAECONNRESET   (WSABASEERR+54)
398 #define WSAENOBUFS      (WSABASEERR+55)
399 #define WSAEISCONN      (WSABASEERR+56)
400 #define WSAENOTCONN     (WSABASEERR+57)
401 #define WSAESHUTDOWN    (WSABASEERR+58)
402 #define WSAETOOMANYREFS (WSABASEERR+59)
403 #define WSAETIMEDOUT    (WSABASEERR+60)
404 #define WSAECONNREFUSED (WSABASEERR+61)
405 #define WSAELOOP        (WSABASEERR+62)
406 #define WSAENAMETOOLONG (WSABASEERR+63)
407 #define WSAEHOSTDOWN    (WSABASEERR+64)
408 #define WSAEHOSTUNREACH (WSABASEERR+65)
409 #define WSAENOTEMPTY    (WSABASEERR+66)
410 #define WSAEPROCLIM     (WSABASEERR+67)
411 #define WSAEUSERS       (WSABASEERR+68)
412 #define WSAEDQUOT       (WSABASEERR+69)
413 #define WSAESTALE       (WSABASEERR+70)
414 #define WSAEREMOTE      (WSABASEERR+71)
415 #define WSAEDISCON      (WSABASEERR+101)
416 #define WSASYSNOTREADY  (WSABASEERR+91)
417 #define WSAVERNOTSUPPORTED      (WSABASEERR+92)
418 #define WSANOTINITIALISED       (WSABASEERR+93)
419 #define WSAHOST_NOT_FOUND       (WSABASEERR+1001)
420 #define WSATRY_AGAIN    (WSABASEERR+1002)
421 #define WSANO_RECOVERY  (WSABASEERR+1003)
422 #define WSANO_DATA      (WSABASEERR+1004)
423 #endif /* !WSABASEERR */
424
425 #define WSANO_ADDRESS   WSANO_DATA
426 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
427 #define h_errno WSAGetLastError()
428 #define HOST_NOT_FOUND  WSAHOST_NOT_FOUND
429 #define TRY_AGAIN       WSATRY_AGAIN
430 #define NO_RECOVERY     WSANO_RECOVERY
431 #define NO_DATA WSANO_DATA
432 #define NO_ADDRESS      WSANO_ADDRESS
433 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
434 SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
435 int PASCAL bind(SOCKET,const struct sockaddr*,int);
436 int PASCAL closesocket(SOCKET);
437 int PASCAL connect(SOCKET,const struct sockaddr*,int);
438 int PASCAL ioctlsocket(SOCKET,long,u_long *);
439 int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
440 int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
441 int PASCAL getsockopt(SOCKET,int,int,char*,int*);
442 unsigned long PASCAL inet_addr(const char*);
443 DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
444 int PASCAL listen(SOCKET,int);
445 int PASCAL recv(SOCKET,char*,int,int);
446 int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
447 int PASCAL send(SOCKET,const char*,int,int);
448 int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
449 int PASCAL setsockopt(SOCKET,int,int,const char*,int);
450 int PASCAL shutdown(SOCKET,int);
451 SOCKET PASCAL socket(int,int,int);
452 DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
453 DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
454 DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
455 DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
456 DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
457 DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
458 int PASCAL WSAStartup(WORD,LPWSADATA);
459 int PASCAL WSACleanup(void);
460 void PASCAL WSASetLastError(int);
461 int PASCAL WSAGetLastError(void);
462 BOOL PASCAL WSAIsBlocking(void);
463 int PASCAL WSAUnhookBlockingHook(void);
464 FARPROC PASCAL WSASetBlockingHook(FARPROC);
465 int PASCAL WSACancelBlockingCall(void);
466 HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
467 HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
468 HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
469 HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
470 HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
471 HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
472 int PASCAL WSACancelAsyncRequest(HANDLE);
473 int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
474 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
475 u_long PASCAL htonl(u_long);
476 u_long PASCAL ntohl(u_long);
477 u_short PASCAL htons(u_short);
478 u_short PASCAL ntohs(u_short);
479 int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
480 int PASCAL gethostname(char*,int);
481 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
482
483 #define WSAMAKEASYNCREPLY(b,e)  MAKELONG(b,e)
484 #define WSAMAKESELECTREPLY(e,error)     MAKELONG(e,error)
485 #define WSAGETASYNCBUFLEN(l)    LOWORD(l)
486 #define WSAGETASYNCERROR(l)     HIWORD(l)
487 #define WSAGETSELECTEVENT(l)    LOWORD(l)
488 #define WSAGETSELECTERROR(l)    HIWORD(l)
489
490 typedef struct sockaddr SOCKADDR;
491 typedef struct sockaddr *PSOCKADDR;
492 typedef struct sockaddr *LPSOCKADDR;
493 typedef struct sockaddr_in SOCKADDR_IN;
494 typedef struct sockaddr_in *PSOCKADDR_IN;
495 typedef struct sockaddr_in *LPSOCKADDR_IN;
496 typedef struct linger LINGER;
497 typedef struct linger *PLINGER;
498 typedef struct linger *LPLINGER;
499 typedef struct in_addr IN_ADDR;
500 typedef struct in_addr *PIN_ADDR;
501 typedef struct in_addr *LPIN_ADDR;
502 typedef struct fd_set FD_SET;
503 typedef struct fd_set *PFD_SET;
504 typedef struct fd_set *LPFD_SET;
505 typedef struct hostent HOSTENT;
506 typedef struct hostent *PHOSTENT;
507 typedef struct hostent *LPHOSTENT;
508 typedef struct servent SERVENT;
509 typedef struct servent *PSERVENT;
510 typedef struct servent *LPSERVENT;
511 typedef struct protoent PROTOENT;
512 typedef struct protoent *PPROTOENT;
513 typedef struct protoent *LPPROTOENT;
514 typedef struct timeval TIMEVAL;
515 typedef struct timeval *PTIMEVAL;
516 typedef struct timeval *LPTIMEVAL;
517
518 #ifdef __cplusplus
519 }
520 #endif
521 /*
522  * Recent MSDN docs indicate that the MS-specific extensions exported from
523  * mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are
524  * declared in mswsock.h. These extensions are not supported on W9x or WinCE.
525  * However, code using WinSock 1.1 API may expect the declarations and
526  * associated defines to be in this header. Thus we include mswsock.h here.
527  *
528  * When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions
529  * are automatically routed to mswsock.dll (on platforms with support).
530  * The WinSock 2 lib, ws2_32.dll, does not contain any references to
531  * the mswsock extensions.
532  */
533
534 #include <mswsock.h>
535
536 #endif