oskittcp can now be built with vs6
[reactos.git] / reactos / drivers / lib / oskittcp / include / oskittcp.h
1 #ifndef OSKITTCP_H
2 #define OSKITTCP_H
3
4 #ifndef _MSC_VER
5 #include <roscfg.h>
6 #endif/*_MSC_VER*/
7 #ifdef KERNEL
8 #include <sys/param.h>
9 #include <sys/systm.h>
10 #include <sys/malloc.h>
11 #include <sys/mbuf.h>
12 #include <sys/protosw.h>
13 #include <sys/socket.h>
14 #include <sys/socketvar.h>
15 #include <sys/errno.h>
16 #include <sys/queue.h>
17 #include <sys/kernel.h>
18
19 #include <net/if.h>
20 #include <net/route.h>
21
22 #include <netinet/in.h>
23 #include <netinet/in_systm.h>
24 #include <netinet/ip.h>
25 #include <netinet/in_pcb.h>
26 #include <netinet/ip_var.h>
27 #include <netinet/tcp.h>
28 #include <netinet/tcp_fsm.h>
29 #include <netinet/tcp_seq.h>
30 #include <netinet/tcp_timer.h>
31 #include <netinet/tcp_var.h>
32 #include <netinet/tcpip.h>
33
34 struct connect_args {
35 int s;
36 caddr_t name;
37 int namelen;
38 };
39 #endif
40
41 #include <oskittypes.h>
42
43 #define IPHDR_SIZE 20
44 #define SEL_CONNECT 1
45 #define SEL_FIN 2
46 #define SEL_RST 4
47 #define SEL_ABRT 8
48 #define SEL_READ 16
49 #define SEL_WRITE 32
50 #define SEL_ACCEPT 64
51 #define SEL_OOB 128
52 #define SEL_ERROR 256
53 #define SEL_FINOUT 512
54
55 typedef int (*OSKITTCP_SOCKET_STATE)
56 ( void *ClientData,
57 void *WhichSocket,
58 void *WhichConnection,
59 OSK_UINT NewState );
60
61 typedef int (*OSKITTCP_SEND_PACKET)
62 ( void *ClientData,
63 OSK_PCHAR Data,
64 OSK_UINT Len );
65
66 typedef struct ifaddr *(*OSKITTCP_FIND_INTERFACE)
67 ( void *ClientData,
68 OSK_UINT AddrType,
69 OSK_UINT FindType,
70 struct sockaddr *ReqAddr );
71
72 typedef void *(*OSKITTCP_MALLOC)
73 ( void *ClientData,
74 OSK_UINT Bytes,
75 OSK_PCHAR File,
76 OSK_UINT Line );
77
78 typedef void (*OSKITTCP_FREE)
79 ( void *ClientData,
80 void *data,
81 OSK_PCHAR File,
82 OSK_UINT Line );
83
84 typedef int (*OSKITTCP_SLEEP)
85 ( void *ClientData, void *token, int priority, char *msg, int tmio );
86
87 typedef void (*OSKITTCP_WAKEUP)( void *ClientData, void *token );
88
89 typedef struct _OSKITTCP_EVENT_HANDLERS {
90 void *ClientData;
91 OSKITTCP_SOCKET_STATE SocketState;
92 OSKITTCP_SEND_PACKET PacketSend;
93 OSKITTCP_FIND_INTERFACE FindInterface;
94 OSKITTCP_MALLOC TCPMalloc;
95 OSKITTCP_FREE TCPFree;
96 OSKITTCP_SLEEP Sleep;
97 OSKITTCP_WAKEUP Wakeup;
98 } OSKITTCP_EVENT_HANDLERS, *POSKITTCP_EVENT_HANDLERS;
99
100 extern OSKITTCP_EVENT_HANDLERS OtcpEvent;
101
102 extern void InitOskitTCP();
103 extern void DeinitOskitTCP();
104 extern void TimerOskitTCP();
105 extern void OskitDumpBuffer( OSK_PCHAR Data, OSK_UINT Len );
106 extern int OskitTCPSocket( void *Connection, void **ConnectionContext,
107 int Af, int Type, int Proto );
108 extern void RegisterOskitTCPEventHandlers
109 ( POSKITTCP_EVENT_HANDLERS EventHandlers );
110 extern void OskitTCPReceiveDatagram( OSK_PCHAR Data, OSK_UINT Len,
111 OSK_UINT IpHeaderLen );
112 extern int OskitTCPReceive( void *socket,
113 void *Addr,
114 OSK_PCHAR Data,
115 OSK_UINT Len,
116 OSK_UINT *OutLen,
117 OSK_UINT Flags );
118 extern int OskitTCPSend( void *socket,
119 OSK_PCHAR Data,
120 OSK_UINT Len,
121 OSK_UINT *OutLen,
122 OSK_UINT Flags );
123
124 extern int OskitTCPConnect( void *socket, void *connection,
125 void *nam, OSK_UINT namelen );
126 extern int OskitTCPClose( void *socket );
127
128 extern int OskitTCPBind( void *socket, void *connection,
129 void *nam, OSK_UINT namelen );
130
131 extern int OskitTCPListen( void *socket, int backlog );
132
133 extern int OskitTCPRecv( void *connection,
134 OSK_PCHAR Data,
135 OSK_UINT Len,
136 OSK_UINT *OutLen,
137 OSK_UINT Flags );
138
139 void OskitTCPGetAddress( void *socket,
140 OSK_UINT *LocalAddress,
141 OSK_UI16 *LocalPort,
142 OSK_UINT *RemoteAddress,
143 OSK_UI16 *RemotePort );
144
145 #undef errno
146
147 void *fbsd_malloc( unsigned int bytes, ... );
148 void fbsd_free( void *data, ... );
149 #if 0
150 #define malloc(x) fbsd_malloc(x,__FILE__,__LINE__)
151 #define free(x) fbsd_free(x,__FILE__,__LINE__)
152 #endif
153 #define kern_malloc(x,y,z) kern_malloc_needs_definition(x,y,z)
154 #define kern_free(x,y,z) kern_free_needs_definition(x,w,z)
155
156 /* Error codes */
157 #include <oskiterrno.h>
158
159 #define SOCK_MAXADDRLEN 255
160
161 #define OSK_MSG_OOB 0x01
162 #define OSK_MSG_PEEK 0x02
163 #define OSK_MSG_DONTWAIT 0x80
164
165 #endif/*OSKITTCP_H*/