Когда snmp_synch_response() в NET SNMP возвращает STAT_TIMEOUT?

Я пытаюсь сделать запрос на получение SNMP v3 из простой программы c, используя net-snmp5.5. Код выглядит следующим образом:

struct snmp_session session;
/* I've set all the properties, to make an SNMPv3 get */

sessionHandle = snmp_sess_open(&session);

/* setup pdu with a get request for some oid */
status = snmp_synch_response(pdu, &response);

Я запускаю это на той же машине, что и snmpd (т.е. параметр узла для моего сеанса = localhost). Я всегда получаю статус == STAT_TIMEOUT.

Однако, если сделать snmpwalk или snmpget для тех же учетных данных/пользователя, я получаю возвращаемое значение?

Что может привести к тому, что snmp_synch_response всегда будет возвращать STAT_TIMEOUT? Любая помощь приветствуется!


person shiva    schedule 16.07.2011    source источник
comment
отвечая на мой собственный вопрос, на всякий случай, если кто-то столкнется с той же проблемой (потребовался месяц заливки клиентского кода netsnmp :))   -  person shiva    schedule 25.08.2011


Ответы (1)


Просто отвечаю на это, так как понять это было почти невозможно.

Проблема, с которой я столкнулся, заключалась в том, что криптобиблиотека, которую я использовал для связи SNMPV3, имела некоторые проблемы с реализацией DES. Однако похоже, что net-snmp будет возвращать эту ошибку почти при любой ошибке в протоколе связи.

Т.е. неверный заголовок/невозможно расшифровать/невозможно расшифровать ASN и т. д. будет возвращать STAT_TIMEOUT (конечно, включая фактическое время ожидания запроса)

person shiva    schedule 24.08.2011