2015-06-26 34 views
1

我正在使用Embarcadero RAD Studio XE3及其TIdSNMP Indy SNMP組件來準備SNMP陷阱通知並將其發送到企業服務器。我根據陷阱類型設置了12個varbinds,Wireshark正在查看並正確解析目標主機上的陷阱。看來我的結局工作正常。Indy SNMP陷阱是否有版本選項?

該系統的管理員一方似乎無法識別這些陷阱,無法根據實施團隊對其進行解碼。他們指出陷阱本身的SNMP版本項目,它是'v2u'。由於此版本已被棄用,他們希望看到版本'v2c',並且他們聲稱所有其他陷阱都是此版本。

問題是,我有什麼選擇,至於要發送什麼版本的陷阱?我看到TIdSNMP :: Trap有一個版本成員;它是如此簡單設置爲3?

這是我使用的代碼:

void SendTrap(int atcsfield) 
{ 
    /* TIdSnmp *snmp = new TIdSNMP(0); */ 
    snmp->Trap->Clear(); 
    snmp->Trap->Version = 2; 
    snmp->Trap->Community=String(cfg.snmp.community); 
    snmp->Trap->TimeTicks = GetTickCount() - InitialTickCount; 
    snmp->Trap->Enterprise=String(cfg.snmp.oid); 
    snmp->Trap->GenTrap=6; 
    snmp->Trap->SpecTrap=1; 
    for(int i=0;i<MAX_VARBINDS;i++) 
    { 
     if(svb[i].Length()) 
     { 
      varb.sprintf("%s.1.%d",BaseOID.c_str(),i); 
      snmp->Trap->MIBAdd(varb,svb[i], ASN1_OCTSTR); 
     } 
    } 
    for(int i=0;i<MAX_VARBINDS;i++) 
    { 
     if(ivb[i]!=-1) 
     { 
      varb.sprintf("%s.1.%d",BaseOID.c_str(),i); 
      snmp->Trap->MIBAdd(varb, ivb[i], ASN1_INT); 
     } 
    } 
    snmp->Host = ManagerIpList->Strings[j]; 
    snmp->SendTrap(); 
} 

回答