【问题标题】:Maximum Length of Octet String allowed to send from SNMP Agent using LWIP允许使用 LWIP 从 SNMP 代理发送的八位字节字符串的最大长度
【发布时间】:2014-12-10 08:49:30
【问题描述】:

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

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

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

长度

【问题讨论】:

  • MIB 中定义的对象是什么数据类型?
  • 它定义为八进制字符串。

标签: snmp asn.1 mib lwip xilinx-edk


【解决方案1】:

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

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

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

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

谢谢..!!!

【讨论】:

【解决方案2】:

定义为八位字节字符串的对象通常限制为 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 并不意味着传输大量数据。

【讨论】:

  • 我同意你的观点。但我的 MIB 中没有指定限制。我的问题是,当我尝试发送大小为 300 的数据时,程序将其读取为 44(300-256),并且仅读取或显示八位字节字符串中的 44 个字符。问题不在于 MIB 和 LWIP 库代码。如果您已经使用过 LWIP 库,请告诉我您是否能够传输大于 255 的 OCTET 字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多