net-snmp C API的故障设置值

问题描述 投票:0回答:1

这里是相关代码:

pdu = snmp_pdu_create(SNMP_MSG_SET);

if (snmp_add_var(pdu, oid, oid_len, ASN_INTEGER, "1" ) != 0 )
    snmp_perror("failed");

我收到错误“错误值类型:奇怪的Unicode字符

当我在终端中运行此snmpset命令时:

snmpset -v 3 -u <user> <ip> <oid> integer 1

它工作正常,为什么它不能在我的C程序中工作?

c network-programming snmp net-snmp
1个回答
0
投票

您使用的是snmp_add_var错误。从某种意义上讲,它等效于snmpset,因此您应该传递字符'i'而不是为其他内容设计的常量ASN_INTEGER

[ASN_INTEGER被定义为((u_char)0x02),因此解析that参数会导致解码困难。


“其他”是您可能想要使用的功能,它是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");

请注意如何“键入”,而不是使用字符串进行词法转换。

© www.soinside.com 2019 - 2024. All rights reserved.