2008-11-04 8 views
2

Я использую WinSNMP в C++ для отправки ловушек 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.WinSNMP v1traps

Все работает отлично, за исключением двух (возможно связанных) вещей.

Поле agent-addr в ловушке всегда 0.0.0.0 (я попытался добавить snmpTrapAddress oid (1.3.6.1.6.3.18.1.3.0) в список привязок, но это не сработало). Я хотел бы, чтобы это поле содержало Ip-адрес источника.

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

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

ответ

1

Пара идей:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^