2015-06-26 33 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(); 
} 

回答