177 lines
2.5 KiB
C
177 lines
2.5 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1995 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
routing\ip\wanarp\ioctl.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Header for ioctl.c
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
Amritansh Raghav
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
//
|
||
|
// Notification events
|
||
|
//
|
||
|
|
||
|
typedef struct _PENDING_NOTIFICATION
|
||
|
{
|
||
|
LIST_ENTRY leNotificationLink;
|
||
|
|
||
|
WORK_QUEUE_ITEM wqi;
|
||
|
|
||
|
WANARP_NOTIFICATION wnMsg;
|
||
|
|
||
|
}PENDING_NOTIFICATION, *PPENDING_NOTIFICATION;
|
||
|
|
||
|
//
|
||
|
// The lookaside list for notifications
|
||
|
//
|
||
|
|
||
|
extern NPAGED_LOOKASIDE_LIST g_llNotificationBlocks;
|
||
|
|
||
|
#define WANARP_NOTIFICATION_LOOKASIDE_DEPTH 4
|
||
|
|
||
|
//++
|
||
|
//
|
||
|
// PPENDING_NOTIFICATION
|
||
|
// AllocateNotification(
|
||
|
// VOID
|
||
|
// )
|
||
|
//
|
||
|
// Allocate a notification blob from g_llNotificationBlocks
|
||
|
//
|
||
|
//--
|
||
|
|
||
|
#define AllocateNotification() \
|
||
|
ExAllocateFromNPagedLookasideList(&g_llNotificationBlocks)
|
||
|
|
||
|
//++
|
||
|
//
|
||
|
// VOID
|
||
|
// FreeNotification(
|
||
|
// PPENDING_NOTIFICATION pMsg
|
||
|
// )
|
||
|
//
|
||
|
// Free a notification blob to g_llNotificationBlocks
|
||
|
//
|
||
|
//--
|
||
|
|
||
|
#define FreeNotification(n) \
|
||
|
ExFreeToNPagedLookasideList(&g_llNotificationBlocks, (n))
|
||
|
|
||
|
|
||
|
//
|
||
|
// List of pending notifications
|
||
|
//
|
||
|
|
||
|
LIST_ENTRY g_lePendingNotificationList;
|
||
|
|
||
|
//
|
||
|
// List of pending IRPs
|
||
|
//
|
||
|
|
||
|
LIST_ENTRY g_lePendingIrpList;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Set to true if we want to queue notifications
|
||
|
//
|
||
|
|
||
|
BOOLEAN g_bQueueNotifications;
|
||
|
|
||
|
NTSTATUS
|
||
|
WanProcessNotification(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanAddUserModeInterface(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanDeleteUserModeInterface(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WanpCleanOutInterfaces(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WanpDeleteInterface(
|
||
|
PUMODE_INTERFACE pInterface
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanDeleteAdapters(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanProcessConnectionFailure(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanGetIfStats(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanMapServerAdapter(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanStartStopQueuing(
|
||
|
PIRP pIrp,
|
||
|
ULONG ulInLength,
|
||
|
ULONG ulOutLength
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WanCancelNotificationIrp(
|
||
|
PDEVICE_OBJECT pDeviceObject,
|
||
|
PIRP pIrp
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WanpCompleteIrp(
|
||
|
PPENDING_NOTIFICATION pEvent
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
WanpGetNewIndex(
|
||
|
OUT PULONG pulIndex
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WanpFreeIndex(
|
||
|
IN ULONG ulIndex
|
||
|
);
|
||
|
|