www.pudn.com > snmp.rar > servtrap.c


/*++ 
 
Copyright (c) 1992-1996  Microsoft Corporation 
 
Module Name: 
 
    servtrap.c 
 
Abstract: 
 
    Provides trap functionality for Proxy Agent. 
 
Environment: 
 
    User Mode - Win32 
 
Revision History: 
 
    10-May-1996 DonRyan 
        Removed banner from Technology Dynamics, Inc. 
 
--*/ 
  
//--------------------------- STANDARD DEPENDENCIES -- #include ---- 
 
#include  
 
//--------------------------- MODULE DEPENDENCIES -- #include"xxxxx.h" ------ 
 
#include  
#include  
 
#include "regconf.h" 
 
 
//--------------------------- SELF-DEPENDENCY -- ONE #include"module.h" ----- 
 
//--------------------------- PUBLIC VARIABLES --(same as in module.h file)-- 
 
HANDLE g_hTerminationEvent; 
 
 
//--------------------------- PRIVATE CONSTANTS ----------------------------- 
 
#define TTWFMOTimeout ((DWORD)300000) 
 
 
//--------------------------- PRIVATE STRUCTS ------------------------------- 
 
//--------------------------- PRIVATE VARIABLES ----------------------------- 
 
//--------------------------- PRIVATE PROTOTYPES ---------------------------- 
 
//--------------------------- PRIVATE PROCEDURES ---------------------------- 
 
//--------------------------- PUBLIC PROCEDURES ----------------------------- 
 
VOID trapThread(VOID *threadParam) 
    { 
    INT    eventListSize      = 0; 
    HANDLE *eventList         = NULL; 
    INT    *eventListRegIndex = NULL; 
    DWORD  status; 
    INT    i; 
 
    AsnObjectIdentifier enterprise; 
    AsnInteger          genericTrap; 
    AsnInteger          specificTrap; 
    AsnInteger          timeStamp; 
    RFC1157VarBindList  variableBindings; 
 
    UNREFERENCED_PARAMETER(threadParam); 
 
    // add this thread's terminate event to the list... 
 
    if ((eventList = (HANDLE *)SnmpUtilMemReAlloc(eventList, sizeof(HANDLE))) == NULL) 
        { 
        SNMPDBG((SNMP_LOG_ERROR, "SNMP: TRAP: out of memory.\n")); 
 
        goto longBreak; 
        } 
 
    if ((eventListRegIndex = (INT *)SnmpUtilMemReAlloc(eventListRegIndex, sizeof(INT))) 
        == NULL) 
        { 
        SNMPDBG((SNMP_LOG_ERROR, "SNMP: TRAP: out of memory.\n")); 
 
        goto longBreak; 
        } 
 
    eventList[eventListSize]           = g_hTerminationEvent; 
    eventListRegIndex[eventListSize++] = -1; // not really used 
 
 
    // add trap events for extension agents that have provided an event... 
 
    for (i=0; i