3

ザイリンクス 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 に答える