WinSNMP v1traps - PullRequest
       47

WinSNMP v1traps

2 голосов
/ 04 ноября 2008

Я использую WinSNMP в c ++ для отправки ловушек snmp. Для обратной совместимости мне необходимо отправить ловушки v1 snmp. WinSNMP работает с ловушками v2, но способен преобразовывать эти ловушки v2 в v1 при отправке ловушки. Я использую SnmpSetTranslateMode(SNMPAPI_UNTRANSLATED_V1), чтобы сделать это. Я также добавил oid sysUpTime (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 (я пытался добавить oid snmpTrapAddress (1.3.6.1.6.3.18.1.3.0) в список привязок, но это не сработало). Я бы хотел, чтобы в этом поле содержался IP-адрес источника.

Вторая проблема заключается в том, что, хотя я указываю IP-адрес и порт в HSNMP_ENTITY с SnmpStrToEntity и SnmpSetPort, и я использую этот HSNMP_ENTITY в функции SnmpSendMsg, ловушка все еще получает отправку другой порт (где-то в диапазоне динамических портов).

Есть здесь кто-нибудь, кто имеет представление о том, как это исправить, или кто может сказать мне, возможно ли это вообще?

1 Ответ

1 голос
/ 08 ноября 2008

Пара идей:

  • Нижний уровень agent-addr может быть установлен на IP-адрес сетевого адаптера. Есть ли возможность связать один конкретный адаптер с SNMP?

  • Зачем вам нужно установить порт источника для ловушки? SNMP требует только, чтобы прерывание было отправлено на порт UDP 162; источник не имеет значения, если к вашему конкретному приложению не предъявляются дополнительные требования. (См. RFC 1067 для деталей SNMP.)

...