|
|
/*++
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__
|