/*++ Copyright (c) 1995 Microsoft Corporation Module Name: globals.c Abstract: Contains all(most) router manager globals Author: Stefan Solomon 03/21/1995 Revision History: --*/ #include "precomp.h" #pragma hdrstop //***************************************************************** // * // ROUTER CONFIGURATION PARAMETERS * // * //***************************************************************** // Size of the routing table and routing hash table ULONG MaxRoutingTableSize = IPX_MAX_ROUTING_TABLE_SIZE; ULONG RoutingTableHashSize = IPX_MEDIUM_ROUTING_TABLE_HASH_SIZE; //***************************************************************** // * // Internal Variables * // * //***************************************************************** // Routing Protocols Oper State ULONG RipOperState = OPER_STATE_DOWN; ULONG SapOperState = OPER_STATE_DOWN; // Pointer to the internal interface PICB InternalInterfacep = NULL; // Pointer to the internal adapter PACB InternalAdapterp = NULL; // The RouterWorker thread events: adapter, forwarder, autostatic update, stop // and timer notifications HANDLE g_hEvents[MAX_EVENTS]; // signatures // Interface Control Block Signature UCHAR InterfaceSignature[4] = { 'I', 'P', 'X', 'I' }; // Adapter Control Block Signature UCHAR AdapterSignature[4] = { 'I', 'P', 'X', 'A' }; // Router Operational State ULONG RouterOperState = OPER_STATE_DOWN; // // Router Database Lock // CRITICAL_SECTION DatabaseLock; // // RTM Handle // HANDLE RtmStaticHandle = NULL; HANDLE RtmLocalHandle = NULL; // // Hash Table of ICBs hashed by interface index // LIST_ENTRY IndexIfHt[IF_HASH_TABLE_SIZE]; // // List of intefaces ordered by interface index // LIST_ENTRY IndexIfList; // // Global WAN net // BOOL WanNetDatabaseInitialized = FALSE; BOOL EnableGlobalWanNet = FALSE; UCHAR GlobalWanNet[4] = {0,0,0,0}; // // Hash Table of ACBs hashed by adapter index // LIST_ENTRY IndexAdptHt[ADAPTER_HASH_TABLE_SIZE]; // // MIB APIs Ref Counter // ULONG MibRefCounter = 0; // null net UCHAR nullnet[4] = {0,0,0,0}; // // List of routing protocols control blocks and counter // LIST_ENTRY RoutingProtocolCBList; ULONG RoutingProtocolActiveCount = 0; // Indicates the mode of the router (lan only) or lan & wan BOOL LanOnlyMode = TRUE; // Variable to get the interface index requesting connection PFW_DIAL_REQUEST ConnRequest; OVERLAPPED ConnReqOverlapped; // Variable to count the number of pending work items ULONG WorkItemsPendingCounter = 0; // // ************ DDM ENTRY POINTS ******** // DWORD (APIENTRY *ConnectInterface)(IN HANDLE hDIMInterface, IN DWORD ProtocolId); DWORD (APIENTRY *DisconnectInterface)(IN HANDLE hDIMInterface, IN DWORD ProtocolId); // // This call will make DIM store the interface information into the // Site Object for this interface. // Either but not both of pInterfaceInfo and pFilterInfo may be NULL // DWORD (APIENTRY *SaveInterfaceInfo)( IN HANDLE hDIMInterface, IN DWORD dwProtocolId, IN LPVOID pInterfaceInfo, IN DWORD cbInterfaceInfoSize); // // This will make DIM get interface information from the Site object. // Either but not both of pInterfaceInfo and pFilterInfo may be NULL // DWORD (APIENTRY *RestoreInterfaceInfo)( IN HANDLE hDIMInterface, IN DWORD dwProtocolId, IN LPVOID lpInterfaceInfo, IN LPDWORD lpcbInterfaceInfoSize); VOID (APIENTRY *RouterStopped)( IN DWORD dwProtocolId, IN DWORD dwError ); VOID (APIENTRY *InterfaceEnabled)( IN HANDLE hDIMInterface, IN DWORD dwProtocolId, IN BOOL fEnabled ); // // *********** IPXCP ENTRY POINTS ******** // DWORD (*IpxcpBind)(PIPXCP_INTERFACE IpxcpInterface); VOID (*IpxcpRouterStarted)(VOID); VOID (*IpxcpRouterStopped)(VOID);