3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) the Wine project
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
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 *
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 *
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
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
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.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef _MSWSOCK_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define _MSWSOCK_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* defined(__cplusplus) */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS(x) WS_##x
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS(x) x
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_CONNDATA 0x7000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_CONNOPT 0x7001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_DISCDATA 0x7002
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_DISCOPT 0x7003
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_CONNDATALEN 0x7004
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_CONNOPTLEN 0x7005
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_DISCDATALEN 0x7006
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_DISCOPTLEN 0x7007
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_CONNDATA 0x7000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_CONNOPT 0x7001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_DISCDATA 0x7002
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_DISCOPT 0x7003
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_CONNDATALEN 0x7004
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_CONNOPTLEN 0x7005
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_DISCDATALEN 0x7006
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_DISCOPTLEN 0x7007
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_OPENTYPE 0x7008
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_OPENTYPE 0x7008
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_SYNCHRONOUS_ALERT 0x10
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_SYNCHRONOUS_NONALERT 0x20
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_SYNCHRONOUS_ALERT 0x10
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_SYNCHRONOUS_NONALERT 0x20
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_MAXDG 0x7009
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_MAXPATHDG 0x700A
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_CONNECT_TIME 0x700C
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SO_UPDATE_CONNECT_CONTEXT 0x7010
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_MAXDG 0x7009
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_MAXPATHDG 0x700A
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_UPDATE_ACCEPT_CONTEXT 0x700B
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_CONNECT_TIME 0x700C
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SO_UPDATE_CONNECT_CONTEXT 0x7010
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TCP_BSDURGENT 0x7000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_TCP_BSDURGENT 0x7000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SIO_SET_COMPATIBILITY_MODE _WSAIOW(IOC_VENDOR,300)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SIO_UDP_CONNRESET _WSAIOW(WS_IOC_VENDOR,12)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_SIO_SET_COMPATIBILITY_MODE _WSAIOW(WS_IOC_VENDOR,300)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DE_REUSE_SOCKET TF_REUSE_SOCKET
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef USE_WS_PREFIX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MSG_TRUNC 0x0100
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MSG_CTRUNC 0x0200
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MSG_BCAST 0x0400
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MSG_MCAST 0x0800
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_MSG_TRUNC 0x0100
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_MSG_CTRUNC 0x0200
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_MSG_BCAST 0x0400
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WS_MSG_MCAST 0x0800
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_DISCONNECT 0x01
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_REUSE_SOCKET 0x02
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_WRITE_BEHIND 0x04
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_USE_DEFAULT_WORKER 0x00
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_USE_SYSTEM_THREAD 0x10
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TF_USE_KERNEL_APC 0x20
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_DISCONNECT TF_DISCONNECT
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_REUSE_SOCKET TF_REUSE_SOCKET
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_USE_DEFAULT_WORKER TF_USE_DEFAULT_WORKER
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_USE_SYSTEM_THREAD TF_USE_SYSTEM_THREAD
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_USE_KERNEL_APC TF_USE_KERNEL_APC
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_ELEMENT_MEMORY 1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_ELEMENT_FILE 2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TP_ELEMENT_EOP 4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_ACCEPTEX \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_CONNECTEX \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_DISCONNECTEX \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0x7fda2e11,0x8630,0x436f,{0xa0,0x31,0xf5,0x36,0xa6,0xee,0xc1,0x57}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_GETACCEPTEXSOCKADDRS \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_TRANSMITFILE \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_TRANSMITPACKETS \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_WSARECVMSG \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WSAID_WSASENDMSG \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _TRANSMIT_FILE_BUFFERS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LPVOID Head;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD HeadLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LPVOID Tail;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD TailLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _TRANSMIT_PACKETS_ELEMENT {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG dwElFlags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG cLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync union {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER nFileOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HANDLE hFile;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } DUMMYSTRUCTNAME;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVOID pBuffer;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } DUMMYUNIONNAME;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TRANSMIT_PACKETS_ELEMENT, *PTRANSMIT_PACKETS_ELEMENT, *LPTRANSMIT_PACKETS_ELEMENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _WSACMSGHDR {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SIZE_T cmsg_len;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync INT cmsg_level;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync INT cmsg_type;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* followed by UCHAR cmsg_data[] */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} WSACMSGHDR, *PWSACMSGHDR, *LPWSACMSGHDR;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef BOOL (WINAPI * LPFN_ACCEPTEX)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef BOOL (WINAPI * LPFN_CONNECTEX)(SOCKET, const struct WS(sockaddr) *, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef BOOL (WINAPI * LPFN_DISCONNECTEX)(SOCKET, LPOVERLAPPED, DWORD, DWORD);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef VOID (WINAPI * LPFN_GETACCEPTEXSOCKADDRS)(PVOID, DWORD, DWORD, DWORD, struct WS(sockaddr) **, LPINT, struct WS(sockaddr) **, LPINT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef BOOL (WINAPI * LPFN_TRANSMITFILE)(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef BOOL (WINAPI * LPFN_TRANSMITPACKETS)(SOCKET, LPTRANSMIT_PACKETS_ELEMENT, DWORD, DWORD, LPOVERLAPPED, DWORD);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef INT (WINAPI * LPFN_WSARECVMSG)(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef INT (WINAPI * LPFN_WSASENDMSG)(SOCKET, LPWSAMSG, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncBOOL WINAPI AcceptEx(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncVOID WINAPI GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, struct WS(sockaddr) **, LPINT, struct WS(sockaddr) **, LPINT);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncBOOL WINAPI TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncINT WINAPI WSARecvEx(SOCKET, char *, INT, INT *);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef WS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* _MSWSOCK_ */