我在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地址。
第二个问题是,尽管我使用SnmpStrToEntity和SnmpSetPort在HSNMP_ENTITY中指定了IP地址和端口,并且在SnmpSendMsg函数中使用了此HSNMP_ENTITY,但陷阱仍然从另一个端口(在动态端口范围内的某个地方)发送。
在座有谁知道如何解决这个问题,或者谁能告诉我这是否可能?
发布于 2008-11-08 04:36:40
以下是几个想法:
agent-addr可以由较低层设置为网络适配器的IP地址。是否有将特定适配器与SNMP关联的选项?https://stackoverflow.com/questions/261294
复制相似问题