holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/mswsock.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/mswsock.h	Thu Sep 16 09:43:14 2010 +0100
@@ -0,0 +1,113 @@
+/*
+ * mswsock.h
+ * MS-specific extensions to Windows Sockets, exported from mswsock.dll.
+ * These functions are N/A on Windows9x.
+ *
+ * This file is part of a free library for the Win32 API.
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+         
+#ifndef _MSWSOCK_H
+#define _MSWSOCK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SO_CONNDATA	0x7000
+#define SO_CONNOPT	0x7001
+#define SO_DISCDATA	0x7002
+#define SO_DISCOPT	0x7003
+#define SO_CONNDATALEN	0x7004
+#define SO_CONNOPTLEN	0x7005
+#define SO_DISCDATALEN	0x7006
+#define SO_DISCOPTLEN	0x7007
+#define SO_OPENTYPE	0x7008
+#define SO_SYNCHRONOUS_ALERT	0x10
+#define SO_SYNCHRONOUS_NONALERT	0x20
+#define SO_MAXDG	0x7009
+#define SO_MAXPATHDG	0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT	0x700B
+#define SO_CONNECT_TIME	0x700C
+#define TCP_BSDURGENT	0x7000
+
+#define TF_DISCONNECT   1
+#define TF_REUSE_SOCKET 2
+#define TF_WRITE_BEHIND 4
+#define TF_USE_DEFAULT_WORKER   0
+#define TF_USE_SYSTEM_THREAD    16
+#define TF_USE_KERNEL_APC   32
+
+typedef struct _TRANSMIT_FILE_BUFFERS {
+	PVOID Head;
+	DWORD HeadLength;
+	PVOID Tail;
+	DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
+
+int PASCAL WSARecvEx(SOCKET,char*,int,int*);
+BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
+BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
+VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
+
+#ifdef _WINSOCK2_H /* These require the winsock2 interface.  */
+
+#define TP_ELEMENT_FILE		1
+#define TP_ELEMENT_MEMORY	2
+#define TP_ELEMENT_EOP		4
+
+typedef struct _TRANSMIT_PACKETS_ELEMENT { 
+	ULONG dwElFlags;
+	ULONG cLength;
+	_ANONYMOUS_UNION
+	union {
+		struct {
+			LARGE_INTEGER	nFileOffset;
+			HANDLE		hFile;
+		};
+		PVOID	pBuffer;
+	};
+} TRANSMIT_PACKETS_ELEMENT; 
+
+typedef struct _WSAMSG {
+	LPSOCKADDR	name;
+	INT		namelen;
+	LPWSABUF	lpBuffers;
+	DWORD		dwBufferCount;
+	WSABUF		Control;
+	DWORD		dwFlags;
+} WSAMSG, *PWSAMSG, *LPWSAMSG;
+
+
+/* According to MSDN docs, the WSAMSG.Control buffer starts with a
+   cmsghdr header of the following form.  See also RFC 2292. */
+
+typedef struct wsacmsghdr {
+	UINT	cmsg_len;
+	INT	cmsg_level;
+ 	INT	cmsg_type;
+	/* followed by UCHAR cmsg_data[]; */
+} WSACMSGHDR;
+
+/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
+#if 0
+#define WSA_CMSG_FIRSTHDR(mhdr)
+#define WSA_CMSG_NXTHDR(mhdr, cmsg)
+#define WSA_CMSG_SPACE(length)
+#define WSA_CMSG_LEN(length)
+#endif
+
+BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
+int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+
+#endif /* _WINSOCK2_H */
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /*  _MSWSOCK_H */
+