3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This header file corresponds to version 1.1 of the Windows Sockets
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * specification.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) the Wine project
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This section defines the items that conflict with the Unix headers.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* We are not using the WS_ prefix we risk getting conflicts for
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * everything related to select.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Too late, the Unix version of stdlib.h was included before winsock.h.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This means select and all the related stuff is already defined and we
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * cannot override types and function prototypes.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * All we can do is disable all these symbols so that they are not used
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * inadvertently.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define FD_SETSIZE Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define FD_CLR Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define FD_SET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define FD_ZERO Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define FD_ISSET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define fd_set Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define select Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* On Darwin stdlib.h includes sys/resource.h which defines timeval but not the fd_set macros */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define select Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define timeval Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# else /* FD_CLR */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* stdlib.h has not been included yet so it's not too late. Include it now
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * making sure that none of the select symbols is affected. Then we can
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * define them with our own values.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# endif /* FD_CLR */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* !USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __WINE_WINSOCKAPI_STDLIB_H */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#elif (defined(_MSC_VER) || defined(__MINGW32__) || defined(__WATCOMC__)) && !defined(_BSDTYPES_DEFINED)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* MinGW doesn't define the u_xxx types */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define u_long ULONG /* make sure we don't use the system u_long */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* defined(__cplusplus) */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Address families
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Protocols
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync char** h_addr_list; /* list of addresses from name server */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define h_addr h_addr_list[0] /* address, for backward compat */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This is used instead of -1, since the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * SOCKET type is unsigned.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Define our own version of select and the associated types and macros */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SOCKET fd_array[WS_FD_SETSIZE];/* an array of SOCKETs */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync unsigned int __i; \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ((cast*)(set))->fd_array[((cast*)(set))->fd_count++]=(fd); \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* This version checks if the filedesc is already in the list, and appends it
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * only if it's not the case
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync unsigned int __i; \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (__i = 0; __i < ((cast*)(set))->fd_count ; __i++) \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (__i == ((cast*)(set))->fd_count && ((cast*)(set))->fd_count < FD_SETSIZE) \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __WS_FD_SET(fd, set, cast) __WS_FD_SET1((fd),(set), cast)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __WS_FD_SET(fd, set, cast) __WS_FD_SET2((fd),(set), cast)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define FD_CLR(fd, set) __WS_FD_CLR((fd),(set), fd_set)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define FD_SET(fd, set) __WS_FD_SET((fd),(set), fd_set)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set*)(set))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_FD_CLR(fd, set) __WS_FD_CLR((fd),(set), WS_fd_set)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_FD_SET(fd, set) __WS_FD_SET((fd),(set), WS_fd_set)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_FD_ZERO(set) (((WS_fd_set*)(set))->fd_count=0)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (WS_fd_set*)(set))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* WS_DEFINE_SELECT */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* we have to define hton/ntoh as macros to avoid conflicts with Unix headers */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* WORDS_BIGENDIAN */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ((ULONG)__wine_ushort_swap((u_short)l) << 16) | __wine_ushort_swap((u_short)(l >> 16));
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* WORDS_BIGENDIAN */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Internet address (old style... should be updated)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IN_CLASSA(i) (((LONG)(i) & 0x80000000) == 0)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IN_CLASSB(i) (((LONG)(i) & 0xc0000000) == 0x80000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IN_CLASSC(i) (((LONG)(i) & 0xe0000000) == 0xc0000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_IN_CLASSA(i) (((LONG)(i) & 0x80000000) == 0)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_IN_CLASSB(i) (((LONG)(i) & 0xc0000000) == 0x80000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_IN_CLASSC(i) (((LONG)(i) & 0xe0000000) == 0xc0000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Multicast group information
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAStartup
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * {get,set}sockopt
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define _IOR(x,y,t) (IOC_OUT|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define _IOW(x,y,t) (IOC_IN|(((UINT)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_EXCLUSIVEADDRUSE ((WS_u_int)(~WS_SO_REUSEADDR))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_DONTLINGER ((WS_u_int)(~WS_SO_LINGER))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS__IOR(x,y,t) (WS_IOC_OUT|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS__IOW(x,y,t) (WS_IOC_IN|(((LONG)sizeof(t)&WS_IOCPARM_MASK)<<16)|((x)<<8)|(y))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* IPPROTO_TCP options */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* IPPROTO_IP options */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __WINE_WINSOCK2__ /* WinSock2 has different values for the IP_ constants */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Socket I/O flags (supported by spec 1.1)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Maximum queue length specifiable by listen.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Define constant based on rfc883, used by gethostbyxxxx() calls.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Define flags to be used with the WSAAsyncSelect() call.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* internal per-socket flags */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * All Windows Sockets error constants are biased by WSABASEERR from
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * the "normal". They are also defined in winerror.h.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Windows Sockets definitions of regular Microsoft C error constants
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Windows Sockets definitions of regular Berkeley error constants
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Extended Windows Sockets error constant definitions
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Error return codes from gethostbyname() and gethostbyaddr()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * (when using the resolver). Note that these errors are
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * retrieved via WSAGetLastError() and must therefore follow
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * the rules for avoiding clashes with error numbers from
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * specific implementations or language run-time systems.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * For this reason the codes are based at WSABASEERR+1001.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Note also that [WSA]NO_ADDRESS is defined only for
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * compatibility purposes.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Authoritative Answer: Host not found */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Non-Authoritative: Host not found, or SERVERFAIL */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Valid name, no data record of requested type */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* no address, look for MX record */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* USE_WS_PREFIX */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Windows message parameter composition and decomposition
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * when constructing the response to a WSAAsyncGetXByY() routine.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * when constructing the response to WSAAsyncSelect().
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to extract the buffer length from the lParam in the response
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to a WSAGetXByY().
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAGETASYNCERROR is intended for use by the Windows Sockets application
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to extract the error code from the lParam in the response
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to a WSAGetXByY().
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to extract the event code from the lParam in the response
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to a WSAAsyncSelect().
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WSAGETSELECTERROR is intended for use by the Windows Sockets application
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to extract the error code from the lParam in the response
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * to a WSAAsyncSelect().
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Prototypes
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Remember to keep this section in sync with the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * "Winsock Function Typedefs" section in winsock2.h.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetHostByAddr(HWND,WS(u_int),const char*,int,int,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetHostByName(HWND,WS(u_int),const char*,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetProtoByName(HWND,WS(u_int),const char*,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetProtoByNumber(HWND,WS(u_int),int,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetServByName(HWND,WS(u_int),const char*,const char*,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHANDLE WINAPI WSAAsyncGetServByPort(HWND,WS(u_int),int,const char*,char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WSAAsyncSelect(SOCKET,HWND,WS(u_int),LONG);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncSOCKET WINAPI WS(accept)(SOCKET,struct WS(sockaddr)*,int*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(bind)(SOCKET,const struct WS(sockaddr)*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(connect)(SOCKET,const struct WS(sockaddr)*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(hostent)* WINAPI WS(gethostbyaddr)(const char*,int,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(hostent)* WINAPI WS(gethostbyname)(const char*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(getpeername)(SOCKET,struct WS(sockaddr)*,int*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(protoent)* WINAPI WS(getprotobyname)(const char*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(protoent)* WINAPI WS(getprotobynumber)(int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(select)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(servent)* WINAPI WS(getservbyname)(const char*,const char*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct WS(servent)* WINAPI WS(getservbyport)(int,const char*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(getsockname)(SOCKET,struct WS(sockaddr)*,int*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(getsockopt)(SOCKET,int,int,char*,int*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(recvfrom)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(sendto)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncint WINAPI WS(setsockopt)(SOCKET,int,int,const char*,int);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* gethostname is not defined on Unix because of conflicts with unistd.h */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* !defined(__WINE_WINSOCK2__) || WS_API_PROTOTYPES */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* _WINSOCKAPI_ */