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.3.1)를 추가했습니다. 1.1.4.3.0)을 사용하여 v1 트랩을 전송할 수 있습니다.WinSNMP v1traps
두 가지 (관련이있을 수있는) 것을 제외하고는 모든 것이 잘 작동합니다.
트랩의 agent-addr
필드는 항상 0.0.0.0입니다 (바인딩 목록에 snmpTrapAddress oid (1.3.6.1.6.3.18.1.3.0)를 추가하려고 시도했지만 작동하지 않습니다). 이 필드에 소스의 IP 주소가 포함되어 있습니다.
두 번째 문제는 내가 IP 주소와 SnmpStrToEntity
와 SnmpSetPort
와 HSNMP_ENTITY
에서 포트를 지정하고 나는 SnmpSendMsg
기능이 HSNMP_ENTITY
를 사용하지만, 트랩이 여전히 범위 동적 포트 어딘가에서 (다른 포트에서 전송됩니다 있다는 것입니다).
이 문제를 해결하는 방법에 대한 아이디어가 있거나 누가 이것이 가능한지 누가 알 수 있습니까?