203 lines
4.1 KiB
C
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);
|