Send delayed ACKs after 200ms instead of 2500ms
[reactos.git] / reactos / drivers / lib / oskittcp / include / oskittcp.h
index ee4f7ea..d00535e 100644 (file)
@@ -1,7 +1,13 @@
 #ifndef OSKITTCP_H
 #define OSKITTCP_H
 
+#ifdef linux
+#include <netinet/in.h>
+#endif
+
+#ifndef _MSC_VER
 #include <roscfg.h>
+#endif/*_MSC_VER*/
 #ifdef KERNEL
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -50,46 +56,113 @@ struct connect_args {
 #define SEL_ERROR   256
 #define SEL_FINOUT  512
 
-typedef void (*OSKITTCP_SOCKET_STATE)
+typedef int (*OSKITTCP_SOCKET_STATE)
     ( void *ClientData,
       void *WhichSocket,
       void *WhichConnection,
-      OSK_UINT SelFlags,
-      OSK_UINT SocketState );
+      OSK_UINT NewState );
+
 typedef int (*OSKITTCP_SEND_PACKET)
     ( void *ClientData,
-      void *WhichSocket,
-      void *WhichConnection,
       OSK_PCHAR Data,
       OSK_UINT Len );
 
+typedef struct ifaddr *(*OSKITTCP_FIND_INTERFACE)
+    ( void *ClientData,
+      OSK_UINT AddrType,
+      OSK_UINT FindType,
+      struct sockaddr *ReqAddr );
+
+typedef void *(*OSKITTCP_MALLOC)
+    ( void *ClientData,
+      OSK_UINT Bytes,
+      OSK_PCHAR File,
+      OSK_UINT Line );
+
+typedef void (*OSKITTCP_FREE)
+    ( void *ClientData,
+      void *data,
+      OSK_PCHAR File,
+      OSK_UINT Line );
+
+typedef int (*OSKITTCP_SLEEP)
+    ( void *ClientData, void *token, int priority, char *msg, int tmio );
+
+typedef void (*OSKITTCP_WAKEUP)( void *ClientData, void *token );
+
 typedef struct _OSKITTCP_EVENT_HANDLERS {
     void *ClientData;
     OSKITTCP_SOCKET_STATE SocketState;
     OSKITTCP_SEND_PACKET PacketSend;
+    OSKITTCP_FIND_INTERFACE FindInterface;
+    OSKITTCP_MALLOC TCPMalloc;
+    OSKITTCP_FREE TCPFree;
+    OSKITTCP_SLEEP Sleep;
+    OSKITTCP_WAKEUP Wakeup;
 } OSKITTCP_EVENT_HANDLERS, *POSKITTCP_EVENT_HANDLERS;
 
 extern OSKITTCP_EVENT_HANDLERS OtcpEvent;
 
 extern void InitOskitTCP();
 extern void DeinitOskitTCP();
-extern void TimerOskitTCP();
+extern void TimerOskitTCP( int FastTimer, int SlowTimer );
+extern void OskitDumpBuffer( OSK_PCHAR Data, OSK_UINT Len );
+extern int  OskitTCPShutdown( void *socket, int disconn_type );
 extern int  OskitTCPSocket( void *Connection, void **ConnectionContext,
                            int Af, int Type, int Proto );
 extern void RegisterOskitTCPEventHandlers
 ( POSKITTCP_EVENT_HANDLERS EventHandlers );
 extern void OskitTCPReceiveDatagram( OSK_PCHAR Data, OSK_UINT Len,
                                     OSK_UINT IpHeaderLen );
-extern int OskitTCPReceive( void *socket, 
+extern int OskitTCPReceive( void *socket,
                            void *Addr,
                            OSK_PCHAR Data,
                            OSK_UINT Len,
                            OSK_UINT *OutLen,
                            OSK_UINT Flags );
+extern int OskitTCPSend( void *socket,
+                        OSK_PCHAR Data,
+                        OSK_UINT Len,
+                        OSK_UINT *OutLen,
+                        OSK_UINT Flags );
+
+extern int OskitTCPConnect( void *socket, void *connection,
+                           void *nam, OSK_UINT namelen );
+extern int OskitTCPClose( void *socket );
+
+extern int OskitTCPBind( void *socket, void *connection,
+                        void *nam, OSK_UINT namelen );
+
+extern int OskitTCPAccept( void *socket, void **new_socket,
+                          void *addr_out,
+                          OSK_UINT addr_len,
+                          OSK_UINT *out_addr_len,
+                          OSK_UINT finish_accept );
+
+extern int OskitTCPListen( void *socket, int backlog );
+
+extern int OskitTCPRecv( void *connection,
+                        OSK_PCHAR Data,
+                        OSK_UINT Len,
+                        OSK_UINT *OutLen,
+                        OSK_UINT Flags );
+
+void OskitTCPGetAddress( void *socket,
+                        OSK_UINT *LocalAddress,
+                        OSK_UI16 *LocalPort,
+                        OSK_UINT *RemoteAddress,
+                        OSK_UI16 *RemotePort );
+
 #undef errno
 
-#define malloc(x,...) fbsd_malloc(x,__FILE__,__LINE__)
-#define free(x,...) fbsd_free(x,__FILE__,__LINE__)
+void *fbsd_malloc( unsigned int bytes, ... );
+void fbsd_free( void *data, ... );
+#if 0
+#define malloc(x) fbsd_malloc(x,__FILE__,__LINE__)
+#define free(x) fbsd_free(x,__FILE__,__LINE__)
+#endif
+#define kern_malloc(x,y,z) kern_malloc_needs_definition(x,y,z)
+#define kern_free(x,y,z) kern_free_needs_definition(x,w,z)
 
 /* Error codes */
 #include <oskiterrno.h>