//============================================================================= // Copyright (c) 1997 Microsoft Corporation // // File: dvmrp.h // // Abstract: // Contains type definitions and declarations for Dvmrp // // Author: K.S.Lokesh (lokeshs@) 1-1-98 // // Revision History: //============================================================================= #ifndef _DVMRP_H_ #define _DVMRP_H_ //---------------------------------------------------------------------------- // constants identifying DVMRPs MIB tables. The "TypeId" is set to this value // // DVMRP_GLOBAL_CONFIG_ID : returns the global config // DVMRP_GLOBAL_STATS_ID : returns the global statistics // DVMRP_IF_BINDING_ID : returns list of bindings for each interface // DVMRP_IF_CONFIG_ID : returns the config info for an interface // DVMRP_IF_STATS_ID : returns the stats for an interface //---------------------------------------------------------------------------- #define DVMRP_GLOBAL_CONFIG_ID 0 #define DVMRP_GLOBAL_STATS_ID 1 #define DVMRP_IF_BINDING_ID 2 #define DVMRP_IF_CONFIG_ID 3 #define DVMRP_IF_STATS_ID 4 #define DVMRP_LAST_TABLE_ID 7 //---------------------------------------------------------------------------- // constants used for the field DVMRP_GLOBAL_CONFIG::LoggingLevel //---------------------------------------------------------------------------- #define DVMRP_LOGGING_NONE 0 #define DVMRP_LOGGING_ERROR 1 #define DVMRP_LOGGING_WARN 2 #define DVMRP_LOGGING_INFO 3 //---------------------------------------------------------------------------- // DVMRP_GLOBAL_CONFIG //---------------------------------------------------------------------------- typedef struct _DVMRP_GLOBAL_CONFIG { USHORT MajorVersion; USHORT MinorVersion; DWORD LoggingLevel; DWORD RouteReportInterval; DWORD RouteExpirationInterval; DWORD RouteHolddownInterval; DWORD PruneLifetimeInterval; } DVMRP_GLOBAL_CONFIG, *PDVMRP_GLOBAL_CONFIG; // defaults #define DVMRP_ROUTE_REPORT_INTERVAL 60000 #define DVMRP_ROUTE_EXPIRATION_INTERVAL 140000 #define DVMRP_ROUTE_HOLDDOWN_INTERVAL (2*DVMRP_ROUTE_REPORT_INTERVAL) #define DVMRP_PRUNE_LIFETIME_INTERVAL 7200000 //---------------------------------------------------------------------------- // DVMRP_ADDR_MASK, DVMRP_PEER_FILTER //---------------------------------------------------------------------------- typedef struct _DVMRP_ADDR_MASK { DWORD IpAddr; DWORD Mask; } DVMRP_ADDR_MASK, *PDVMRP_ADDR_MASK; typedef DVMRP_ADDR_MASK DVMRP_PEER_FILTER; typedef PDVMRP_ADDR_MASK PDVMRP_PEER_FILTER; //---------------------------------------------------------------------------- // DVMRP_IF_CONFIG //---------------------------------------------------------------------------- typedef struct _DVMRP_IF_CONFIG { DWORD ConfigIpAddr; // effective addr can be assigned in config DWORD Status; // Read only DWORD Flags; DWORD Metric; DWORD ProbeInterval; DWORD PeerTimeoutInterval; DWORD MinTriggeredUpdateInterval; DWORD PeerFilterMode; DWORD NumPeerFilters; } DVMRP_IF_CONFIG, *PDVMRP_IF_CONFIG; #define GET_FIRST_DVMRP_PEER_FILTER(pIfConfig) \ (PDVMRP_PEER_FILTER) (((PDVMRP_IF_CONFIG) pIfConfig) + 1) #define DVMRP_IF_CONFIG_SIZE(pIfConfig) \ (sizeof(DVMRP_IF_CONFIG) \ + (pIfConfig->NumPeerFilters*sizeof(DVMRP_PEER_FILTER))) #define DVMRP_PROBE_INTERVAL 10000 #define PEER_TIMEOUT_INTERVAL 35000 #define MIN_TRIGGERED_UPDATE_INTERVAL 5000 // // values for Flags // #define DVMRP_IF_ENABLED_IN_CONFIG 0x0001 #define IS_DVMRP_IF_ENABLED_FLAG_SET(Flags) \ ((Flags) & DVMRP_IF_ENABLED_IN_CONFIG) //---------------------------------------------------------------------------- // Constants used for DVMRP_IF_CONFIG.PeerFilterMode //---------------------------------------------------------------------------- #define DVMRP_FILTER_DISABLED 0 #define DVMRP_FILTER_INCLUDE 1 #define DVMRP_FILTER_EXCLUDE 2 /* * DVMRP message types and flag values shamelessly stolen from * mrouted/dvmrp.h. */ #define DVMRP_PROBE 1 /* for finding neighbors */ #define DVMRP_REPORT 2 /* for reporting some or all routes */ #define DVMRP_ASK_NEIGHBORS 3 /* sent by mapper, asking for a list */ /* * of this router's neighbors */ #define DVMRP_NEIGHBORS 4 /* response to such a request */ #define DVMRP_ASK_NEIGHBORS2 5 /* as above, want new format reply */ #define DVMRP_NEIGHBORS2 6 #define DVMRP_PRUNE 7 /* prune message */ #define DVMRP_GRAFT 8 /* graft message */ #define DVMRP_GRAFT_ACK 9 /* graft acknowledgement */ #endif // _DVMRP_H_