VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/shaderlib/wine/include/winsock.h@ 53201

Last change on this file since 53201 was 53201, checked in by vboxsync, 11 years ago

Devices/Main: vmsvga updates

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 34.2 KB
Line 
1/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
2 *
3 * This header file corresponds to version 1.1 of the Windows Sockets
4 * specification.
5 *
6 * Copyright (C) the Wine project
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 */
22
23#ifdef __WINESRC__
24# ifndef __WINE_WINSOCK2__
25# error Please use Winsock2 in Wine
26# endif
27#endif
28
29#ifndef __WINE_WINSOCKAPI_STDLIB_H
30#define __WINE_WINSOCKAPI_STDLIB_H
31
32/*
33 * This section defines the items that conflict with the Unix headers.
34 */
35#ifndef USE_WS_PREFIX
36/* We are not using the WS_ prefix we risk getting conflicts for
37 * everything related to select.
38 */
39# ifdef FD_CLR
40/* Too late, the Unix version of stdlib.h was included before winsock.h.
41 * This means select and all the related stuff is already defined and we
42 * cannot override types and function prototypes.
43 * All we can do is disable all these symbols so that they are not used
44 * inadvertently.
45 */
46# include <sys/types.h>
47# undef FD_SETSIZE
48# undef FD_CLR
49# undef FD_SET
50# undef FD_ZERO
51# undef FD_ISSET
52
53# define FD_SETSIZE Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
54# define FD_CLR Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
55# define FD_SET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
56# define FD_ZERO Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
57# define FD_ISSET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
58# define fd_set Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
59# define select Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
60# elif defined(RLIM_INFINITY)
61/* On Darwin stdlib.h includes sys/resource.h which defines timeval but not the fd_set macros */
62# define fd_set unix_fd_set
63# include <sys/types.h>
64# include <time.h>
65# include <stdlib.h>
66# undef fd_set
67# undef FD_SETSIZE
68# undef FD_CLR
69# undef FD_SET
70# undef FD_ZERO
71# undef FD_ISSET
72# define select Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
73# define timeval Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
74# else /* FD_CLR */
75/* stdlib.h has not been included yet so it's not too late. Include it now
76 * making sure that none of the select symbols is affected. Then we can
77 * define them with our own values.
78 */
79# define fd_set unix_fd_set
80# define timeval unix_timeval
81# define select unix_select
82# define socklen_t unix_socklen_t
83# define u_long unix_u_long
84# include <sys/types.h>
85# include <time.h>
86# include <stdlib.h>
87# undef fd_set
88# undef timeval
89# undef select
90# undef socklen_t
91# undef u_long
92# undef FD_SETSIZE
93# undef FD_CLR
94# undef FD_SET
95# undef FD_ZERO
96# undef FD_ISSET
97# undef _TIMEVAL_DEFINED
98
99# define WS_DEFINE_SELECT
100# endif /* FD_CLR */
101
102#else
103# define WS_DEFINE_SELECT
104# include <sys/types.h>
105# include <stdlib.h>
106#endif /* !USE_WS_PREFIX */
107
108#endif /* __WINE_WINSOCKAPI_STDLIB_H */
109
110#include <windows.h>
111
112#ifndef _WINSOCKAPI_
113#define _WINSOCKAPI_
114
115#include <inaddr.h>
116
117#ifdef USE_WS_PREFIX
118typedef unsigned char WS_u_char;
119typedef unsigned short WS_u_short;
120typedef unsigned int WS_u_int;
121typedef ULONG WS_u_long;
122#elif (defined(_MSC_VER) || defined(__MINGW32__) || defined(__WATCOMC__)) && !defined(_BSDTYPES_DEFINED)
123/* MinGW doesn't define the u_xxx types */
124typedef unsigned char u_char;
125typedef unsigned short u_short;
126typedef unsigned int u_int;
127typedef ULONG u_long;
128#define _BSDTYPES_DEFINED
129#else
130#define u_long ULONG /* make sure we don't use the system u_long */
131#endif
132
133#ifdef USE_WS_PREFIX
134# define WS(x) WS_##x
135#else
136# define WS(x) x
137#endif
138
139#ifdef __cplusplus
140extern "C" {
141#endif /* defined(__cplusplus) */
142
143/*
144 * Address families
145 */
146#ifndef USE_WS_PREFIX
147#define AF_UNSPEC 0
148#define AF_UNIX 1
149#define AF_INET 2
150#define AF_IMPLINK 3
151#define AF_PUP 4
152#define AF_CHAOS 5
153#define AF_NS 6
154#define AF_IPX AF_NS
155#define AF_ISO 7
156#define AF_OSI AF_ISO
157#define AF_ECMA 8
158#define AF_DATAKIT 9
159#define AF_CCITT 10
160#define AF_SNA 11
161#define AF_DECnet 12
162#define AF_DLI 13
163#define AF_LAT 14
164#define AF_HYLINK 15
165#define AF_APPLETALK 16
166#define AF_NETBIOS 17
167#define AF_VOICEVIEW 18
168#define AF_FIREFOX 19
169#define AF_UNKNOWN1 20
170#define AF_BAN 21
171#define AF_ATM 22
172#define AF_INET6 23
173#define AF_CLUSTER 24
174#define AF_12844 25
175#define AF_IRDA 26
176#define AF_MAX 27
177#define PF_UNSPEC AF_UNSPEC
178#define PF_UNIX AF_UNIX
179#define PF_INET AF_INET
180#define PF_IMPLINK AF_IMPLINK
181#define PF_PUP AF_PUP
182#define PF_CHAOS AF_CHAOS
183#define PF_NS AF_NS
184#define PF_IPX AF_IPX
185#define PF_ISO AF_ISO
186#define PF_OSI AF_OSI
187#define PF_ECMA AF_ECMA
188#define PF_DATAKIT AF_DATAKIT
189#define PF_CCITT AF_CCITT
190#define PF_SNA AF_SNA
191#define PF_DECnet AF_DECnet
192#define PF_DLI AF_DLI
193#define PF_LAT AF_LAT
194#define PF_HYLINK AF_HYLINK
195#define PF_APPLETALK AF_APPLETALK
196#define PF_VOICEVIEW AF_VOICEVIEW
197#define PF_FIREFOX AF_FIREFOX
198#define PF_UNKNOWN1 AF_UNKNOWN1
199#define PF_BAN AF_BAN
200#define PF_MAX AF_MAX
201#else /* USE_WS_PREFIX */
202#define WS_AF_UNSPEC 0
203#define WS_AF_UNIX 1
204#define WS_AF_INET 2
205#define WS_AF_IMPLINK 3
206#define WS_AF_PUP 4
207#define WS_AF_CHAOS 5
208#define WS_AF_NS 6
209#define WS_AF_IPX WS_AF_NS
210#define WS_AF_ISO 7
211#define WS_AF_OSI AF_ISO
212#define WS_AF_ECMA 8
213#define WS_AF_DATAKIT 9
214#define WS_AF_CCITT 10
215#define WS_AF_SNA 11
216#define WS_AF_DECnet 12
217#define WS_AF_DLI 13
218#define WS_AF_LAT 14
219#define WS_AF_HYLINK 15
220#define WS_AF_APPLETALK 16
221#define WS_AF_NETBIOS 17
222#define WS_AF_VOICEVIEW 18
223#define WS_AF_FIREFOX 19
224#define WS_AF_UNKNOWN1 20
225#define WS_AF_BAN 21
226#define WS_AF_ATM 22
227#define WS_AF_INET6 23
228#define WS_AF_CLUSTER 24
229#define WS_AF_12844 25
230#define WS_AF_IRDA 26
231#define WS_AF_MAX 27
232#endif /* USE_WS_PREFIX */
233
234/*
235 * Types
236 */
237#ifndef USE_WS_PREFIX
238#define SOCK_STREAM 1
239#define SOCK_DGRAM 2
240#define SOCK_RAW 3
241#define SOCK_RDM 4
242#define SOCK_SEQPACKET 5
243#else /* USE_WS_PREFIX */
244#define WS_SOCK_STREAM 1
245#define WS_SOCK_DGRAM 2
246#define WS_SOCK_RAW 3
247#define WS_SOCK_RDM 4
248#define WS_SOCK_SEQPACKET 5
249#endif /* USE_WS_PREFIX */
250
251
252/*
253 * Protocols
254 */
255#ifndef USE_WS_PREFIX
256#define IPPROTO_IP 0
257#define IPPROTO_ICMP 1
258#define IPPROTO_IGMP 2
259#define IPPROTO_GGP 3
260#define IPPROTO_TCP 6
261#define IPPROTO_UDP 17
262#define IPPROTO_IDP 22
263#define IPPROTO_IPV6 41
264#define IPPROTO_ND 77
265#define IPPROTO_RAW 255
266#define IPPROTO_MAX 256
267#else /* USE_WS_PREFIX */
268#define WS_IPPROTO_IP 0
269#define WS_IPPROTO_ICMP 1
270#define WS_IPPROTO_IGMP 2
271#define WS_IPPROTO_GGP 3
272#define WS_IPPROTO_TCP 6
273#define WS_IPPROTO_UDP 17
274#define WS_IPPROTO_IDP 22
275#define WS_IPPROTO_IPV6 41
276#define WS_IPPROTO_ND 77
277#define WS_IPPROTO_RAW 255
278#define WS_IPPROTO_MAX 256
279#endif /* USE_WS_PREFIX */
280
281typedef struct WS(protoent)
282{
283 char* p_name;
284 char** p_aliases;
285 short p_proto;
286} PROTOENT, *PPROTOENT, *LPPROTOENT;
287
288
289
290/*
291 * Networks
292 */
293struct WS(netent)
294{
295 char* n_name; /* official name of net */
296 char** n_aliases; /* alias list */
297 short n_addrtype; /* net address type */
298 ULONG n_net; /* network # */
299};
300
301
302/*
303 * Services
304 */
305#ifndef USE_WS_PREFIX
306#define IPPORT_ECHO 7
307#define IPPORT_DISCARD 9
308#define IPPORT_SYSTAT 11
309#define IPPORT_DAYTIME 13
310#define IPPORT_NETSTAT 15
311#define IPPORT_FTP 21
312#define IPPORT_TELNET 23
313#define IPPORT_SMTP 25
314#define IPPORT_TIMESERVER 37
315#define IPPORT_NAMESERVER 42
316#define IPPORT_WHOIS 43
317#define IPPORT_MTP 57
318#define IPPORT_TFTP 69
319#define IPPORT_RJE 77
320#define IPPORT_FINGER 79
321#define IPPORT_TTYLINK 87
322#define IPPORT_SUPDUP 95
323#define IPPORT_EXECSERVER 512
324#define IPPORT_LOGINSERVER 513
325#define IPPORT_CMDSERVER 514
326#define IPPORT_EFSSERVER 520
327#define IPPORT_BIFFUDP 512
328#define IPPORT_WHOSERVER 513
329#define IPPORT_ROUTESERVER 520
330#define IPPORT_RESERVED 1024
331#else /* USE_WS_PREFIX */
332#define WS_IPPORT_ECHO 7
333#define WS_IPPORT_DISCARD 9
334#define WS_IPPORT_SYSTAT 11
335#define WS_IPPORT_DAYTIME 13
336#define WS_IPPORT_NETSTAT 15
337#define WS_IPPORT_FTP 21
338#define WS_IPPORT_TELNET 23
339#define WS_IPPORT_SMTP 25
340#define WS_IPPORT_TIMESERVER 37
341#define WS_IPPORT_NAMESERVER 42
342#define WS_IPPORT_WHOIS 43
343#define WS_IPPORT_MTP 57
344#define WS_IPPORT_TFTP 69
345#define WS_IPPORT_RJE 77
346#define WS_IPPORT_FINGER 79
347#define WS_IPPORT_TTYLINK 87
348#define WS_IPPORT_SUPDUP 95
349#define WS_IPPORT_EXECSERVER 512
350#define WS_IPPORT_LOGINSERVER 513
351#define WS_IPPORT_CMDSERVER 514
352#define WS_IPPORT_EFSSERVER 520
353#define WS_IPPORT_BIFFUDP 512
354#define WS_IPPORT_WHOSERVER 513
355#define WS_IPPORT_ROUTESERVER 520
356#define WS_IPPORT_RESERVED 1024
357#endif /* USE_WS_PREFIX */
358
359typedef struct WS(servent)
360{
361 char* s_name; /* official service name */
362 char** s_aliases; /* alias list */
363#ifdef _WIN64
364 char* s_proto; /* protocol to use */
365 short s_port; /* port # */
366#else
367 short s_port; /* port # */
368 char* s_proto; /* protocol to use */
369#endif
370} SERVENT, *PSERVENT, *LPSERVENT;
371
372
373
374/*
375 * Hosts
376 */
377
378typedef struct WS(hostent)
379{
380 char* h_name; /* official name of host */
381 char** h_aliases; /* alias list */
382 short h_addrtype; /* host address type */
383 short h_length; /* length of address */
384 char** h_addr_list; /* list of addresses from name server */
385#define h_addr h_addr_list[0] /* address, for backward compat */
386} HOSTENT, *PHOSTENT, *LPHOSTENT;
387
388
389/*
390 * Sockets
391 */
392
393typedef UINT_PTR SOCKET;
394
395/*
396 * This is used instead of -1, since the
397 * SOCKET type is unsigned.
398 */
399#define INVALID_SOCKET (SOCKET)(~0)
400#define SOCKET_ERROR (-1)
401
402typedef struct WS(sockaddr)
403{
404 WS(u_short) sa_family;
405 char sa_data[14];
406} SOCKADDR, *PSOCKADDR, *LPSOCKADDR;
407
408typedef struct WS(linger)
409{
410 WS(u_short) l_onoff; /* option on/off */
411 WS(u_short) l_linger; /* linger time */
412} LINGER, *PLINGER, *LPLINGER;
413
414/*
415 * Select
416 */
417
418#ifdef WS_DEFINE_SELECT
419/* Define our own version of select and the associated types and macros */
420
421# ifndef USE_WS_PREFIX
422# ifndef FD_SETSIZE
423# define FD_SETSIZE 64
424# endif
425# else
426# ifndef WS_FD_SETSIZE
427# define WS_FD_SETSIZE 64
428# endif
429# endif
430
431typedef struct WS(fd_set)
432{
433 WS(u_int) fd_count; /* how many are SET? */
434# ifndef USE_WS_PREFIX
435 SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
436# else
437 SOCKET fd_array[WS_FD_SETSIZE];/* an array of SOCKETs */
438# endif
439} WS(fd_set), FD_SET, *PFD_SET, *LPFD_SET;
440
441#ifndef _TIMEVAL_DEFINED
442#define _TIMEVAL_DEFINED
443typedef struct WS(timeval)
444{
445 LONG tv_sec; /* seconds */
446 LONG tv_usec; /* and microseconds */
447} TIMEVAL, *PTIMEVAL, *LPTIMEVAL;
448#endif
449
450#define __WS_FD_CLR(fd, set, cast) do { \
451 unsigned int __i; \
452 for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
453 { \
454 if (((cast*)(set))->fd_array[__i] == fd) \
455 { \
456 while (__i < ((cast*)(set))->fd_count-1) \
457 { \
458 ((cast*)(set))->fd_array[__i] = \
459 ((cast*)(set))->fd_array[__i+1]; \
460 __i++; \
461 } \
462 ((cast*)(set))->fd_count--; \
463 break; \
464 } \
465 } \
466} while(0)
467#define __WS_FD_SET1(fd, set, cast) do { \
468 if (((cast*)(set))->fd_count < FD_SETSIZE) \
469 ((cast*)(set))->fd_array[((cast*)(set))->fd_count++]=(fd); \
470} while(0)
471/* This version checks if the filedesc is already in the list, and appends it
472 * only if it's not the case
473 */
474#define __WS_FD_SET2(fd, set, cast) do { \
475 unsigned int __i; \
476 for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
477 { \
478 if (((cast*)(set))->fd_array[__i]==(fd)) \
479 break; \
480 } \
481 if (__i == ((cast*)(set))->fd_count && ((cast*)(set))->fd_count < FD_SETSIZE) \
482 { \
483 ((cast*)(set))->fd_count++; \
484 ((cast*)(set))->fd_array[__i]=(fd);\
485 } \
486} while(0)
487
488#ifndef __WINE_WINSOCK2__
489#define __WS_FD_SET(fd, set, cast) __WS_FD_SET1((fd),(set), cast)
490#else
491#define __WS_FD_SET(fd, set, cast) __WS_FD_SET2((fd),(set), cast)
492#endif
493
494#ifndef USE_WS_PREFIX
495#define FD_CLR(fd, set) __WS_FD_CLR((fd),(set), fd_set)
496#define FD_SET(fd, set) __WS_FD_SET((fd),(set), fd_set)
497#define FD_ZERO(set) (((fd_set*)(set))->fd_count=0)
498#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set*)(set))
499#else
500#define WS_FD_CLR(fd, set) __WS_FD_CLR((fd),(set), WS_fd_set)
501#define WS_FD_SET(fd, set) __WS_FD_SET((fd),(set), WS_fd_set)
502#define WS_FD_ZERO(set) (((WS_fd_set*)(set))->fd_count=0)
503#define WS_FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (WS_fd_set*)(set))
504#endif
505
506int WINAPI __WSAFDIsSet(SOCKET,WS(fd_set)*);
507
508#endif /* WS_DEFINE_SELECT */
509
510/* we have to define hton/ntoh as macros to avoid conflicts with Unix headers */
511#ifndef USE_WS_PREFIX
512
513#undef htonl
514#undef htons
515#undef ntohl
516#undef ntohs
517
518#ifdef WORDS_BIGENDIAN
519
520#define htonl(l) ((ULONG)(l))
521#define htons(s) ((u_short)(s))
522#define ntohl(l) ((ULONG)(l))
523#define ntohs(s) ((u_short)(s))
524
525#else /* WORDS_BIGENDIAN */
526
527static inline u_short __wine_ushort_swap(u_short s)
528{
529 return (s >> 8) | (s << 8);
530}
531static inline ULONG __wine_ulong_swap(ULONG l)
532{
533 return ((ULONG)__wine_ushort_swap((u_short)l) << 16) | __wine_ushort_swap((u_short)(l >> 16));
534}
535#define htonl(l) __wine_ulong_swap(l)
536#define htons(s) __wine_ushort_swap(s)
537#define ntohl(l) __wine_ulong_swap(l)
538#define ntohs(s) __wine_ushort_swap(s)
539
540#endif /* WORDS_BIGENDIAN */
541
542#endif /* USE_WS_PREFIX */
543
544/*
545 * Internet address (old style... should be updated)
546 */
547
548#ifndef USE_WS_PREFIX
549#define IN_CLASSA_NSHIFT 24
550#define IN_CLASSA_MAX 128
551#define IN_CLASSA_NET 0xff000000
552#define IN_CLASSA_HOST 0x00ffffff
553#define IN_CLASSA(i) (((LONG)(i) & 0x80000000) == 0)
554#define IN_CLASSB_NSHIFT 16
555#define IN_CLASSB_MAX 65536
556#define IN_CLASSB_NET 0xffff0000
557#define IN_CLASSB_HOST 0x0000ffff
558#define IN_CLASSB(i) (((LONG)(i) & 0xc0000000) == 0x80000000)
559#define IN_CLASSC_NSHIFT 8
560#define IN_CLASSC_NET 0xffffff00
561#define IN_CLASSC_HOST 0x000000ff
562#define IN_CLASSC(i) (((LONG)(i) & 0xe0000000) == 0xc0000000)
563#else
564#define WS_IN_CLASSA_NSHIFT 24
565#define WS_IN_CLASSA_MAX 128
566#define WS_IN_CLASSA_NET 0xff000000
567#define WS_IN_CLASSA_HOST 0x00ffffff
568#define WS_IN_CLASSA(i) (((LONG)(i) & 0x80000000) == 0)
569#define WS_IN_CLASSB_NSHIFT 16
570#define WS_IN_CLASSB_MAX 65536
571#define WS_IN_CLASSB_NET 0xffff0000
572#define WS_IN_CLASSB_HOST 0x0000ffff
573#define WS_IN_CLASSB(i) (((LONG)(i) & 0xc0000000) == 0x80000000)
574#define WS_IN_CLASSC_NSHIFT 8
575#define WS_IN_CLASSC_NET 0xffffff00
576#define WS_IN_CLASSC_HOST 0x000000ff
577#define WS_IN_CLASSC(i) (((LONG)(i) & 0xe0000000) == 0xc0000000)
578#endif /* USE_WS_PREFIX */
579
580#ifndef USE_WS_PREFIX
581#define INADDR_ANY ((ULONG)0x00000000)
582#define INADDR_LOOPBACK 0x7f000001
583#define INADDR_BROADCAST ((ULONG)0xffffffff)
584#define INADDR_NONE 0xffffffff
585#else
586#define WS_INADDR_ANY ((ULONG)0x00000000)
587#define WS_INADDR_LOOPBACK 0x7f000001
588#define WS_INADDR_BROADCAST ((ULONG)0xffffffff)
589#define WS_INADDR_NONE 0xffffffff
590#endif /* USE_WS_PREFIX */
591
592typedef struct WS(sockaddr_in)
593{
594 short sin_family;
595 WS(u_short) sin_port;
596 struct WS(in_addr) sin_addr;
597 char sin_zero[8];
598} SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN;
599
600/*
601 * Multicast group information
602 */
603
604#if !defined(__WINE_WINSOCK2__)
605struct WS(ip_mreq)
606{
607 struct WS(in_addr) imr_multiaddr;
608 struct WS(in_addr) imr_interface;
609};
610#endif
611
612/*
613 * WSAStartup
614 */
615#define WSADESCRIPTION_LEN 256
616#define WSASYS_STATUS_LEN 128
617
618typedef struct WS(WSAData)
619{
620 WORD wVersion;
621 WORD wHighVersion;
622#ifdef _WIN64
623 WORD iMaxSockets;
624 WORD iMaxUdpDg;
625 char *lpVendorInfo;
626 char szDescription[WSADESCRIPTION_LEN+1];
627 char szSystemStatus[WSASYS_STATUS_LEN+1];
628#else
629 char szDescription[WSADESCRIPTION_LEN+1];
630 char szSystemStatus[WSASYS_STATUS_LEN+1];
631 WORD iMaxSockets;
632 WORD iMaxUdpDg;
633 char *lpVendorInfo;
634#endif
635} WSADATA, *LPWSADATA;
636
637
638
639/*
640 * {get,set}sockopt
641 */
642#ifndef USE_WS_PREFIX
643#define SOL_SOCKET 0xffff
644#define SO_DEBUG 0x0001
645#define SO_ACCEPTCONN 0x0002
646#define SO_REUSEADDR 0x0004
647#define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
648#define SO_KEEPALIVE 0x0008
649#define SO_DONTROUTE 0x0010
650#define SO_BROADCAST 0x0020
651#define SO_USELOOPBACK 0x0040
652#define SO_LINGER 0x0080
653#define SO_OOBINLINE 0x0100
654#define SO_DONTLINGER ((u_int)(~SO_LINGER))
655#define SO_SNDBUF 0x1001
656#define SO_RCVBUF 0x1002
657#define SO_SNDLOWAT 0x1003
658#define SO_RCVLOWAT 0x1004
659#define SO_SNDTIMEO 0x1005
660#define SO_RCVTIMEO 0x1006
661#define SO_ERROR 0x1007
662#define SO_TYPE 0x1008
663
664
665#define IOCPARM_MASK 0x7f
666#define IOC_VOID 0x20000000
667#define IOC_OUT 0x40000000
668#define IOC_IN 0x80000000
669#define IOC_INOUT (IOC_IN|IOC_OUT)
670
671#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
672#define _IOR(x,y,t) (IOC_OUT|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
673#define _IOW(x,y,t) (IOC_IN|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
674
675#else
676
677#define WS_SOL_SOCKET 0xffff
678#define WS_SO_DEBUG 0x0001
679#define WS_SO_ACCEPTCONN 0x0002
680#define WS_SO_REUSEADDR 0x0004
681#define WS_SO_EXCLUSIVEADDRUSE ((WS_u_int)(~WS_SO_REUSEADDR))
682#define WS_SO_KEEPALIVE 0x0008
683#define WS_SO_DONTROUTE 0x0010
684#define WS_SO_BROADCAST 0x0020
685#define WS_SO_USELOOPBACK 0x0040
686#define WS_SO_LINGER 0x0080
687#define WS_SO_OOBINLINE 0x0100
688#define WS_SO_DONTLINGER ((WS_u_int)(~WS_SO_LINGER))
689#define WS_SO_SNDBUF 0x1001
690#define WS_SO_RCVBUF 0x1002
691#define WS_SO_SNDLOWAT 0x1003
692#define WS_SO_RCVLOWAT 0x1004
693#define WS_SO_SNDTIMEO 0x1005
694#define WS_SO_RCVTIMEO 0x1006
695#define WS_SO_ERROR 0x1007
696#define WS_SO_TYPE 0x1008
697
698#define WS_IOCPARM_MASK 0x7f
699#define WS_IOC_VOID 0x20000000
700#define WS_IOC_OUT 0x40000000
701#define WS_IOC_IN 0x80000000
702#define WS_IOC_INOUT (WS_IOC_IN|WS_IOC_OUT)
703
704#define WS__IO(x,y) (WS_IOC_VOID|((x)<<8)|(y))
705#define WS__IOR(x,y,t) (WS_IOC_OUT|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
706#define WS__IOW(x,y,t) (WS_IOC_IN|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
707
708#endif
709
710/* IPPROTO_TCP options */
711#ifndef USE_WS_PREFIX
712#define TCP_NODELAY 1
713#else
714#define WS_TCP_NODELAY 1
715#endif
716
717/* IPPROTO_IP options */
718#ifndef __WINE_WINSOCK2__ /* WinSock2 has different values for the IP_ constants */
719# ifndef USE_WS_PREFIX
720# define IP_OPTIONS 1
721# define IP_MULTICAST_IF 2
722# define IP_MULTICAST_TTL 3
723# define IP_MULTICAST_LOOP 4
724# define IP_ADD_MEMBERSHIP 5
725# define IP_DROP_MEMBERSHIP 6
726# define IP_TTL 7
727# define IP_TOS 8
728# define IP_DONTFRAGMENT 9
729# else
730# define WS_IP_OPTIONS 1
731# define WS_IP_MULTICAST_IF 2
732# define WS_IP_MULTICAST_TTL 3
733# define WS_IP_MULTICAST_LOOP 4
734# define WS_IP_ADD_MEMBERSHIP 5
735# define WS_IP_DROP_MEMBERSHIP 6
736# define WS_IP_TTL 7
737# define WS_IP_TOS 8
738# define WS_IP_DONTFRAGMENT 9
739# endif
740#endif
741
742
743/*
744 * Socket I/O flags (supported by spec 1.1)
745 */
746#ifndef USE_WS_PREFIX
747#define FIONREAD _IOR('f', 127, ULONG)
748#define FIONBIO _IOW('f', 126, ULONG)
749#define FIOASYNC _IOW('f', 125, ULONG)
750#define SIOCSHIWAT _IOW('s', 0, ULONG)
751#define SIOCGHIWAT _IOR('s', 1, ULONG)
752#define SIOCSLOWAT _IOW('s', 2, ULONG)
753#define SIOCGLOWAT _IOR('s', 3, ULONG)
754#define SIOCATMARK _IOR('s', 7, ULONG)
755#else
756#define WS_FIONREAD WS__IOR('f', 127, ULONG)
757#define WS_FIONBIO WS__IOW('f', 126, ULONG)
758#define WS_FIOASYNC WS__IOW('f', 125, ULONG)
759#define WS_SIOCSHIWAT WS__IOW('s', 0, ULONG)
760#define WS_SIOCGHIWAT WS__IOR('s', 1, ULONG)
761#define WS_SIOCSLOWAT WS__IOW('s', 2, ULONG)
762#define WS_SIOCGLOWAT WS__IOR('s', 3, ULONG)
763#define WS_SIOCATMARK WS__IOR('s', 7, ULONG)
764#endif
765
766/*
767 * Maximum queue length specifiable by listen.
768 */
769#ifndef USE_WS_PREFIX
770#define SOMAXCONN 5
771
772#define MSG_OOB 0x0001
773#define MSG_PEEK 0x0002
774#define MSG_DONTROUTE 0x0004
775#define MSG_WAITALL 0x0008
776#define MSG_INTERRUPT 0x0010
777#define MSG_PARTIAL 0x8000
778#define MSG_MAXIOVLEN 16
779#else /* USE_WS_PREFIX */
780#define WS_SOMAXCONN 5
781
782#define WS_MSG_OOB 0x0001
783#define WS_MSG_PEEK 0x0002
784#define WS_MSG_DONTROUTE 0x0004
785#define WS_MSG_WAITALL 0x0008
786#define WS_MSG_INTERRUPT 0x0010
787#define WS_MSG_PARTIAL 0x8000
788#define WS_MSG_MAXIOVLEN 16
789#endif /* USE_WS_PREFIX */
790
791/*
792 * Define constant based on rfc883, used by gethostbyxxxx() calls.
793 */
794#ifndef USE_WS_PREFIX
795#define MAXGETHOSTSTRUCT 1024
796#else
797#define MAXGETHOSTSTRUCT 1024
798#endif
799
800
801/*
802 * Define flags to be used with the WSAAsyncSelect() call.
803 */
804#define FD_READ 0x00000001
805#define FD_WRITE 0x00000002
806#define FD_OOB 0x00000004
807#define FD_ACCEPT 0x00000008
808#define FD_CONNECT 0x00000010
809#define FD_CLOSE 0x00000020
810
811/* internal per-socket flags */
812#ifdef __WINESRC__
813#define FD_WINE_LISTENING 0x10000000
814#define FD_WINE_NONBLOCKING 0x20000000
815#define FD_WINE_CONNECTED 0x40000000
816#define FD_WINE_RAW 0x80000000
817#define FD_WINE_INTERNAL 0xFFFF0000
818#endif
819
820/*
821 * All Windows Sockets error constants are biased by WSABASEERR from
822 * the "normal". They are also defined in winerror.h.
823 */
824#define WSABASEERR 10000
825/*
826 * Windows Sockets definitions of regular Microsoft C error constants
827 */
828#define WSAEINTR (WSABASEERR+4)
829#define WSAEBADF (WSABASEERR+9)
830#define WSAEACCES (WSABASEERR+13)
831#define WSAEFAULT (WSABASEERR+14)
832#define WSAEINVAL (WSABASEERR+22)
833#define WSAEMFILE (WSABASEERR+24)
834
835/*
836 * Windows Sockets definitions of regular Berkeley error constants
837 */
838#define WSAEWOULDBLOCK (WSABASEERR+35)
839#define WSAEINPROGRESS (WSABASEERR+36)
840#define WSAEALREADY (WSABASEERR+37)
841#define WSAENOTSOCK (WSABASEERR+38)
842#define WSAEDESTADDRREQ (WSABASEERR+39)
843#define WSAEMSGSIZE (WSABASEERR+40)
844#define WSAEPROTOTYPE (WSABASEERR+41)
845#define WSAENOPROTOOPT (WSABASEERR+42)
846#define WSAEPROTONOSUPPORT (WSABASEERR+43)
847#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
848#define WSAEOPNOTSUPP (WSABASEERR+45)
849#define WSAEPFNOSUPPORT (WSABASEERR+46)
850#define WSAEAFNOSUPPORT (WSABASEERR+47)
851#define WSAEADDRINUSE (WSABASEERR+48)
852#define WSAEADDRNOTAVAIL (WSABASEERR+49)
853#define WSAENETDOWN (WSABASEERR+50)
854#define WSAENETUNREACH (WSABASEERR+51)
855#define WSAENETRESET (WSABASEERR+52)
856#define WSAECONNABORTED (WSABASEERR+53)
857#define WSAECONNRESET (WSABASEERR+54)
858#define WSAENOBUFS (WSABASEERR+55)
859#define WSAEISCONN (WSABASEERR+56)
860#define WSAENOTCONN (WSABASEERR+57)
861#define WSAESHUTDOWN (WSABASEERR+58)
862#define WSAETOOMANYREFS (WSABASEERR+59)
863#define WSAETIMEDOUT (WSABASEERR+60)
864#define WSAECONNREFUSED (WSABASEERR+61)
865#define WSAELOOP (WSABASEERR+62)
866#define WSAENAMETOOLONG (WSABASEERR+63)
867#define WSAEHOSTDOWN (WSABASEERR+64)
868#define WSAEHOSTUNREACH (WSABASEERR+65)
869#define WSAENOTEMPTY (WSABASEERR+66)
870#define WSAEPROCLIM (WSABASEERR+67)
871#define WSAEUSERS (WSABASEERR+68)
872#define WSAEDQUOT (WSABASEERR+69)
873#define WSAESTALE (WSABASEERR+70)
874#define WSAEREMOTE (WSABASEERR+71)
875
876/*
877 * Extended Windows Sockets error constant definitions
878 */
879#define WSASYSNOTREADY (WSABASEERR+91)
880#define WSAVERNOTSUPPORTED (WSABASEERR+92)
881#define WSANOTINITIALISED (WSABASEERR+93)
882#define WSAEDISCON (WSABASEERR+101)
883#define WSAENOMORE (WSABASEERR+102)
884#define WSAECANCELLED (WSABASEERR+103)
885#define WSAEINVALIDPROCTABLE (WSABASEERR+104)
886#define WSAEINVALIDPROVIDER (WSABASEERR+105)
887#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
888#define WSASYSCALLFAILURE (WSABASEERR+107)
889#define WSASERVICE_NOT_FOUND (WSABASEERR+108)
890#define WSATYPE_NOT_FOUND (WSABASEERR+109)
891#define WSA_E_NO_MORE (WSABASEERR+110)
892#define WSA_E_CANCELLED (WSABASEERR+111)
893#define WSAEREFUSED (WSABASEERR+112)
894
895/*
896 * Error return codes from gethostbyname() and gethostbyaddr()
897 * (when using the resolver). Note that these errors are
898 * retrieved via WSAGetLastError() and must therefore follow
899 * the rules for avoiding clashes with error numbers from
900 * specific implementations or language run-time systems.
901 * For this reason the codes are based at WSABASEERR+1001.
902 * Note also that [WSA]NO_ADDRESS is defined only for
903 * compatibility purposes.
904 */
905
906#ifndef USE_WS_PREFIX
907#define h_errno WSAGetLastError()
908#else
909#define WS_h_errno WSAGetLastError()
910#endif
911
912/* Authoritative Answer: Host not found */
913#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
914
915/* Non-Authoritative: Host not found, or SERVERFAIL */
916#define WSATRY_AGAIN (WSABASEERR+1002)
917
918/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
919#define WSANO_RECOVERY (WSABASEERR+1003)
920
921/* Valid name, no data record of requested type */
922#define WSANO_DATA (WSABASEERR+1004)
923
924/* no address, look for MX record */
925#define WSANO_ADDRESS WSANO_DATA
926
927#ifndef USE_WS_PREFIX
928#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
929#define TRY_AGAIN WSATRY_AGAIN
930#define NO_RECOVERY WSANO_RECOVERY
931#define NO_DATA WSANO_DATA
932#define NO_ADDRESS WSANO_ADDRESS
933#endif /* USE_WS_PREFIX */
934
935
936
937/*
938 * Windows message parameter composition and decomposition
939 * macros.
940 */
941
942/*
943 * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
944 * when constructing the response to a WSAAsyncGetXByY() routine.
945 */
946#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
947/*
948 * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
949 * when constructing the response to WSAAsyncSelect().
950 */
951#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
952/*
953 * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
954 * to extract the buffer length from the lParam in the response
955 * to a WSAGetXByY().
956 */
957#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
958/*
959 * WSAGETASYNCERROR is intended for use by the Windows Sockets application
960 * to extract the error code from the lParam in the response
961 * to a WSAGetXByY().
962 */
963#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
964/*
965 * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
966 * to extract the event code from the lParam in the response
967 * to a WSAAsyncSelect().
968 */
969#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
970/*
971 * WSAGETSELECTERROR is intended for use by the Windows Sockets application
972 * to extract the error code from the lParam in the response
973 * to a WSAAsyncSelect().
974 */
975#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
976
977
978
979/*
980 * Prototypes
981 *
982 * Remember to keep this section in sync with the
983 * "Winsock Function Typedefs" section in winsock2.h.
984 */
985#if !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES
986HANDLE WINAPI WSAAsyncGetHostByAddr(HWND,WS(u_int),const char*,int,int,char*,int);
987HANDLE WINAPI WSAAsyncGetHostByName(HWND,WS(u_int),const char*,char*,int);
988HANDLE WINAPI WSAAsyncGetProtoByName(HWND,WS(u_int),const char*,char*,int);
989HANDLE WINAPI WSAAsyncGetProtoByNumber(HWND,WS(u_int),int,char*,int);
990HANDLE WINAPI WSAAsyncGetServByName(HWND,WS(u_int),const char*,const char*,char*,int);
991HANDLE WINAPI WSAAsyncGetServByPort(HWND,WS(u_int),int,const char*,char*,int);
992int WINAPI WSAAsyncSelect(SOCKET,HWND,WS(u_int),LONG);
993int WINAPI WSACancelAsyncRequest(HANDLE);
994int WINAPI WSACancelBlockingCall(void);
995int WINAPI WSACleanup(void);
996int WINAPI WSAGetLastError(void);
997BOOL WINAPI WSAIsBlocking(void);
998FARPROC WINAPI WSASetBlockingHook(FARPROC);
999void WINAPI WSASetLastError(int);
1000int WINAPI WSAStartup(WORD,LPWSADATA);
1001int WINAPI WSAUnhookBlockingHook(void);
1002
1003SOCKET WINAPI WS(accept)(SOCKET,struct WS(sockaddr)*,int*);
1004int WINAPI WS(bind)(SOCKET,const struct WS(sockaddr)*,int);
1005int WINAPI WS(closesocket)(SOCKET);
1006int WINAPI WS(connect)(SOCKET,const struct WS(sockaddr)*,int);
1007struct WS(hostent)* WINAPI WS(gethostbyaddr)(const char*,int,int);
1008struct WS(hostent)* WINAPI WS(gethostbyname)(const char*);
1009int WINAPI WS(getpeername)(SOCKET,struct WS(sockaddr)*,int*);
1010struct WS(protoent)* WINAPI WS(getprotobyname)(const char*);
1011struct WS(protoent)* WINAPI WS(getprotobynumber)(int);
1012#ifdef WS_DEFINE_SELECT
1013int WINAPI WS(select)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*);
1014#endif
1015struct WS(servent)* WINAPI WS(getservbyname)(const char*,const char*);
1016struct WS(servent)* WINAPI WS(getservbyport)(int,const char*);
1017int WINAPI WS(getsockname)(SOCKET,struct WS(sockaddr)*,int*);
1018int WINAPI WS(getsockopt)(SOCKET,int,int,char*,int*);
1019ULONG WINAPI WS(inet_addr)(const char*);
1020char* WINAPI WS(inet_ntoa)(struct WS(in_addr));
1021int WINAPI WS(ioctlsocket)(SOCKET,LONG,ULONG*);
1022int WINAPI WS(listen)(SOCKET,int);
1023int WINAPI WS(recv)(SOCKET,char*,int,int);
1024int WINAPI WS(recvfrom)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*);
1025int WINAPI WS(send)(SOCKET,const char*,int,int);
1026int WINAPI WS(sendto)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int);
1027int WINAPI WS(setsockopt)(SOCKET,int,int,const char*,int);
1028int WINAPI WS(shutdown)(SOCKET,int);
1029SOCKET WINAPI WS(socket)(int,int,int);
1030
1031#if defined(__MINGW32__) || defined (_MSC_VER)
1032/* gethostname is not defined on Unix because of conflicts with unistd.h */
1033int WINAPI WS(gethostname)(char*,int);
1034#endif
1035
1036#endif /* !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES */
1037
1038#ifdef __cplusplus
1039}
1040#endif
1041
1042#ifndef __WINE_WINSOCK2__
1043#undef WS
1044#undef WS_API_PROTOTYPES
1045#undef WS_API_TYPEDEFS
1046#endif
1047
1048#endif /* _WINSOCKAPI_ */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette