summaryrefslogblamecommitdiffstats
path: root/private/ntos/tdi/tcpip/tcp/tcpdeliv.h
blob: 94fe73a7de7522bba7e270e66da75bca0a37fac6 (plain) (tree)











































                                                                               
/********************************************************************/
/**                     Microsoft LAN Manager                      **/
/**               Copyright(c) Microsoft Corp., 1990-1993          **/
/********************************************************************/
/* :ts=4 */

//** TCPDELIV.H - TCP data delivery definitions.
//
// This file contains the definitions for structures used by the data
//	delivery code.
//

extern	void	FreeRcvReq(struct TCPRcvReq *FreedReq);

extern uint IndicateData(struct TCB *RcvTCB, uint RcvFlags, IPRcvBuf *InBuffer,
	uint Size);
extern uint BufferData(struct TCB *RcvTCB, uint RcvFlags, IPRcvBuf *InBuffer,
	uint Size);
extern uint PendData(struct TCB *RcvTCB, uint RcvFlags, IPRcvBuf *InBuffer,
	uint Size);

#ifdef VXD
extern void IndicatePendingData(struct TCB *RcvTCB, struct TCPRcvReq *RcvReq);
#else
extern void IndicatePendingData(struct TCB *RcvTCB, struct TCPRcvReq *RcvReq,
	CTELockHandle TCBHandle);
#endif

extern	void HandleUrgent(struct TCB *RcvTCB, struct TCPRcvInfo *RcvInfo,
	IPRcvBuf *RcvBuf, uint *Size);

extern	TDI_STATUS TdiReceive(PTDI_REQUEST Request, ushort *Flags,
	uint *RcvLength, PNDIS_BUFFER Buffer);
extern	IPRcvBuf *FreePartialRB(IPRcvBuf *RB, uint Size);
extern	void	PushData(struct TCB *PushTCB);

EXTERNAL_LOCK(TCPRcvReqFreeLock)      // Protects rcv req free list.

#ifdef NT
extern SLIST_HEADER	TCPRcvReqFree;
#endif