windows-nt/Source/XPSP1/NT/net/rras/rtmv2/lookup.h
2020-09-26 16:20:57 +08:00

162 lines
3.9 KiB
C

/*++
Copyright (c) 1995-1998 Microsoft Corporation
Module Name:
lookup.h
Abstract:
Contains interface for a generalized best
matching prefix lookup data structure.
Author:
Chaitanya Kodeboyina (chaitk) 20-Jun-1998
Revision History:
--*/
#ifndef __ROUTING_LOOKUP_H__
#define __ROUTING_LOOKUP_H__
#ifdef __cplusplus
extern "C"
{
#endif
//
// Flags used to control the information dumped by the DumpTable func.
//
#define SUMMARY 0x00
#define STATS 0x01
#define ITEMS 0x02
#define VERBOSE 0xFF
//
// Field used to link the data item in the lookup structure
// [ Eg: A LIST_ENTRY field is used to link into a d-list ]
//
typedef struct _LOOKUP_LINKAGE
{
PVOID Pointer1; // Usage depends on implementation
PVOID Pointer2; // Usage depends on implementation
}
LOOKUP_LINKAGE, *PLOOKUP_LINKAGE;
//
// Context returned in Search useful in following Inserts and Deletes.
//
// This context remains valid after a search only until the
// read/write lock that is taken for the search is released.
//
typedef struct _LOOKUP_CONTEXT
{
PVOID Context1; // Usage depends on implementation
PVOID Context2; // Usage depends on implementation
PVOID Context3; // Usage depends on implementation
PVOID Context4; // Usage depends on implementation
}
LOOKUP_CONTEXT, *PLOOKUP_CONTEXT;
DWORD
WINAPI
CreateTable(
IN UINT MaxBytes,
OUT HANDLE *Table
);
DWORD
WINAPI
InsertIntoTable(
IN HANDLE Table,
IN USHORT NumBits,
IN PUCHAR KeyBits,
IN PLOOKUP_CONTEXT Context OPTIONAL,
IN PLOOKUP_LINKAGE Data
);
DWORD
WINAPI
DeleteFromTable(
IN HANDLE Table,
IN USHORT NumBits,
IN PUCHAR KeyBits,
IN PLOOKUP_CONTEXT Context OPTIONAL,
OUT PLOOKUP_LINKAGE *Data
);
DWORD
WINAPI
SearchInTable(
IN HANDLE Table,
IN USHORT NumBits,
IN PUCHAR KeyBits,
OUT PLOOKUP_CONTEXT Context OPTIONAL,
OUT PLOOKUP_LINKAGE *Data
);
DWORD
WINAPI
BestMatchInTable(
IN HANDLE Table,
IN PUCHAR KeyBits,
OUT PLOOKUP_LINKAGE *BestData
);
DWORD
WINAPI
NextMatchInTable(
IN HANDLE Table,
IN PLOOKUP_LINKAGE BestData,
OUT PLOOKUP_LINKAGE *NextBestData
);
DWORD
WINAPI
EnumOverTable(
IN HANDLE Table,
IN OUT PUSHORT StartNumBits,
IN OUT PUCHAR StartKeyBits,
IN OUT PLOOKUP_CONTEXT Context OPTIONAL,
IN USHORT StopNumBits OPTIONAL,
IN PUCHAR StopKeyBits OPTIONAL,
IN OUT PUINT NumItems,
OUT PLOOKUP_LINKAGE *DataItems
);
DWORD
WINAPI
DestroyTable(
IN HANDLE Table
);
DWORD
WINAPI
GetStatsFromTable(
IN HANDLE Table,
OUT PVOID Stats
);
BOOL
WINAPI
CheckTable(
IN HANDLE Table
);
VOID
WINAPI
DumpTable(
IN HANDLE Table,
IN DWORD Flags
);
#ifdef __cplusplus
}
#endif
#endif //__ROUTING_LOOKUP_H__