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

272 lines
6.6 KiB
C

/*++
Copyright (c) 1997-1998 Microsoft Corporation
Module Name:
rtmconst.h
Abstract:
Private Constants used in the RTMv2 DLL
Author:
Chaitanya Kodeboyina (chaitk) 17-Aug-1998
Revision History:
--*/
#ifndef __ROUTING_RTMCONST_H__
#define __ROUTING_RTMCONST_H__
//
// Registry Key Names & Limits for configuration parameters
//
#define MAX_CONFIG_KEY_SIZE 260
#define RTM_CONFIG_ROOT TEXT("SYSTEM" \
"\\CurrentControlSet" \
"\\Services" \
"\\RemoteAccess" \
"\\RoutingTableManager")
#define RTM_CONFIG_ROOT_SIZE sizeof(RTM_CONFIG_ROOT)
#define REG_KEY_INSTANCE_SUBKEY TEXT("Instance %05d")
#define REG_KEY_ADDR_FAMILY_SUBKEY TEXT("AddressFamily %05d")
#define REG_KEY_INSTANCE_TEMPLATE TEXT("\\Instance %05d")
#define REG_KEY_ADDR_FAMILY_TEMPLATE TEXT("\\Instance %05d" \
"\\AddressFamily %05d")
#define DEFAULT_INSTANCE_ID 0
#define REG_KEY_VIEWS_SUPPORTED TEXT("ViewsSupported")
#define DEFAULT_VIEWS_SUPPORTED (RTM_VIEW_MASK_UCAST | \
RTM_VIEW_MASK_MCAST)
#define REG_KEY_ADDRESS_SIZE TEXT("AddressSize")
#define MINIMUM_ADDRESS_SIZE 1
#define DEFAULT_ADDRESS_SIZE 4
#define MAXIMUM_ADDRESS_SIZE RTM_MAX_ADDRESS_SIZE
#define REG_KEY_MAX_NOTIFY_REGS TEXT("MaxChangeNotifyRegistrations")
#define MIN_MAX_NOTIFY_REGS 1
#define DEFAULT_MAX_NOTIFY_REGS 16
#define MAX_MAX_NOTIFY_REGS 32
#define REG_KEY_OPAQUE_INFO_PTRS TEXT("MaxOpaqueInfoPointers")
#define MIN_OPAQUE_INFO_PTRS 0
#define DEFAULT_OPAQUE_INFO_PTRS 5
#define MAX_OPAQUE_INFO_PTRS 10
#define REG_KEY_NEXTHOPS_IN_ROUTE TEXT("MaxNextHopsInRoute")
#define MIN_NEXTHOPS_IN_ROUTE 1
#define DEFAULT_NEXTHOPS_IN_ROUTE 3
#define MAX_NEXTHOPS_IN_ROUTE 10
#define REG_KEY_MAX_HANDLES_IN_ENUM TEXT("MaxHandlesReturnedInEnum")
#define MIN_MAX_HANDLES_IN_ENUM 1
#define DEFAULT_MAX_HANDLES_IN_ENUM 25
#define MAX_MAX_HANDLES_IN_ENUM 100
//
// Number of bits in a byte (or an octet)
//
#define BITS_IN_BYTE (UINT) 8
//
// RTM supported view related constants
//
#define VIEW_MASK(id) (DWORD) (1 << (id))
//
// RTM supported CN related constants
//
#define CN_MASK(id) (DWORD) (1 << (id))
#define NUM_CHANGED_DEST_LISTS 16
//
// Types of various data structures
//
#define GENERIC_TYPE 0x00
#define INSTANCE_TYPE 0x01
#define ADDRESS_FAMILY_TYPE 0x02
#define ENTITY_TYPE 0x03
#define DEST_TYPE 0x04
#define ROUTE_TYPE 0x05
#define NEXTHOP_TYPE 0x06
#define DEST_ENUM_TYPE 0x07
#define ROUTE_ENUM_TYPE 0x08
#define NEXTHOP_ENUM_TYPE 0x09
#define NOTIFY_TYPE 0x0A
#define ROUTE_LIST_TYPE 0x0B
#define LIST_ENUM_TYPE 0x0C
#define V1_REGN_TYPE 0x0D
#define V1_ENUM_TYPE 0x0E
#if DBG_HDL
//
// Type & Signature of allocated structures
//
#define GENERIC_ALLOC '+GN0'
#define INSTANCE_ALLOC '+IN1'
#define ADDRESS_FAMILY_ALLOC '+AF2'
#define ENTITY_ALLOC '+EN3'
#define DEST_ALLOC '+DT4'
#define ROUTE_ALLOC '+RT5'
#define NEXTHOP_ALLOC '+NH6'
#define DEST_ENUM_ALLOC '+DE7'
#define ROUTE_ENUM_ALLOC '+RE8'
#define NEXTHOP_ENUM_ALLOC '+NE9'
#define NOTIFY_ALLOC '+NOA'
#define ROUTE_LIST_ALLOC '+ELB'
#define LIST_ENUM_ALLOC '+LEC'
#define V1_REGN_ALLOC '+1RD'
#define V1_ENUM_ALLOC '+1EE'
extern const DWORD OBJECT_SIGNATURE[];
//
// Type & Signature of internal structures
// previously allocated, but are now freed
//
#define INSTANCE_FREED '-IN1'
#define ADDRESS_FAMILY_FREED '-AF2'
#define ENTITY_FREED '-EN3'
#define DEST_FREED '-DT4'
#define ROUTE_FREED '-RT5'
#define NEXTHOP_FREED '-NH6'
#define DEST_ENUM_FREED '-DE7'
#define ROUTE_ENUM_FREED '-RE8'
#define NEXTHOP_ENUM_FREED '-NE9'
#define NOTIFY_FREED '-NOA'
#define ROUTE_LIST_FREED '-ELB'
#define LIST_ENUM_FREED '-LEC'
#define V1_REGN_FREED '-1RD'
#define V1_ENUM_FREED '-1EE'
//
// Signature byte that indicates if memory
// allocated for an object has been freed
//
#define ALLOC '+'
#define FREED '-'
#endif // DBG_HDL
#if _DBG_
//
// Cleanup Functions for internal structures
//
#define DEFINE_DESTROY_FUNC(Name) \
DWORD \
Name (PVOID);
DEFINE_DESTROY_FUNC(DestroyGeneric);
DEFINE_DESTROY_FUNC(DestroyInstance);
DEFINE_DESTROY_FUNC(DestroyAddressFamily);
DEFINE_DESTROY_FUNC(DestroyEntity);
DEFINE_DESTROY_FUNC(DestroyDest);
DEFINE_DESTROY_FUNC(DestroyRoute);
DEFINE_DESTROY_FUNC(DestroyNextHop);
DEFINE_DESTROY_FUNC(DestroyDestEnum);
DEFINE_DESTROY_FUNC(DestroyRouteEnum);
DEFINE_DESTROY_FUNC(DestroyNextHopEnum);
DEFINE_DESTROY_FUNC(DestroyChangeNotification);
DEFINE_DESTROY_FUNC(DestroyEntityList);
DEFINE_DESTROY_FUNC(DestroyEntityListEnum);
typedef DWORD (*DestroyFunc) (PVOID Pointer);
const DestroyFunc OBJECT_DESTROY_FUNCTION[] =
{
DestroyGeneric,
DestroyInstance,
DestroyAddressFamily,
DestroyEntity,
DestroyDest,
DestroyRoute,
DestroyNextHop,
DestroyDestEnum,
DestroyRouteEnum,
DestroyNextHopEnum,
DestroyChangeNotification
DestroyEntityList,
DestroyEntityListEnum
};
#endif // _DBG_
//
// Reference Counting related constants
//
#define MAX_REFS 0x10
#define CREATION_REF 0x00
#define ADDR_FAMILY_REF 0x01
#define ENTITY_REF 0x02
#define DEST_REF 0x03
#define ROUTE_REF 0x04
#define NEXTHOP_REF 0x05
#define ENUM_REF 0x06
#define NOTIFY_REF 0x07
#define LIST_REF 0x08
#define HOLD_REF 0x09
#define TIMER_REF 0x0D
#define TEMP_USE_REF 0x0E
#define HANDLE_REF 0x0F
extern const CHAR *REF_NAME[MAX_REFS];
#endif //__ROUTING_RTMCONST_H__