2 * sockets.h: Socket handles
5 * Dick Porter (dick@ximian.com)
7 * (C) 2002 Ximian, Inc.
10 #ifndef _WAPI_SOCKETS_H_
11 #define _WAPI_SOCKETS_H_
13 #include <sys/types.h>
14 #include <sys/socket.h>
15 #include <sys/ioctl.h>
16 #include <netinet/in.h>
17 #include <netinet/tcp.h>
19 #include <arpa/inet.h>
21 #include "mono/io-layer/wapi.h"
25 #define WSADESCRIPTION_LEN 256
26 #define WSASYS_STATUS_LEN 128
32 char szDescription[WSADESCRIPTION_LEN+1];
33 char szSystemStatus[WSASYS_STATUS_LEN+1];
39 #define INVALID_SOCKET (guint32)(~0)
40 #define SOCKET_ERROR -1
42 #define WSAID_DISCONNECTEX {0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}}
43 #define WSAID_TRANSMITFILE {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
59 } WapiTransmitFileBuffers;
62 TF_USE_DEFAULT_WORKER = 0,
64 TF_REUSE_SOCKET = 0x02,
65 TF_WRITE_BEHIND = 0x04,
66 TF_USE_SYSTEM_THREAD = 0x10,
67 TF_USE_KERNEL_APC = 0x20
68 } WapiTransmitFileFlags;
70 /* If we need to support more WSAIoctl commands then define these
71 * using the bitfield flags method
73 #define SIO_GET_EXTENSION_FUNCTION_POINTER 0xC8000006
75 typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
76 WapiTransmitFileFlags);
77 typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
79 WapiTransmitFileBuffers *,
80 WapiTransmitFileFlags);
83 extern int WSAStartup(guint32 requested, WapiWSAData *data);
84 extern int WSACleanup(void);
85 extern void WSASetLastError(int error);
86 extern int WSAGetLastError(void);
87 extern int closesocket(guint32 handle);
89 extern int ioctlsocket(guint32 handle, gint32 command, gpointer arg);
90 extern int WSAIoctl (guint32 handle, gint32 command,
91 gchar *input, gint i_len,
92 gchar *output, gint o_len, glong *written,
93 void *unused1, void *unused2);
96 #endif /* _WAPI_SOCKETS_H_ */