5 #include <netinet/in.h>
12 #include <sys/param.h>
13 #include <sys/systm.h>
14 #include <sys/malloc.h>
16 #include <sys/protosw.h>
17 #include <sys/socket.h>
18 #include <sys/socketvar.h>
19 #include <sys/errno.h>
20 #include <sys/queue.h>
21 #include <sys/kernel.h>
24 #include <net/route.h>
26 #include <netinet/in.h>
27 #include <netinet/in_systm.h>
28 #include <netinet/ip.h>
29 #include <netinet/in_pcb.h>
30 #include <netinet/ip_var.h>
31 #include <netinet/tcp.h>
32 #include <netinet/tcp_fsm.h>
33 #include <netinet/tcp_seq.h>
34 #include <netinet/tcp_timer.h>
35 #include <netinet/tcp_var.h>
36 #include <netinet/tcpip.h>
45 #include <oskittypes.h>
57 #define SEL_FINOUT 512
59 typedef int (*OSKITTCP_SOCKET_STATE
)
62 void *WhichConnection
,
65 typedef int (*OSKITTCP_SEND_PACKET
)
70 typedef struct ifaddr
*(*OSKITTCP_FIND_INTERFACE
)
74 struct sockaddr
*ReqAddr
);
76 typedef void *(*OSKITTCP_MALLOC
)
82 typedef void (*OSKITTCP_FREE
)
88 typedef int (*OSKITTCP_SLEEP
)
89 ( void *ClientData
, void *token
, int priority
, char *msg
, int tmio
);
91 typedef void (*OSKITTCP_WAKEUP
)( void *ClientData
, void *token
);
93 typedef struct _OSKITTCP_EVENT_HANDLERS
{
95 OSKITTCP_SOCKET_STATE SocketState
;
96 OSKITTCP_SEND_PACKET PacketSend
;
97 OSKITTCP_FIND_INTERFACE FindInterface
;
98 OSKITTCP_MALLOC TCPMalloc
;
99 OSKITTCP_FREE TCPFree
;
100 OSKITTCP_SLEEP Sleep
;
101 OSKITTCP_WAKEUP Wakeup
;
102 } OSKITTCP_EVENT_HANDLERS
, *POSKITTCP_EVENT_HANDLERS
;
104 extern OSKITTCP_EVENT_HANDLERS OtcpEvent
;
106 extern void InitOskitTCP();
107 extern void DeinitOskitTCP();
108 extern void TimerOskitTCP( int FastTimer
, int SlowTimer
);
109 extern void OskitDumpBuffer( OSK_PCHAR Data
, OSK_UINT Len
);
110 extern int OskitTCPShutdown( void *socket
, int disconn_type
);
111 extern int OskitTCPSocket( void *Connection
, void **ConnectionContext
,
112 int Af
, int Type
, int Proto
);
113 extern void RegisterOskitTCPEventHandlers
114 ( POSKITTCP_EVENT_HANDLERS EventHandlers
);
115 extern void OskitTCPReceiveDatagram( OSK_PCHAR Data
, OSK_UINT Len
,
116 OSK_UINT IpHeaderLen
);
117 extern int OskitTCPReceive( void *socket
,
123 extern int OskitTCPSend( void *socket
,
129 extern int OskitTCPConnect( void *socket
, void *connection
,
130 void *nam
, OSK_UINT namelen
);
131 extern int OskitTCPClose( void *socket
);
133 extern int OskitTCPBind( void *socket
, void *connection
,
134 void *nam
, OSK_UINT namelen
);
136 extern int OskitTCPAccept( void *socket
, void **new_socket
,
139 OSK_UINT
*out_addr_len
,
140 OSK_UINT finish_accept
);
142 extern int OskitTCPListen( void *socket
, int backlog
);
144 extern int OskitTCPRecv( void *connection
,
150 void OskitTCPGetAddress( void *socket
,
151 OSK_UINT
*LocalAddress
,
153 OSK_UINT
*RemoteAddress
,
154 OSK_UI16
*RemotePort
);
158 void *fbsd_malloc( unsigned int bytes
, char *file
, unsigned line
, ... );
159 void fbsd_free( void *data
, char *file
, unsigned line
, ... );
161 #define malloc(x) fbsd_malloc(x,__FILE__,__LINE__)
162 #define free(x) fbsd_free(x,__FILE__,__LINE__)
164 #define kern_malloc(x,y,z) kern_malloc_needs_definition(x,y,z)
165 #define kern_free(x,y,z) kern_free_needs_definition(x,w,z)
168 #include <oskiterrno.h>
170 #define SOCK_MAXADDRLEN 255
172 #define OSK_MSG_OOB 0x01
173 #define OSK_MSG_PEEK 0x02
174 #define OSK_MSG_DONTWAIT 0x80