snmptrap无符号类型未按预期工作

snmptrap无符号类型未按预期工作,snmp,net-snmp,Snmp,Net Snmp,我正在使用snmpV3适配器,并使用下面的命令将V2陷阱传递给它。看起来u型(即无符号)的范围高达(2^31)-1(即2147483647)。我希望它是(2^32)-1(即4294967295) snmptrap-c public-v 2c clm-pun-009642''1.3.6.1.4.1.20006.1.0.5 1.3.6.1.4.1.12345.1 u 2147483647 上述命令生成以下日志: trace:..\..\snmplib\snmp\u api.c,5293: dumph

我正在使用snmpV3适配器,并使用下面的命令将V2陷阱传递给它。看起来u型(即无符号)的范围高达(2^31)-1(即2147483647)。我希望它是(2^32)-1(即4294967295)

snmptrap-c public-v 2c clm-pun-009642''1.3.6.1.4.1.20006.1.0.5 1.3.6.1.4.1.12345.1 u 2147483647

上述命令生成以下日志:

trace:..\..\snmplib\snmp\u api.c,5293:
dumph_recv:值
dumpx_recv:42 04 7F FF
dumpv_recv:UInteger:2147483647(0x7fffff)

其中:

snmptrap-c public-v 2c clm-pun-009642''1.3.6.1.4.1.20006.1.0.5 1.3.6.1.4.1.12345.1 u 2147483648

上述命令生成以下日志:

在此输入代码跟踪:..\..\snmplib\snmp_api.c,5293:
dumph_recv:值
dumpx_recv:42 05 00 80 00 00
dumpv_recv:UInteger:-2147483648(0x8000000)

参考:

我使用的是NetSNMP v5.5


这是正确的行为还是我遗漏了什么?

多年来,我发现了网络snmp的各种问题。这显然又是一个。标准相当明确。RFC 2578对Unsigned32的定义如下:

--32位无符号量 --无法与量规32无符号32区分:= [申请2] 隐式整数(0..4294967295)

如上所述,这与SNMPv1(RFC 1155)中的量规32相同:

仪表::= [申请2] 隐式整数(0..4294967295)

编码正确;SNMP中的所有整数都被编码为带符号的,这意味着2^31-1以上的值必须以5字节编码。因此,编码的正确翻译是:

42               Type: Gauge32 or Unsigned32
05               Length: 5 bytes
00 80 00 00 00   Value: 2^31

net snmp对值的解码不正确。

net snmp v5.5非常旧。尝试最新版本,看看是否已修复。