windows-nt/Source/XPSP1/NT/net/nwlink/fwd/ddreqs.h
2020-09-26 16:20:57 +08:00

150 lines
3 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
ntos\tdi\isn\fwd\ddreqs.h
Abstract:
Management of demand dial request queues
Author:
Vadim Eydelman
Revision History:
--*/
#ifndef _IPXFWD_DDREQS_
#define _IPXFWD_DDREQS_
// Connection requests to DIM
// Queue of request that need to be satisfied by DIM
extern LIST_ENTRY ConnectionRequestQueue;
// Queue of request IRPs posted by the router manager
extern LIST_ENTRY ConnectionIrpQueue;
/*++
I n i t i a l i z e C o n n e c t i o n Q u e u e s
Routine Description:
Initializes connection request and irp queues
Arguments:
None
Return Value:
None
--*/
//VOID
//InitializeConnectionQueues (
// void
// );
#define InitializeConnectionQueues() { \
InitializeListHead (&ConnectionIrpQueue); \
InitializeListHead (&ConnectionRequestQueue); \
}
/*++
F i l l C o n n e c t i o n R e q u e s t
Routine Description:
Fills the provided buffer with index of interface that needs
to be connected and packet that prompted the request
Arguments:
index - if index
packet - packet that prompted the request
data - pointer to IPX data (IPX header) inside of the packet
request - request buffer to fill
reqSize - size of request buffer
bytesCopied - bytesCopied into the request buffer
Return Value:
STATUS_SUCCESS - array was filled successfully
This routine assumes that there it is called only when there
are outstanding requests in the request queue
--*/
VOID
FillConnectionRequest (
IN ULONG index,
IN PNDIS_PACKET packet,
IN PUCHAR data,
IN OUT PFWD_DIAL_REQUEST request,
IN ULONG reqSize,
OUT PULONG bytesCopied
);
/*++
F a i l C o n n e c t i o n R e q u e s t s
Routine Description:
Cleans up on connection request failure
Arguments:
InterfaceIndex - index of interface that could not be connected
Return Value:
STATUS_SUCCESS - clean up was successfull
STATUS_UNSUCCESSFUL - interface with this index does not exist
--*/
NTSTATUS
FailConnectionRequest (
IN ULONG InterfaceIndex
);
/*++
Q u e u e C o n n e c t i o n R e q u e s t
Routine Description:
Adds request to connected the interface to the queue
Arguments:
ifCB - control block of the interface that needs to be
connected
packet - packet that prompted the connection request
data - pointer to actual data in the packet
oldIRQL - IRQL at which interface lock was acquired
Return Value:
None
Note that interface lock must be acquired before calling this
routine which will release it
--*/
VOID
QueueConnectionRequest (
PINTERFACE_CB ifCB,
PNDIS_PACKET packet,
PUCHAR data,
KIRQL oldIRQL
);
/*++
D e q u e u e C o n n e c t i o n R e q u e s t
Routine Description:
Removes conection requset for the interface from the queue
Arguments:
ifCB - control block of the interface that needs to be
removed
Return Value:
None
--*/
VOID
DequeueConnectionRequest (
PINTERFACE_CB ifCB
);
#endif