956 lines
42 KiB
C
956 lines
42 KiB
C
#include "precomp.h"
|
|
|
|
DWORD g_uptimeReference;
|
|
MIB_SERVER_HANDLE g_MibServerHandle = 0;
|
|
CRITICAL_SECTION g_ConnectionLock;
|
|
UCHAR ZERO_NET_NUM[4] = {0,0,0,0};
|
|
UCHAR ZERO_SERVER_NAME[1] = {0};
|
|
|
|
#if DBG
|
|
// DWORD DbgLevel=DEF_DBGLEVEL;
|
|
DWORD DbgLevel=0xffffffff;
|
|
#endif
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// root oid //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_ms_mipx[] = {1,3,6,1,4,1,311,1,8};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxBase group (1.3.6.1.4.1.311.1.8.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxBase[] = {1};
|
|
static UINT ids_mipxBaseOperState[] = {1,1,0};
|
|
static UINT ids_mipxBasePrimaryNetNumber[] = {1,2,0};
|
|
static UINT ids_mipxBaseNode[] = {1,3,0};
|
|
static UINT ids_mipxBaseSysName[] = {1,4,0};
|
|
static UINT ids_mipxBaseMaxPathSplits[] = {1,5,0};
|
|
static UINT ids_mipxBaseIfCount[] = {1,6,0};
|
|
static UINT ids_mipxBaseDestCount[] = {1,7,0};
|
|
static UINT ids_mipxBaseServCount[] = {1,8,0};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxInterface group (1.3.6.1.4.1.311.1.8.2) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxInterface[] = {2};
|
|
static UINT ids_mipxIfTable[] = {2,1};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxIfEntry table (1.3.6.1.4.1.311.1.8.2.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxIfEntry[] = {2,1,1};
|
|
static UINT ids_mipxIfIndex[] = {2,1,1,1};
|
|
static UINT ids_mipxIfAdminState[] = {2,1,1,2};
|
|
static UINT ids_mipxIfOperState[] = {2,1,1,3};
|
|
static UINT ids_mipxIfAdapterIndex[] = {2,1,1,4};
|
|
static UINT ids_mipxIfName[] = {2,1,1,5};
|
|
static UINT ids_mipxIfType[] = {2,1,1,6};
|
|
static UINT ids_mipxIfLocalMaxPacketSize[] = {2,1,1,7};
|
|
static UINT ids_mipxIfMediaType[] = {2,1,1,8};
|
|
static UINT ids_mipxIfNetNumber[] = {2,1,1,9};
|
|
static UINT ids_mipxIfMacAddress[] = {2,1,1,10};
|
|
static UINT ids_mipxIfDelay[] = {2,1,1,11};
|
|
static UINT ids_mipxIfThroughput[] = {2,1,1,12};
|
|
static UINT ids_mipxIfIpxWanEnable[] = {2,1,1,13};
|
|
static UINT ids_mipxIfNetbiosAccept[] = {2,1,1,14};
|
|
static UINT ids_mipxIfNetbiosDeliver[] = {2,1,1,15};
|
|
static UINT ids_mipxIfInHdrErrors[] = {2,1,1,16};
|
|
static UINT ids_mipxIfInFilterDrops[] = {2,1,1,17};
|
|
static UINT ids_mipxIfInNoRoutes[] = {2,1,1,18};
|
|
static UINT ids_mipxIfInDiscards[] = {2,1,1,19};
|
|
static UINT ids_mipxIfInDelivers[] = {2,1,1,20};
|
|
static UINT ids_mipxIfOutFilterDrops[] = {2,1,1,21};
|
|
static UINT ids_mipxIfOutDiscards[] = {2,1,1,22};
|
|
static UINT ids_mipxIfOutDelivers[] = {2,1,1,23};
|
|
static UINT ids_mipxIfInNetbiosPackets[] = {2,1,1,24};
|
|
static UINT ids_mipxIfOutNetbiosPackets[] = {2,1,1,25};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxForwarding group (1.3.6.1.4.1.311.1.8.3) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxForwarding[] = {3};
|
|
static UINT ids_mipxDestTable[] = {3,1};
|
|
static UINT ids_mipxStaticRouteTable[] = {3,2};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxDestEntry table (1.3.6.1.4.1.311.1.8.3.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxDestEntry[] = {3,1,1};
|
|
static UINT ids_mipxDestNetNum[] = {3,1,1,1};
|
|
static UINT ids_mipxDestProtocol[] = {3,1,1,2};
|
|
static UINT ids_mipxDestTicks[] = {3,1,1,3};
|
|
static UINT ids_mipxDestHopCount[] = {3,1,1,4};
|
|
static UINT ids_mipxDestNextHopIfIndex[] = {3,1,1,5};
|
|
static UINT ids_mipxDestNextHopMacAddress[] = {3,1,1,6};
|
|
static UINT ids_mipxDestFlags[] = {3,1,1,7};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxStaticRouteEntry table (1.3.6.1.4.1.311.1.8.3.2.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxStaticRouteEntry[] = {3,2,1};
|
|
static UINT ids_mipxStaticRouteIfIndex[] = {3,2,1,1};
|
|
static UINT ids_mipxStaticRouteNetNum[] = {3,2,1,2};
|
|
static UINT ids_mipxStaticRouteEntryStatus[]= {3,2,1,3};
|
|
static UINT ids_mipxStaticRouteTicks[] = {3,2,1,4};
|
|
static UINT ids_mipxStaticRouteHopCount[] = {3,2,1,5};
|
|
static UINT ids_mipxStaticRouteNextHopMacAddress[]= {3,2,1,6};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxServices group (1.3.6.1.4.1.311.1.8.4) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxServices[] = {4};
|
|
static UINT ids_mipxServTable[] = {4,1};
|
|
static UINT ids_mipxStaticServTable[] = {4,2};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxServEntry table (1.3.6.1.4.1.311.1.8.4.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxServEntry[] = {4,1,1};
|
|
static UINT ids_mipxServType[] = {4,1,1,1};
|
|
static UINT ids_mipxServName[] = {4,1,1,2};
|
|
static UINT ids_mipxServProtocol[] = {4,1,1,3};
|
|
static UINT ids_mipxServNetNum[] = {4,1,1,4};
|
|
static UINT ids_mipxServNode[] = {4,1,1,5};
|
|
static UINT ids_mipxServSocket[] = {4,1,1,6};
|
|
static UINT ids_mipxServHopCount[] = {4,1,1,7};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mipxStaticServEntry table (1.3.6.1.4.1.311.1.8.4.2.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mipxStaticServEntry[] = {4,2,1};
|
|
static UINT ids_mipxStaticServIfIndex[] = {4,2,1,1};
|
|
static UINT ids_mipxStaticServType[] = {4,2,1,2};
|
|
static UINT ids_mipxStaticServName[] = {4,2,1,3};
|
|
static UINT ids_mipxStaticServEntryStatus[] = {4,2,1,4};
|
|
static UINT ids_mipxStaticServNetNum[] = {4,2,1,5};
|
|
static UINT ids_mipxStaticServNode[] = {4,2,1,6};
|
|
static UINT ids_mipxStaticServSocket[] = {4,2,1,7};
|
|
static UINT ids_mipxStaticServHopCount[] = {4,2,1,8};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib entry list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibEntry mib_ms_mipx[] = {
|
|
MIB_GROUP(mipxBase),
|
|
MIB_INTEGER(mipxBaseOperState),
|
|
MIB_OCTETSTRING_L(mipxBasePrimaryNetNumber,4,4),
|
|
MIB_OCTETSTRING_L(mipxBaseNode,6,6),
|
|
MIB_OCTETSTRING_L(mipxBaseSysName,0,48),
|
|
MIB_INTEGER_L(mipxBaseMaxPathSplits,1,32),
|
|
MIB_INTEGER(mipxBaseIfCount),
|
|
MIB_INTEGER(mipxBaseDestCount),
|
|
MIB_INTEGER(mipxBaseServCount),
|
|
MIB_GROUP(mipxInterface),
|
|
MIB_TABLE_ROOT(mipxIfTable),
|
|
MIB_TABLE_ENTRY(mipxIfEntry),
|
|
MIB_INTEGER(mipxIfIndex),
|
|
MIB_INTEGER_RW(mipxIfAdminState),
|
|
MIB_INTEGER(mipxIfOperState),
|
|
MIB_INTEGER(mipxIfAdapterIndex),
|
|
MIB_OCTETSTRING_L(mipxIfName,0,48),
|
|
MIB_INTEGER(mipxIfType),
|
|
MIB_INTEGER(mipxIfLocalMaxPacketSize),
|
|
MIB_INTEGER(mipxIfMediaType),
|
|
MIB_OCTETSTRING_L(mipxIfNetNumber,4,4),
|
|
MIB_OCTETSTRING_L(mipxIfMacAddress,6,6),
|
|
MIB_INTEGER(mipxIfDelay),
|
|
MIB_INTEGER(mipxIfThroughput),
|
|
MIB_INTEGER_RW(mipxIfIpxWanEnable),
|
|
MIB_INTEGER_RW(mipxIfNetbiosAccept),
|
|
MIB_INTEGER_RW(mipxIfNetbiosDeliver),
|
|
MIB_COUNTER(mipxIfInHdrErrors),
|
|
MIB_COUNTER(mipxIfInFilterDrops),
|
|
MIB_COUNTER(mipxIfInNoRoutes),
|
|
MIB_COUNTER(mipxIfInDiscards),
|
|
MIB_COUNTER(mipxIfInDelivers),
|
|
MIB_COUNTER(mipxIfOutFilterDrops),
|
|
MIB_COUNTER(mipxIfOutDiscards),
|
|
MIB_COUNTER(mipxIfOutDelivers),
|
|
MIB_COUNTER(mipxIfInNetbiosPackets),
|
|
MIB_COUNTER(mipxIfOutNetbiosPackets),
|
|
MIB_GROUP(mipxForwarding),
|
|
MIB_TABLE_ROOT(mipxDestTable),
|
|
MIB_TABLE_ENTRY(mipxDestEntry),
|
|
MIB_OCTETSTRING_L(mipxDestNetNum,4,4),
|
|
MIB_INTEGER(mipxDestProtocol),
|
|
MIB_INTEGER(mipxDestTicks),
|
|
MIB_INTEGER(mipxDestHopCount),
|
|
MIB_INTEGER(mipxDestNextHopIfIndex),
|
|
MIB_OCTETSTRING_L(mipxDestNextHopMacAddress,6,6),
|
|
MIB_INTEGER_L(mipxDestFlags,0,3),
|
|
MIB_TABLE_ROOT(mipxStaticRouteTable),
|
|
MIB_TABLE_ENTRY(mipxStaticRouteEntry),
|
|
MIB_INTEGER(mipxStaticRouteIfIndex),
|
|
MIB_OCTETSTRING_L(mipxStaticRouteNetNum,4,4),
|
|
MIB_INTEGER_RW(mipxStaticRouteEntryStatus),
|
|
MIB_INTEGER_RW(mipxStaticRouteTicks),
|
|
MIB_INTEGER_RW(mipxStaticRouteHopCount),
|
|
MIB_OCTETSTRING_RW_L(mipxStaticRouteNextHopMacAddress,6,6),
|
|
MIB_GROUP(mipxServices),
|
|
MIB_TABLE_ROOT(mipxServTable),
|
|
MIB_TABLE_ENTRY(mipxServEntry),
|
|
MIB_OCTETSTRING_L(mipxServType,2,2),
|
|
MIB_OCTETSTRING_L(mipxServName,1,48),
|
|
MIB_INTEGER(mipxServProtocol),
|
|
MIB_OCTETSTRING_L(mipxServNetNum,4,4),
|
|
MIB_OCTETSTRING_L(mipxServNode,6,6),
|
|
MIB_OCTETSTRING_L(mipxServSocket,2,2),
|
|
MIB_INTEGER(mipxServHopCount),
|
|
MIB_TABLE_ROOT(mipxStaticServTable),
|
|
MIB_TABLE_ENTRY(mipxStaticServEntry),
|
|
MIB_INTEGER(mipxStaticServIfIndex),
|
|
MIB_OCTETSTRING_L(mipxStaticServType,2,2),
|
|
MIB_OCTETSTRING_L(mipxStaticServName,1,48),
|
|
MIB_INTEGER_RW(mipxStaticServEntryStatus),
|
|
MIB_OCTETSTRING_RW_L(mipxStaticServNetNum,4,4),
|
|
MIB_OCTETSTRING_RW_L(mipxStaticServNode,6,6),
|
|
MIB_OCTETSTRING_RW_L(mipxStaticServSocket,2,2),
|
|
MIB_INTEGER_RW(mipxStaticServHopCount),
|
|
MIB_END()
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib table list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibTable tbl_ms_mipx[] = {
|
|
MIB_TABLE(ms_mipx,mipxIfEntry,NULL),
|
|
MIB_TABLE(ms_mipx,mipxDestEntry,NULL),
|
|
MIB_TABLE(ms_mipx,mipxStaticRouteEntry,NULL),
|
|
MIB_TABLE(ms_mipx,mipxServEntry,NULL),
|
|
MIB_TABLE(ms_mipx,mipxStaticServEntry,NULL)
|
|
};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// root oid //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_ms_mripsap[] = {1,3,6,1,4,1,311,1,9};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mripsapBase group (1.3.6.1.4.1.311.1.9.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
static UINT ids_mripsapBase[] = {1};
|
|
static UINT ids_mripsapBaseRipOperState[] = {1,1,0};
|
|
static UINT ids_mripsapBaseSapOperState[] = {1,2,0};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mripsapInterface group (1.3.6.1.4.1.311.1.9.2) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mripsapInterface[] = {2};
|
|
|
|
static UINT ids_mripIfTable[] = {2,1};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// mripIfEntry table (1.3.6.1.4.1.311.1.9.2.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_mripIfEntry[] = {2,1,1};
|
|
static UINT ids_mripIfIndex[] = {2,1,1,1};
|
|
static UINT ids_mripIfAdminState[] = {2,1,1,2};
|
|
static UINT ids_mripIfOperState[] = {2,1,1,3};
|
|
static UINT ids_mripIfUpdateMode[] = {2,1,1,4};
|
|
static UINT ids_mripIfUpdateInterval[] = {2,1,1,5};
|
|
static UINT ids_mripIfAgeMultiplier[] = {2,1,1,6};
|
|
static UINT ids_mripIfSupply[] = {2,1,1,7};
|
|
static UINT ids_mripIfListen[] = {2,1,1,8};
|
|
static UINT ids_mripIfOutPackets[] = {2,1,1,9};
|
|
static UINT ids_mripIfInPackets[] = {2,1,1,10};
|
|
|
|
|
|
static UINT ids_msapIfTable[] = {2,2};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// msapIfEntry table (1.3.6.1.4.1.311.1.9.2.2.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_msapIfEntry[] = {2,2,1};
|
|
static UINT ids_msapIfIndex[] = {2,2,1,1};
|
|
static UINT ids_msapIfAdminState[] = {2,2,1,2};
|
|
static UINT ids_msapIfOperState[] = {2,2,1,3};
|
|
static UINT ids_msapIfUpdateMode[] = {2,2,1,4};
|
|
static UINT ids_msapIfUpdateInterval[] = {2,2,1,5};
|
|
static UINT ids_msapIfAgeMultiplier[] = {2,2,1,6};
|
|
static UINT ids_msapIfSupply[] = {2,2,1,7};
|
|
static UINT ids_msapIfListen[] = {2,2,1,8};
|
|
static UINT ids_msapIfGetNearestServerReply[]= {2,2,1,9};
|
|
static UINT ids_msapIfOutPackets[] = {2,2,1,10};
|
|
static UINT ids_msapIfInPackets[] = {2,2,1,11};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib entry list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibEntry mib_ms_mripsap[] = {
|
|
MIB_GROUP(mripsapBase),
|
|
MIB_INTEGER(mripsapBaseRipOperState),
|
|
MIB_INTEGER(mripsapBaseSapOperState),
|
|
MIB_GROUP(mripsapInterface),
|
|
MIB_TABLE_ROOT(mripIfTable),
|
|
MIB_TABLE_ENTRY(mripIfEntry),
|
|
MIB_INTEGER(mripIfIndex),
|
|
MIB_INTEGER_RW(mripIfAdminState),
|
|
MIB_INTEGER(mripIfOperState),
|
|
MIB_INTEGER_RW(mripIfUpdateMode),
|
|
MIB_INTEGER_RW(mripIfUpdateInterval),
|
|
MIB_INTEGER_RW(mripIfAgeMultiplier),
|
|
MIB_INTEGER_RW(mripIfSupply),
|
|
MIB_INTEGER_RW(mripIfListen),
|
|
MIB_COUNTER(mripIfOutPackets),
|
|
MIB_COUNTER(mripIfInPackets),
|
|
MIB_TABLE_ROOT(msapIfTable),
|
|
MIB_TABLE_ENTRY(msapIfEntry),
|
|
MIB_INTEGER(msapIfIndex),
|
|
MIB_INTEGER_RW(msapIfAdminState),
|
|
MIB_INTEGER(msapIfOperState),
|
|
MIB_INTEGER_RW(msapIfUpdateMode),
|
|
MIB_INTEGER_RW(msapIfUpdateInterval),
|
|
MIB_INTEGER_RW(msapIfAgeMultiplier),
|
|
MIB_INTEGER_RW(msapIfSupply),
|
|
MIB_INTEGER_RW(msapIfListen),
|
|
MIB_INTEGER_RW(msapIfGetNearestServerReply),
|
|
MIB_COUNTER(msapIfOutPackets),
|
|
MIB_COUNTER(msapIfInPackets),
|
|
MIB_END()
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib table list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibTable tbl_ms_mripsap[] = {
|
|
MIB_TABLE(ms_mripsap,mripIfEntry,NULL),
|
|
MIB_TABLE(ms_mripsap,msapIfEntry,NULL)
|
|
};
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// root oid //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nv_nipx[] = {1,3,6,1,4,1,23,2,5};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxSystem group (1.3.6.1.4.1.23.2.5.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxSystem[] = {1};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxBasicSysEntry table (1.3.6.1.4.1.23.2.5.1.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
static UINT ids_nipxBasicSysTable[] ={1,1};
|
|
static UINT ids_nipxBasicSysEntry[] ={1,1,1};
|
|
static UINT ids_nipxBasicSysInstance[] ={1,1,1,1};
|
|
static UINT ids_nipxBasicSysExistState[] ={1,1,1,2};
|
|
static UINT ids_nipxBasicSysNetNumber[] ={1,1,1,3};
|
|
static UINT ids_nipxBasicSysNode[] ={1,1,1,4};
|
|
static UINT ids_nipxBasicSysName[] ={1,1,1,5};
|
|
static UINT ids_nipxBasicSysInReceives[] ={1,1,1,6};
|
|
static UINT ids_nipxBasicSysInHdrErrors[] ={1,1,1,7};
|
|
static UINT ids_nipxBasicSysInUnknownSockets[]={1,1,1,8};
|
|
static UINT ids_nipxBasicSysInDiscards[] ={1,1,1,9};
|
|
static UINT ids_nipxBasicSysInBadChecksums[]={1,1,1,10};
|
|
static UINT ids_nipxBasicSysInDelivers[] ={1,1,1,11};
|
|
static UINT ids_nipxBasicSysNoRoutes[] ={1,1,1,12};
|
|
static UINT ids_nipxBasicSysOutRequests[] ={1,1,1,13};
|
|
static UINT ids_nipxBasicSysOutMalformedRequests[]={1,1,1,14};
|
|
static UINT ids_nipxBasicSysOutDiscards[] ={1,1,1,15};
|
|
static UINT ids_nipxBasicSysOutPackets[] ={1,1,1,16};
|
|
static UINT ids_nipxBasicSysConfigSockets[] ={1,1,1,17};
|
|
static UINT ids_nipxBasicSysOpenSocketFails[]={1,1,1,18};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxAdvSysEntry table (1.3.6.1.4.1.23.2.5.1.2.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxAdvSysTable[] ={1,2};
|
|
static UINT ids_nipxAdvSysEntry[] ={1,2,1};
|
|
static UINT ids_nipxAdvSysInstance[] ={1,2,1,1};
|
|
static UINT ids_nipxAdvSysMaxPathSplits[] ={1,2,1,2};
|
|
static UINT ids_nipxAdvSysMaxHops[] ={1,2,1,3};
|
|
static UINT ids_nipxAdvSysInTooManyHops[] ={1,2,1,4};
|
|
static UINT ids_nipxAdvSysInFiltered[] ={1,2,1,5};
|
|
static UINT ids_nipxAdvSysInCompressDiscards[]={1,2,1,6};
|
|
static UINT ids_nipxAdvSysNETBIOSPackets[] ={1,2,1,7};
|
|
static UINT ids_nipxAdvSysForwPackets[] ={1,2,1,8};
|
|
static UINT ids_nipxAdvSysOutFiltered[] ={1,2,1,9};
|
|
static UINT ids_nipxAdvSysOutCompressDiscards[]={1,2,1,10};
|
|
static UINT ids_nipxAdvSysCircCount[] ={1,2,1,11};
|
|
static UINT ids_nipxAdvSysDestCount[] ={1,2,1,12};
|
|
static UINT ids_nipxAdvSysServCount[] ={1,2,1,13};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxCircuit group (1.3.6.1.4.1.23.2.5.2) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxCircuit[] ={2};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxCircEntry table (1.3.6.1.4.1.23.2.5.2.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxCircTable[] ={2,1};
|
|
static UINT ids_nipxCircEntry[] ={2,1,1};
|
|
static UINT ids_nipxCircSysInstance[] ={2,1,1,1};
|
|
static UINT ids_nipxCircIndex[] ={2,1,1,2};
|
|
static UINT ids_nipxCircExistState[] ={2,1,1,3};
|
|
static UINT ids_nipxCircOperState[] ={2,1,1,4};
|
|
static UINT ids_nipxCircIfIndex[] ={2,1,1,5};
|
|
static UINT ids_nipxCircName[] ={2,1,1,6};
|
|
static UINT ids_nipxCircType[] ={2,1,1,7};
|
|
static UINT ids_nipxCircDialName[] ={2,1,1,8};
|
|
static UINT ids_nipxCircLocalMaxPacketSize[]={2,1,1,9};
|
|
static UINT ids_nipxCircCompressState[] ={2,1,1,10};
|
|
static UINT ids_nipxCircCompressSlots[] ={2,1,1,11};
|
|
static UINT ids_nipxCircStaticStatus[] ={2,1,1,12};
|
|
static UINT ids_nipxCircCompressedSent[] ={2,1,1,13};
|
|
static UINT ids_nipxCircCompressedInitSent[]={2,1,1,14};
|
|
static UINT ids_nipxCircCompressedRejectsSent[]={2,1,1,15};
|
|
static UINT ids_nipxCircUncompressedSent[] ={2,1,1,16};
|
|
static UINT ids_nipxCircCompressedReceived[]={2,1,1,17};
|
|
static UINT ids_nipxCircCompressedInitReceived[]={2,1,1,18};
|
|
static UINT ids_nipxCircCompressedRejectsReceived[]={2,1,1,19};
|
|
static UINT ids_nipxCircUncompressedReceived[]={2,1,1,20};
|
|
static UINT ids_nipxCircMediaType[] ={2,1,1,21};
|
|
static UINT ids_nipxCircNetNumber[] ={2,1,1,22};
|
|
static UINT ids_nipxCircStateChanges[] ={2,1,1,23};
|
|
static UINT ids_nipxCircInitFails[] ={2,1,1,24};
|
|
static UINT ids_nipxCircDelay[] ={2,1,1,25};
|
|
static UINT ids_nipxCircThroughput[] ={2,1,1,26};
|
|
static UINT ids_nipxCircNeighRouterName[] ={2,1,1,27};
|
|
static UINT ids_nipxCircNeighInternalNetNum[]={2,1,1,28};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxForwarding group (1.3.6.1.4.1.23.2.5.3) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxForwarding[] ={3};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxDestEntry table (1.3.6.1.4.1.23.2.5.3.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxDestTable[] ={3,1};
|
|
static UINT ids_nipxDestEntry[] ={3,1,1};
|
|
static UINT ids_nipxDestSysInstance[] ={3,1,1,1};
|
|
static UINT ids_nipxDestNetNum[] ={3,1,1,2};
|
|
static UINT ids_nipxDestProtocol[] ={3,1,1,3};
|
|
static UINT ids_nipxDestTicks[] ={3,1,1,4};
|
|
static UINT ids_nipxDestHopCount[] ={3,1,1,5};
|
|
static UINT ids_nipxDestNextHopCircIndex[] ={3,1,1,6};
|
|
static UINT ids_nipxDestNextHopNICAddress[] ={3,1,1,7};
|
|
static UINT ids_nipxDestNextHopNetNum[] ={3,1,1,8};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// ids_nipxStaticRouteEntry table (1.3.6.1.4.1.23.2.5.3.1.2) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxStaticRouteTable[] ={3,2};
|
|
static UINT ids_nipxStaticRouteEntry[] ={3,2,1};
|
|
static UINT ids_nipxStaticRouteSysInstance[]={3,2,1,1};
|
|
static UINT ids_nipxStaticRouteCircIndex[] ={3,2,1,2};
|
|
static UINT ids_nipxStaticRouteNetNum[] ={3,2,1,3};
|
|
static UINT ids_nipxStaticRouteExistState[] ={3,2,1,4};
|
|
static UINT ids_nipxStaticRouteTicks[] ={3,2,1,5};
|
|
static UINT ids_nipxStaticRouteHopCount[] ={3,2,1,6};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxServices group (1.3.6.1.4.1.23.2.5.4) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxServices[] ={4};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxServEntry table (1.3.6.1.4.1.23.2.5.4.1.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxServTable[] ={4,1};
|
|
static UINT ids_nipxServEntry[] ={4,1,1};
|
|
static UINT ids_nipxServSysInstance[] ={4,1,1,1};
|
|
static UINT ids_nipxServType[] ={4,1,1,2};
|
|
static UINT ids_nipxServName[] ={4,1,1,3};
|
|
static UINT ids_nipxServProtocol[] ={4,1,1,4};
|
|
static UINT ids_nipxServNetNum[] ={4,1,1,5};
|
|
static UINT ids_nipxServNode[] ={4,1,1,6};
|
|
static UINT ids_nipxServSocket[] ={4,1,1,7};
|
|
static UINT ids_nipxServHopCount[] ={4,1,1,8};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxDestServEntry table (1.3.6.1.4.1.23.2.5.4.2.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxDestServTable[] ={4,2};
|
|
static UINT ids_nipxDestServEntry[] ={4,2,1};
|
|
static UINT ids_nipxDestServSysInstance[] ={4,2,1,1};
|
|
static UINT ids_nipxDestServNetNum[] ={4,2,1,2};
|
|
static UINT ids_nipxDestServNode[] ={4,2,1,3};
|
|
static UINT ids_nipxDestServSocket[] ={4,2,1,4};
|
|
static UINT ids_nipxDestServName[] ={4,2,1,5};
|
|
static UINT ids_nipxDestServType[] ={4,2,1,6};
|
|
static UINT ids_nipxDestServProtocol[] ={4,2,1,7};
|
|
static UINT ids_nipxDestServHopCount[] ={4,2,1,8};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// nipxStaticServEntry table (1.3.6.1.4.1.23.2.5.4.3.1) //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static UINT ids_nipxStaticServTable[] ={4,3};
|
|
static UINT ids_nipxStaticServEntry[] ={4,3,1};
|
|
static UINT ids_nipxStaticServSysInstance[] ={4,3,1,1};
|
|
static UINT ids_nipxStaticServCircIndex[] ={4,3,1,2};
|
|
static UINT ids_nipxStaticServType[] ={4,3,1,3};
|
|
static UINT ids_nipxStaticServName[] ={4,3,1,4};
|
|
static UINT ids_nipxStaticServExistState[] ={4,3,1,5};
|
|
static UINT ids_nipxStaticServNetNum[] ={4,3,1,6};
|
|
static UINT ids_nipxStaticServNode[] ={4,3,1,7};
|
|
static UINT ids_nipxStaticServSocket[] ={4,3,1,8};
|
|
static UINT ids_nipxStaticServHopCount[] ={4,3,1,9};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib entry list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibEntry mib_nv_nipx[] = {
|
|
MIB_GROUP(nipxSystem),
|
|
MIB_TABLE_ROOT(nipxBasicSysTable),
|
|
MIB_TABLE_ENTRY(nipxBasicSysEntry),
|
|
MIB_INTEGER(nipxBasicSysInstance),
|
|
MIB_INTEGER(nipxBasicSysExistState),
|
|
MIB_OCTETSTRING_L(nipxBasicSysNetNumber,4,4),
|
|
MIB_OCTETSTRING_L(nipxBasicSysNode,6,6),
|
|
MIB_OCTETSTRING_L(nipxBasicSysName,0,48),
|
|
MIB_COUNTER(nipxBasicSysInReceives),
|
|
MIB_COUNTER(nipxBasicSysInHdrErrors),
|
|
MIB_COUNTER(nipxBasicSysInUnknownSockets),
|
|
MIB_COUNTER(nipxBasicSysInDiscards),
|
|
MIB_COUNTER(nipxBasicSysInBadChecksums),
|
|
MIB_COUNTER(nipxBasicSysInDelivers),
|
|
MIB_COUNTER(nipxBasicSysNoRoutes),
|
|
MIB_COUNTER(nipxBasicSysOutRequests),
|
|
MIB_COUNTER(nipxBasicSysOutMalformedRequests),
|
|
MIB_COUNTER(nipxBasicSysOutDiscards),
|
|
MIB_COUNTER(nipxBasicSysOutPackets),
|
|
MIB_COUNTER(nipxBasicSysConfigSockets),
|
|
MIB_COUNTER(nipxBasicSysOpenSocketFails),
|
|
MIB_TABLE_ROOT(nipxAdvSysTable),
|
|
MIB_TABLE_ENTRY(nipxAdvSysEntry),
|
|
MIB_INTEGER(nipxAdvSysInstance),
|
|
MIB_INTEGER(nipxAdvSysMaxPathSplits),
|
|
MIB_INTEGER(nipxAdvSysMaxHops),
|
|
MIB_COUNTER(nipxAdvSysInTooManyHops),
|
|
MIB_COUNTER(nipxAdvSysInFiltered),
|
|
MIB_COUNTER(nipxAdvSysInCompressDiscards),
|
|
MIB_COUNTER(nipxAdvSysNETBIOSPackets),
|
|
MIB_COUNTER(nipxAdvSysForwPackets),
|
|
MIB_COUNTER(nipxAdvSysOutFiltered),
|
|
MIB_COUNTER(nipxAdvSysOutCompressDiscards),
|
|
MIB_COUNTER(nipxAdvSysCircCount),
|
|
MIB_COUNTER(nipxAdvSysDestCount),
|
|
MIB_COUNTER(nipxAdvSysServCount),
|
|
MIB_GROUP(nipxCircuit),
|
|
MIB_TABLE_ROOT(nipxCircTable),
|
|
MIB_TABLE_ENTRY(nipxCircEntry),
|
|
MIB_INTEGER(nipxCircSysInstance),
|
|
MIB_INTEGER(nipxCircIndex),
|
|
MIB_INTEGER(nipxCircExistState),
|
|
MIB_INTEGER_RW(nipxCircOperState),
|
|
MIB_INTEGER(nipxCircIfIndex),
|
|
MIB_OCTETSTRING_L(nipxCircName,0,48),
|
|
MIB_INTEGER(nipxCircType),
|
|
MIB_OCTETSTRING_L(nipxCircDialName,0,48),
|
|
MIB_INTEGER(nipxCircLocalMaxPacketSize),
|
|
MIB_INTEGER(nipxCircCompressState),
|
|
MIB_INTEGER(nipxCircCompressSlots),
|
|
MIB_INTEGER(nipxCircStaticStatus),
|
|
MIB_COUNTER(nipxCircCompressedSent),
|
|
MIB_COUNTER(nipxCircCompressedInitSent),
|
|
MIB_COUNTER(nipxCircCompressedRejectsSent),
|
|
MIB_COUNTER(nipxCircUncompressedSent),
|
|
MIB_COUNTER(nipxCircCompressedReceived),
|
|
MIB_COUNTER(nipxCircCompressedInitReceived),
|
|
MIB_COUNTER(nipxCircCompressedRejectsReceived),
|
|
MIB_COUNTER(nipxCircUncompressedReceived),
|
|
MIB_OCTETSTRING_L(nipxCircMediaType,2,2),
|
|
MIB_OCTETSTRING_L(nipxCircNetNumber,4,4),
|
|
MIB_COUNTER(nipxCircStateChanges),
|
|
MIB_COUNTER(nipxCircInitFails),
|
|
MIB_INTEGER(nipxCircDelay),
|
|
MIB_INTEGER(nipxCircThroughput),
|
|
MIB_OCTETSTRING_L(nipxCircNeighRouterName,0,48),
|
|
MIB_OCTETSTRING_L(nipxCircNeighInternalNetNum,4,4),
|
|
MIB_GROUP(nipxForwarding),
|
|
MIB_TABLE_ROOT(nipxDestTable),
|
|
MIB_TABLE_ENTRY(nipxDestEntry),
|
|
MIB_INTEGER(nipxDestSysInstance),
|
|
MIB_OCTETSTRING_L(nipxDestNetNum,4,4),
|
|
MIB_INTEGER(nipxDestProtocol),
|
|
MIB_INTEGER(nipxDestTicks),
|
|
MIB_INTEGER(nipxDestHopCount),
|
|
MIB_INTEGER(nipxDestNextHopCircIndex),
|
|
MIB_OCTETSTRING_L(nipxDestNextHopNICAddress,6,6),
|
|
MIB_OCTETSTRING_L(nipxDestNextHopNetNum,4,4),
|
|
MIB_TABLE_ROOT(nipxStaticRouteTable),
|
|
MIB_TABLE_ENTRY(nipxStaticRouteEntry),
|
|
MIB_INTEGER(nipxStaticRouteSysInstance),
|
|
MIB_INTEGER(nipxStaticRouteCircIndex),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticRouteNetNum,4,4),
|
|
MIB_INTEGER_RW(nipxStaticRouteExistState),
|
|
MIB_INTEGER_RW(nipxStaticRouteTicks),
|
|
MIB_INTEGER_RW(nipxStaticRouteHopCount),
|
|
MIB_GROUP(nipxServices),
|
|
MIB_TABLE_ROOT(nipxServTable),
|
|
MIB_TABLE_ENTRY(nipxServEntry),
|
|
MIB_INTEGER(nipxServSysInstance),
|
|
MIB_OCTETSTRING_L(nipxServType,2,2),
|
|
MIB_OCTETSTRING_L(nipxServName,1,48),
|
|
MIB_INTEGER(nipxServProtocol),
|
|
MIB_OCTETSTRING_L(nipxServNetNum,4,4),
|
|
MIB_OCTETSTRING_L(nipxServNode,6,6),
|
|
MIB_OCTETSTRING_L(nipxServSocket,2,2),
|
|
MIB_INTEGER(nipxServHopCount),
|
|
MIB_TABLE_ROOT(nipxDestServTable),
|
|
MIB_TABLE_ENTRY(nipxDestServEntry),
|
|
MIB_INTEGER(nipxDestServSysInstance),
|
|
MIB_OCTETSTRING_L(nipxDestServNetNum,4,4),
|
|
MIB_OCTETSTRING_L(nipxDestServNode,6,6),
|
|
MIB_OCTETSTRING_L(nipxDestServSocket,2,2),
|
|
MIB_OCTETSTRING_L(nipxDestServName,1,48),
|
|
MIB_OCTETSTRING_L(nipxDestServType,2,2),
|
|
MIB_INTEGER(nipxDestServProtocol),
|
|
MIB_INTEGER(nipxDestServHopCount),
|
|
MIB_TABLE_ROOT(nipxStaticServTable),
|
|
MIB_TABLE_ENTRY(nipxStaticServEntry),
|
|
MIB_INTEGER(nipxStaticServSysInstance),
|
|
MIB_INTEGER(nipxStaticServCircIndex),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticServType,2,2),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticServName,1,48),
|
|
MIB_INTEGER_RW(nipxStaticServExistState),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticServNetNum,4,4),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticServNode,6,6),
|
|
MIB_OCTETSTRING_RW_L(nipxStaticServSocket,2,2),
|
|
MIB_INTEGER_RW(nipxStaticServHopCount),
|
|
MIB_END()
|
|
};
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib table list //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
SnmpMibTable tbl_nv_nipx[] = {
|
|
MIB_TABLE(nv_nipx,nipxBasicSysEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxAdvSysEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxCircEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxDestEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxStaticRouteEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxServEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxDestServEntry,NULL),
|
|
MIB_TABLE(nv_nipx,nipxStaticServEntry,NULL)
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Mib view //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// [pmay] This array must have its elements ordered lexigraphically or else
|
|
// snmp service will get confused. This may be a bug on snmp's part.
|
|
SnmpMibView v_rtipx[3] = {
|
|
MIB_VIEW(nv_nipx),
|
|
MIB_VIEW(ms_mipx),
|
|
MIB_VIEW(ms_mripsap)
|
|
};
|
|
|
|
UINT viewIndex = 0;
|
|
SnmpTfxHandle tfxHandle;
|
|
|
|
#define NUM_VIEWS (sizeof(v_rtipx)/sizeof(SnmpMibView))
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// snmp extension entry points //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
BOOL
|
|
SnmpExtensionInit(
|
|
IN DWORD uptimeReference,
|
|
OUT HANDLE * lpPollForTrapEvent,
|
|
OUT AsnObjectIdentifier * lpFirstSupportedView
|
|
)
|
|
{
|
|
DbgTrace (DBG_LOAD, ("\nMIPX: SnmpExtensionInit: entered, nv= %d vi= %d\n", NUM_VIEWS, viewIndex));
|
|
|
|
// save uptime reference
|
|
g_uptimeReference = uptimeReference;
|
|
|
|
// obtain handle to subagent framework
|
|
tfxHandle = SnmpTfxOpen(3,v_rtipx);
|
|
|
|
// validate handle
|
|
if (tfxHandle == NULL) {
|
|
DbgTrace (DBG_LOAD, ("MIPX: TfxOpen, result: %ld", GetLastError()));
|
|
return FALSE;
|
|
}
|
|
|
|
// pass back first view identifier to master
|
|
*lpFirstSupportedView = v_rtipx[viewIndex++].viewOid;
|
|
|
|
// traps not supported yet
|
|
*lpPollForTrapEvent = NULL;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL
|
|
SnmpExtensionInitEx(
|
|
OUT AsnObjectIdentifier * lpNextSupportedView
|
|
)
|
|
{
|
|
// check if there are views to register
|
|
BOOL fMoreViews = (viewIndex < NUM_VIEWS);
|
|
|
|
DbgTrace (DBG_LOAD, ("MIPX: SnmpExtensionInitEx: entered, nv= %d, vi= %d, fm=%d\n", NUM_VIEWS, viewIndex, fMoreViews));
|
|
|
|
if (fMoreViews) {
|
|
|
|
// pass back next supported view to master
|
|
*lpNextSupportedView = v_rtipx[viewIndex++].viewOid;
|
|
}
|
|
|
|
// report status
|
|
return fMoreViews;
|
|
}
|
|
|
|
|
|
BOOL
|
|
SnmpExtensionQuery(
|
|
IN BYTE requestType,
|
|
IN OUT RFC1157VarBindList * variableBindings,
|
|
OUT AsnInteger * errorStatus,
|
|
OUT AsnInteger * errorIndex
|
|
)
|
|
{
|
|
// forward to framework
|
|
return SnmpTfxQuery(
|
|
tfxHandle,
|
|
requestType,
|
|
variableBindings,
|
|
errorStatus,
|
|
errorIndex
|
|
);
|
|
}
|
|
|
|
|
|
BOOL
|
|
SnmpExtensionTrap(
|
|
OUT AsnObjectIdentifier *enterprise,
|
|
OUT AsnInteger *genericTrap,
|
|
OUT AsnInteger *specificTrap,
|
|
OUT AsnTimeticks *timeStamp,
|
|
OUT RFC1157VarBindList *variableBindings
|
|
)
|
|
{
|
|
// no traps
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
/*++
|
|
*******************************************************************
|
|
D l l M a i n
|
|
Routine Description:
|
|
Dll entry point to be called from CRTstartup dll entry point (it
|
|
will be actually an entry point for this dll)
|
|
Arguments:
|
|
hinstDLL - handle of DLL module
|
|
fdwReason - reason for calling function
|
|
lpvReserved - reserved
|
|
Return Value:
|
|
TRUE - process initialization was performed OK
|
|
FALSE - intialization failed
|
|
|
|
*******************************************************************
|
|
--*/
|
|
BOOL WINAPI DllMain(
|
|
HINSTANCE hinstDLL,
|
|
DWORD fdwReason,
|
|
LPVOID lpvReserved
|
|
) {
|
|
switch (fdwReason) {
|
|
case DLL_PROCESS_ATTACH: // We are being attached to a new process
|
|
InitializeCriticalSection (&g_ConnectionLock);
|
|
ConnectToRouter ();
|
|
DbgTrace (DBG_LOAD, ("MIPX: Loaded %x", g_MibServerHandle));
|
|
return TRUE;
|
|
|
|
case DLL_PROCESS_DETACH: // The process is exiting
|
|
if (g_MibServerHandle!=0)
|
|
MprAdminMIBServerDisconnect (g_MibServerHandle);
|
|
DeleteCriticalSection (&g_ConnectionLock);
|
|
DbgTrace (DBG_LOAD, ("MIPX: Unloaded\n"));
|
|
default: // Not interested in all other cases
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Tests whether the remoteaccess service is running.
|
|
//
|
|
DWORD IsServiceRunning (
|
|
IN PBOOL pbIsRunning)
|
|
{
|
|
*pbIsRunning = MprAdminIsServiceRunning(NULL);
|
|
return NO_ERROR;
|
|
}
|
|
|
|
DWORD
|
|
ConnectToRouter (
|
|
VOID
|
|
) {
|
|
DWORD rc;
|
|
BOOL bServiceRunning;
|
|
|
|
// Check to see if the service is running
|
|
//
|
|
if ((rc = IsServiceRunning (&bServiceRunning)) != NO_ERROR)
|
|
return NO_ERROR;
|
|
|
|
// If not, return an error
|
|
if (!bServiceRunning) {
|
|
EnterCriticalSection (&g_ConnectionLock);
|
|
g_MibServerHandle = 0;
|
|
LeaveCriticalSection (&g_ConnectionLock);
|
|
return ERROR_SERVICE_DEPENDENCY_FAIL;
|
|
}
|
|
|
|
// If we're already connected, return
|
|
else if (g_MibServerHandle)
|
|
return NO_ERROR;
|
|
|
|
EnterCriticalSection (&g_ConnectionLock);
|
|
if (g_MibServerHandle==0) {
|
|
rc = MprAdminMIBServerConnect (NULL, &g_MibServerHandle);
|
|
if (rc!=NO_ERROR)
|
|
g_MibServerHandle = 0; // Indicates that we are not connected
|
|
DbgTrace (DBG_LOAD, ("MIPX: Connect to router, result: %ld", rc));
|
|
}
|
|
else
|
|
rc = NO_ERROR;
|
|
LeaveCriticalSection (&g_ConnectionLock);
|
|
|
|
return rc;
|
|
}
|
|
|
|
//
|
|
// Returns TRUE if the router connection is stable, false
|
|
// otherwise.
|
|
//
|
|
BOOL EnsureRouterConnection() {
|
|
return (ConnectToRouter() == NO_ERROR);
|
|
// If we haven't connected, attempt to do so
|
|
//if (g_MibServerHandle == NULL) {
|
|
// if (ConnectToRouter() == NO_ERROR)
|
|
// return TRUE;
|
|
// return FALSE;
|
|
// }
|
|
|
|
// If we have a valid handle, m
|
|
//
|
|
// ? TRUE
|
|
// : (ConnectToRouter ()==NO_ERROR)
|
|
// )
|
|
}
|