允许使用LWIP从SNMP代理发送的八位字节字符串的最大长度
我正在尝试使用Xilinx SDK中的LWIP库在设备上实现SNMP代理 我成功地实现了代理,并让代理在我的设备上运行,以响应命令(snmpget、snmpset、snmpwalk) 但如果OID必须返回长度大于255的八位字节字符串,则代理的行为可疑。 当我试图传递长度大于255的八位字节字符串时,我没有收到该oid上的任何数据,代理在此之后断开连接,并且不会再重复任何其他命令允许使用LWIP从SNMP代理发送的八位字节字符串的最大长度,snmp,asn.1,mib,lwip,xilinx-edk,Snmp,Asn.1,Mib,Lwip,Xilinx Edk,我正在尝试使用Xilinx SDK中的LWIP库在设备上实现SNMP代理 我成功地实现了代理,并让代理在我的设备上运行,以响应命令(snmpget、snmpset、snmpwalk) 但如果OID必须返回长度大于255的八位字节字符串,则代理的行为可疑。 当我试图传递长度大于255的八位字节字符串时,我没有收到该oid上的任何数据,代理在此之后断开连接,并且不会再重复任何其他命令 长度的snmp八位字节字符串定义为八位字节字符串的对象通常限制为255字节,或者直接 SYNTAX
长度的snmp八位字节字符串定义为八位字节字符串的对象通常限制为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))
看一看,然后。您可以定义一个较大的对象,但请记住,SNMP并不是用来传输大数据集的 我找到了一个解决方案 在文件src\lwip-1.4.0\src\core\snmp\msg_in.c中,处理传入消息的程序正在将字符串长度从u16_t转换为u8_t。它表示该范围现在已弃用为(0-255)。所以问题来了 我将限制我处理长度大于255的八位字节字符串的u8_t更改为u16_t 现在LWIP库能够处理长度大于255的消息
谢谢 MIB中定义的对象是什么数据类型?定义为八进制字符串。我同意你的看法。。但是在我的MIB中没有指定限制。我的问题是,当我尝试发送大小为300的数据时,程序将其读取为44(300-256),并且仅读取或显示八位字节字符串中的44个字符。问题不在于MIB及其LWIP库代码。如果您已经使用LWIP库,请告诉我您是否能够传输大于255的八位字节字符串。请通过此链接了解有关此问题的更多信息。。。!!