Вы используете snmp_add_var
неправильно. В некотором смысле это эквивалент snmpset
, поэтому вы должны передавать символ 'i'
вместо константы ASN_INTEGER
, которая предназначена для чего-то другого.
ASN_INTEGER
определено как ((u_char)0x02)
, так что синтаксический анализ аргумента вызывает трудности с декодированием.
«Что-то еще» - это функция, которую вы вероятно хотите использоватьвместо этого snmp_pdu_add_variable
:
pdu = snmp_pdu_create(SNMP_MSG_SET);
uint32_t val = 1;
if (snmp_pdu_add_variable(pdu, oid, oid_len, ASN_INTEGER, &val, sizeof(val)) == nullptr)
snmp_perror("failed");
Обратите внимание на то, как оно «напечатано», вместо того, чтобы брать строку для лексического преобразования.