Максимальная длина строки октетов, разрешенная для отправки агентом SNMP с использованием LWIP

Я пытаюсь реализовать агент SNMP на устройстве с помощью библиотеки LWIP в Xilinx SDK.

Я успешно внедрил агент и заставил агент работать на моем устройстве, чтобы отвечать на команды (snmpget, snmpset, snmpwalk).

Но если OID должен вернуть строку октетов длиной > 255, агент ведет себя подозрительно. когда я пытался передать строку октетов длиной> 255, я не получаю данных об этом oid, и после этого агент отключается и не будет отвечать ни на какие дальнейшие команды.

Строки октетов snmp длиной ‹255 правильно принимаются без проблем (без проблем).. Интересно, имеет ли агент SNMP LWIP ограничение на размер строки октетов..??


person mano49j    schedule 10.12.2014    source источник
comment
Какой тип данных имеет объект, определенный в MIB?   -  person Tanner    schedule 11.12.2014
comment
Он определяется как OCTET STRING.   -  person mano49j    schedule 15.12.2014


Ответы (2)


Я нашел решение...!!!

в файле src\lwip-1.4.0\src\core\snmp\msg_in.c , который обрабатывает входящие сообщения, преобразует длину строки из u16_t в u8_t. Это указывает на то, что диапазон теперь устарел до (0-255). Итак, проблема.

Я изменил u8_t, которые не позволяют мне обрабатывать строки октетов длиной > 255, на u16_t.

Теперь библиотека LWIP может обрабатывать сообщения длиной > 255..

Спасибо..!!!

person mano49j    schedule 22.12.2014
comment
Перейдите по этой ссылке, чтобы узнать больше об этой проблеме...!! savannah.nongnu.org/bugs/?43790 - person mano49j; 24.12.2014

Объекты, определенные как строки октетов, обычно ограничены 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 2578 и 2579. Вы можете определить объект большего размера, но имейте в виду, что SNMP не предназначен для передачи больших наборов данных.

person Tanner    schedule 11.12.2014
comment
Я согласен с вами.. Но в моем MIB не было указано ограничение. Моя проблема в том, что когда я пытаюсь отправить данные размером, предположим, 300, программа читает их как 44 (300-256), и только 44 символа в строке октетов читаются или отображаются. Проблема не в MIB, а в коде библиотеки LWIP. Если вы уже работали с библиотекой LWIP и дайте мне знать, можете ли вы передать строку OCTET ›255. - person mano49j; 15.12.2014