3

我正在尝试使用 Xilinx SDK 中的 LWIP 库在设备上实现 SNMP 代理。

我成功实现了代理并让代理在我的设备上运行以响应命令(snmpget、snmpset、snmpwalk)。

但是,如果 OID 必须返回长度大于 255 的八位字节字符串,则代理的行为很可疑。当我尝试传递长度 > 255 的八位字节字符串时,我没有收到关于该 oid 的数据,并且代理在此之后断开连接,并且不会响应任何进一步的命令。

长度<255的snmp八位字节字符串可以正确接收,没有问题(没有问题)。我想知道LWIP SNMP代理对八位字节字符串的大小有限制吗??

4

2 回答 2

3

我找到了解决办法……!!!

在文件 src\lwip-1.4.0\src\core\snmp\msg_in.c 中,处理传入消息的是将字符串的长度从 u16_t 转换为 u8_t。它表示该范围现已弃用为 (0-255)。所以问题。

我将限制我处理长度> 255 的八位字节字符串的 u8_t 更改为 u16_t。

现在 LWIP 库能够处理长度 > 255 的消息。

谢谢..!!!

于 2014-12-22T06:05:24.560 回答
1

定义为八位字节字符串的对象通常限制为 255 个字节,或者直接,

    SYNTAX               OCTET STRING (SIZE (0..255))

或间接使用 DisplayString 之类的东西

    SYNTAX               DisplayString

这又限制为 255 个字节。

DisplayString ::= TEXTUAL-CONVENTION 
    DISPLAY-HINT         "255a" 
    STATUS                current 
    DESCRIPTION          "Represents textual information taken from the NVT ASCII..."
    SYNTAX                OCTET STRING (SIZE (0..255))

看看RFC 25782579。您可以定义一个更大的对象,但请记住,SNMP 并不意味着传输大量数据。

于 2014-12-11T05:46:32.810 回答