138 lines
4.5 KiB
C
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_
|