#ifndef _WAPI_SOCKETS_H_
#define _WAPI_SOCKETS_H_
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netdb.h>
-#include <arpa/inet.h>
-
#include "mono/io-layer/wapi.h"
G_BEGIN_DECLS
TF_USE_KERNEL_APC = 0x20
} WapiTransmitFileFlags;
+typedef struct
+{
+ guint32 len;
+ gpointer buf;
+} WapiWSABuf;
+
/* If we need to support more WSAIoctl commands then define these
* using the bitfield flags method
*/
#define SIO_GET_EXTENSION_FUNCTION_POINTER 0xC8000006
+#define SIO_KEEPALIVE_VALS 0x98000004
typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
- WapiTransmitFileFlags);
+ guint32);
typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
WapiOverlapped *,
WapiTransmitFileBuffers *,
WapiTransmitFileFlags);
-
-extern int WSAStartup(guint32 requested, WapiWSAData *data);
-extern int WSACleanup(void);
extern void WSASetLastError(int error);
extern int WSAGetLastError(void);
extern int closesocket(guint32 handle);
-extern int ioctlsocket(guint32 handle, gint32 command, gpointer arg);
+extern int ioctlsocket(guint32 handle, unsigned long command, gpointer arg);
extern int WSAIoctl (guint32 handle, gint32 command,
gchar *input, gint i_len,
gchar *output, gint o_len, glong *written,
void *unused1, void *unused2);
-
+extern int WSARecv (guint32 handle, WapiWSABuf *buffers, guint32 count,
+ guint32 *received, guint32 *flags,
+ WapiOverlapped *overlapped, WapiOverlappedCB *complete);
+extern int WSASend (guint32 handle, WapiWSABuf *buffers, guint32 count,
+ guint32 *sent, guint32 flags,
+ WapiOverlapped *overlapped, WapiOverlappedCB *complete);
+
+gboolean TransmitFile (guint32 socket, gpointer file, guint32 bytes_to_write, guint32 bytes_per_send, WapiOverlapped *ol,
+ WapiTransmitFileBuffers *tb, guint32 flags);
G_END_DECLS
#endif /* _WAPI_SOCKETS_H_ */