Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

124 lines
3.1 KiB

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
Abstract:
Revision history:
--*/
#include <snmp.h>
#include <snmpexts.h>
#include "mibentry.h"
SnmpTfxHandle g_tfxHandle;
PSNMP_MGMTVARS ge_pMgmtVars;
CRITICAL_SECTION g_SnmpMibCriticalSection;
BOOL g_fSnmpMibCritSecInited = FALSE;
BOOL
SnmpExtensionInit(
IN DWORD uptimeReference,
OUT HANDLE * lpPollForTrapEvent,
OUT AsnObjectIdentifier * lpFirstSupportedView)
{
g_tfxHandle = SnmpTfxOpen(1,&view_snmp);
if (g_tfxHandle == NULL)
return FALSE;
*lpFirstSupportedView = view_snmp.viewOid;
*lpPollForTrapEvent = NULL;
return TRUE;
}
// the SNMP master agent calls this function immediately after SnmpExtensionInit
// in order to provide a pointer to the internal service management information.
// No mutex protection is needed so far, as there is no concurrency in writing the
// buffer pointed by this parameter.
BOOL
SnmpExtensionMonitor(
IN LPVOID pAgentMgmtVars)
{
ge_pMgmtVars = (PSNMP_MGMTVARS)pAgentMgmtVars;
return TRUE;
}
BOOL
SnmpExtensionQuery(
IN BYTE requestType,
IN OUT RFC1157VarBindList * variableBindings,
OUT AsnInteger * errorStatus,
OUT AsnInteger * errorIndex)
{
// forward to framework
return SnmpTfxQuery(
g_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;
}
BOOL WINAPI
DllMain(
HINSTANCE hInstDLL,
DWORD fdwReason,
LPVOID pReserved)
{
switch ( fdwReason )
{
case DLL_PROCESS_ATTACH :
{
DisableThreadLibraryCalls( hInstDLL );
__try
{
InitializeCriticalSection(&g_SnmpMibCriticalSection);
g_fSnmpMibCritSecInited = TRUE;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
SNMPDBG((
SNMP_LOG_ERROR,
"SNMP: SNMPMIB: DllMain: InitializeCriticalSection failed.\n"));
return FALSE;
}
SNMPDBG((
SNMP_LOG_TRACE,
"SNMP: SNMPMIB: DllMain: InitializeCriticalSection done.\n"));
break;
}
case DLL_PROCESS_DETACH :
{
if (g_fSnmpMibCritSecInited)
{
DeleteCriticalSection(&g_SnmpMibCriticalSection);
SNMPDBG((
SNMP_LOG_TRACE,
"SNMP: SNMPMIB: DllMain: DeleteCriticalSection done.\n"));
}
break;
}
default :
break;
}
return TRUE;
}