windows-nt/Source/XPSP1/NT/net/rras/ipx/rtrmgr/globals.c
2020-09-26 16:20:57 +08:00

203 lines
4.1 KiB
C

/*++
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);