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

138 lines
4.5 KiB
C

//============================================================================
// Copyright (c) 1995, Microsoft Corporation
//
// File: ipmgm.h
//
// History:
// V Raman Aug-6-1997 Created.
//
// Contains type definitions and declarations for IP MGM.
//============================================================================
#ifndef _MGMDEFS_H_
#define _MGMDEFS_H_
#define MGM_CLIENT_HANDLE_TAG ('MGMc' << 8)
#define MGM_ENUM_HANDLE_TAG ('MGMe' << 8)
//----------------------------------------------------------------------------
// Protocol constants
//----------------------------------------------------------------------------
#define INVALID_PROTOCOL_ID 0xffffffff
#define INVALID_COMPONENT_ID 0xffffffff
#define IS_VALID_PROTOCOL( a, b ) \
(a) != INVALID_PROTOCOL_ID && (b) != INVALID_COMPONENT_ID
#define IS_PROTOCOL_IGMP( p ) \
( (p)-> dwProtocolId == PROTO_IP_IGMP )
#define IS_ROUTING_PROTOCOL( p ) \
!IS_PROTOCOL_IGMP( p )
#define IS_PROTOCOL_ID_IGMP( i ) \
(i) == PROTO_IP_IGMP
//----------------------------------------------------------------------------
// Interface constants
//----------------------------------------------------------------------------
#define INVALID_INTERFACE_INDEX 0x0
#define INVALID_NEXT_HOP_ADDR 0x0
#define IS_VALID_INTERFACE( a, b ) \
(a) != INVALID_INTERFACE_INDEX
//----------------------------------------------------------------------------
// Wildcard source/group macros
//----------------------------------------------------------------------------
#define WILDCARD_GROUP 0x0
#define WILDCARD_GROUP_MASK 0x0
#define WILDCARD_SOURCE 0x0
#define WILDCARD_SOURCE_MASK 0x0
#define IS_WILDCARD_GROUP( a, b ) (a) == WILDCARD_GROUP
#define IS_WILDCARD_SOURCE( a, b ) (a) == WILDCARD_SOURCE
//----------------------------------------------------------------------------
// Time conversion constants and macros
//----------------------------------------------------------------------------
#define SYSTIME_UNITS_PER_MSEC (1000 * 10)
#define SYSTIME_UNITS_PER_SEC (1000 * SYSTIME_UNITS_PER_MSEC)
#define SYSTIME_UNITS_PER_MINUTE (60 * SYSTIME_UNITS_PER_SEC)
#define EXPIRY_INTERVAL 15 * 60 * 1000
#define ROUTE_CHECK_INTERVAL \
SYSTIME_UNITS_PER_MINUTE / SYSTIME_UNITS_PER_MSEC
#define MgmQuerySystemTime(p) NtQuerySystemTime((p))
#define MgmSetExpiryTime(p, i) \
{ \
LARGE_INTEGER __li = { i }; \
*(p) = RtlLargeIntegerAdd( *(p), __li ); \
}
#define MgmElapsedTime( p, q, u ) \
{ \
LARGE_INTEGER __li1, __li2; \
ULONG __rem; \
MgmQuerySystemTime( &__li1); \
__li2 = RtlLargeIntegerSubtract( __li1, *(p) ); \
__li1 = RtlExtendedLargeIntegerDivide( __li2, u, &__rem ); \
*(q) = __li1.LowPart; \
}
#define MgmElapsedSecs( p, q ) \
MgmElapsedTime( p, q, SYSTIME_UNITS_PER_SEC )
#define TIMER_TABLE_MAX_SIZE 16
//----------------------------------------------------------------------------
// IP address manipulation macros
// Bolade's macro.
//----------------------------------------------------------------------------
//
// This macro compares two IP addresses in network order by
// masking off each pair of octets and doing a subtraction;
// the result of the final subtraction is stored in the third argument.
//
#define INET_CMP(a,b,c) \
(((c) = (((a) & 0x000000ff) - ((b) & 0x000000ff))) ? (c) : \
(((c) = (((a) & 0x0000ff00) - ((b) & 0x0000ff00))) ? (c) : \
(((c) = (((a) & 0x00ff0000) - ((b) & 0x00ff0000))) ? (c) : \
(((c) = ((((a)>>8) & 0x00ff0000) - (((b)>>8) & 0x00ff0000)))))))
//
// IP address conversion macro:
// calls inet_ntoa directly on a DWORD, by casting it as an IN_ADDR.
//
#define INET_NTOA(dw) inet_ntoa( *(PIN_ADDR)&(dw) )
//
// IPv4 mask len
//
#define IPv4_ADDR_LEN 32
#endif // _MGMDEFS_H_