85 lines
2.3 KiB
C
85 lines
2.3 KiB
C
|
/********************************************************************/
|
|||
|
/** 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);
|
|||
|
|
|||
|
|
|||
|
extern void IndicatePendingData(struct TCB *RcvTCB, struct TCPRcvReq *RcvReq,
|
|||
|
CTELockHandle TCBHandle);
|
|||
|
|
|||
|
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);
|
|||
|
|
|||
|
#if !MILLEN
|
|||
|
//* AllocTcpIpr - Allocates the IPRcvBuffer from NPP.
|
|||
|
//
|
|||
|
// A utility routine to allocate a TCP owned IPRcvBuffer. This routine
|
|||
|
// allocates the IPR from NPP and initializes appropriate fields.
|
|||
|
//
|
|||
|
// Input: BufferSize - Size of data to buffer.
|
|||
|
//
|
|||
|
// Returns: Pointer to allocated IPR.
|
|||
|
//
|
|||
|
__inline IPRcvBuf *
|
|||
|
AllocTcpIpr(ULONG BufferSize, ULONG Tag)
|
|||
|
{
|
|||
|
IPRcvBuf *Ipr;
|
|||
|
ULONG AllocateSize;
|
|||
|
|
|||
|
// Real size that we need.
|
|||
|
AllocateSize = BufferSize + sizeof(IPRcvBuf);
|
|||
|
|
|||
|
Ipr = CTEAllocMemLow(AllocateSize, Tag);
|
|||
|
|
|||
|
if (Ipr != NULL) {
|
|||
|
// Set up IPR fields appropriately.
|
|||
|
Ipr->ipr_owner = IPR_OWNER_TCP;
|
|||
|
Ipr->ipr_next = NULL;
|
|||
|
Ipr->ipr_buffer = (PCHAR) Ipr + sizeof(IPRcvBuf);
|
|||
|
Ipr->ipr_size = BufferSize;
|
|||
|
}
|
|||
|
|
|||
|
return Ipr;
|
|||
|
}
|
|||
|
|
|||
|
//* FreeTcpIpr - Frees the IPRcvBuffer..
|
|||
|
//
|
|||
|
// A utility routine to free a TCP owned IPRcvBuffer.
|
|||
|
//
|
|||
|
// Input: Ipr - Pointer the IPR.
|
|||
|
//
|
|||
|
// Returns: None.
|
|||
|
//
|
|||
|
__inline VOID
|
|||
|
FreeTcpIpr(IPRcvBuf *Ipr)
|
|||
|
{
|
|||
|
CTEFreeMem(Ipr);
|
|||
|
}
|
|||
|
#else // MILLEN
|
|||
|
IPRcvBuf *AllocTcpIpr(ULONG BufferSize, ULONG Tag);
|
|||
|
VOID FreeTcpIpr(IPRcvBuf *Ipr);
|
|||
|
#endif // MILLEN
|
|||
|
|
|||
|
|
|||
|
|