10 #include <sys/malloc.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>
20 #include <net/route.h>
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>
41 #include <oskittypes.h>
53 #define SEL_FINOUT 512
55 typedef int (*OSKITTCP_SOCKET_STATE
)
58 void *WhichConnection
,
61 typedef int (*OSKITTCP_SEND_PACKET
)
66 typedef struct ifaddr
*(*OSKITTCP_FIND_INTERFACE
)
70 struct sockaddr
*ReqAddr
);
72 typedef void *(*OSKITTCP_MALLOC
)
78 typedef void (*OSKITTCP_FREE
)
84 typedef int (*OSKITTCP_SLEEP
)
85 ( void *ClientData
, void *token
, int priority
, char *msg
, int tmio
);
87 typedef void (*OSKITTCP_WAKEUP
)( void *ClientData
, void *token
);
89 typedef struct _OSKITTCP_EVENT_HANDLERS
{
91 OSKITTCP_SOCKET_STATE SocketState
;
92 OSKITTCP_SEND_PACKET PacketSend
;
93 OSKITTCP_FIND_INTERFACE FindInterface
;
94 OSKITTCP_MALLOC TCPMalloc
;
95 OSKITTCP_FREE TCPFree
;
97 OSKITTCP_WAKEUP Wakeup
;
98 } OSKITTCP_EVENT_HANDLERS
, *POSKITTCP_EVENT_HANDLERS
;
100 extern OSKITTCP_EVENT_HANDLERS OtcpEvent
;
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
,
118 extern int OskitTCPSend( void *socket
,
124 extern int OskitTCPConnect( void *socket
, void *connection
,
125 void *nam
, OSK_UINT namelen
);
126 extern int OskitTCPClose( void *socket
);
128 extern int OskitTCPBind( void *socket
, void *connection
,
129 void *nam
, OSK_UINT namelen
);
131 extern int OskitTCPListen( void *socket
, int backlog
);
133 extern int OskitTCPRecv( void *connection
,
139 void OskitTCPGetAddress( void *socket
,
140 OSK_UINT
*LocalAddress
,
142 OSK_UINT
*RemoteAddress
,
143 OSK_UI16
*RemotePort
);
147 void *fbsd_malloc( unsigned int bytes
, ... );
148 void fbsd_free( void *data
, ... );
150 #define malloc(x) fbsd_malloc(x,__FILE__,__LINE__)
151 #define free(x) fbsd_free(x,__FILE__,__LINE__)
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)
157 #include <oskiterrno.h>
159 #define SOCK_MAXADDRLEN 255
161 #define OSK_MSG_OOB 0x01
162 #define OSK_MSG_PEEK 0x02
163 #define OSK_MSG_DONTWAIT 0x80