#ifndef __TCP_H
#define __TCP_H
-typedef VOID
+typedef VOID
(*PTCP_COMPLETION_ROUTINE)( PVOID Context, NTSTATUS Status, ULONG Count );
/* TCPv4 header structure */
extern FAST_MUTEX SleepingThreadsLock;
extern RECURSIVE_MUTEX TCPLock;
+/* accept.c */
+NTSTATUS TCPServiceListeningSocket( PCONNECTION_ENDPOINT Listener,
+ PCONNECTION_ENDPOINT Connection,
+ PTDI_REQUEST_KERNEL Request );
+NTSTATUS TCPListen( PCONNECTION_ENDPOINT Connection, UINT Backlog );
+VOID TCPAbortListenForSocket( PCONNECTION_ENDPOINT Listener,
+ PCONNECTION_ENDPOINT Connection );
+NTSTATUS TCPAccept
+( PTDI_REQUEST Request,
+ PCONNECTION_ENDPOINT Listener,
+ PCONNECTION_ENDPOINT Connection,
+ PTCP_COMPLETION_ROUTINE Complete,
+ PVOID Context );
+
+/* tcp.c */
PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint( PVOID ClientContext );
VOID TCPFreeConnectionEndpoint( PCONNECTION_ENDPOINT Connection );
-NTSTATUS TCPSocket( PCONNECTION_ENDPOINT Connection,
+NTSTATUS TCPSocket( PCONNECTION_ENDPOINT Connection,
UINT Family, UINT Type, UINT Proto );
PTCP_SEGMENT TCPCreateSegment(
PTCP_COMPLETION_ROUTINE Complete,
PVOID Context);
-NTSTATUS TCPListen(
- PCONNECTION_ENDPOINT Connection,
- UINT Backlog,
- PTCP_COMPLETION_ROUTINE Complete,
- PVOID Context);
-
NTSTATUS TCPReceiveData(
- PCONNECTION_ENDPOINT Connection,
+ PCONNECTION_ENDPOINT Connection,
PNDIS_BUFFER Buffer,
ULONG ReceiveLength,
PULONG BytesReceived,
PVOID TCPPrepareInterface( PIP_INTERFACE IF );
+VOID TCPDisposeInterfaceData( PVOID Data );
+
NTSTATUS TCPTranslateError( int OskitError );
VOID TCPTimeout();
+UINT TCPAllocatePort( UINT HintPort );
+
+VOID TCPFreePort( UINT Port );
+
+NTSTATUS TCPGetPeerAddress
+( PCONNECTION_ENDPOINT Connection,
+ PTRANSPORT_ADDRESS TransportAddress );
+
NTSTATUS TCPStartup(
VOID);