我在 C++ 中使用 WinSNMP 来发送 snmp 陷阱。为了向后兼容,我需要发送 v1 snmp 陷阱。WinSNMP 与 v2 陷阱一起使用,但能够在发送陷阱时将这些 v2 陷阱转换为 v1。我用SnmpSetTranslateMode(SNMPAPI_UNTRANSLATED_V1)
它来做到这一点。我还在绑定列表的开头添加了 sysUpTime oid (1.3.6.1.2.1.1.3.0)、snmpTrapOID (1.3.6.1.6.3.1.1.4.1.0) 和 enterpriseOID (1.3.6.1.6.3. 1.1.4.3.0) 在绑定列表的末尾,以便可以发送 v1 陷阱。
除了两个(可能相关的)事情之外,一切都很好。
陷阱中的 agent-addr
字段始终为 0.0.0.0(我尝试将 snmpTrapAddress oid(1.3.6.1.6.3.18.1.3.0) 添加到绑定列表,但没有奏效)。我希望此字段包含源的 IP 地址。
HSNMP_ENTITY
第二个问题是,尽管我在with SnmpStrToEntity
and中指定了一个 IP 地址和一个端口,SnmpSetPort
并且我HSNMP_ENTITY
在SnmpSendMsg
函数中使用了它,但陷阱仍然从另一个端口(在动态端口范围内的某个位置)发送。
这里有没有人知道如何解决这个问题,或者谁能告诉我这是否可能?