Проверить, если длина в rtattr даже

В моем коде ядра мне нужно проанализировать ряд TLV-подобных атрибутов rtattr, Есть ли способ проверить правильность длины, то есть она должна быть четной. Есть ли для этого макрос?

1 ответ

В данных BER-TLV L-значение может быть динамически изменяемой длины. В случае, если в 1-м байте бит 8 равен 1, это означает, что в параметре L-длины используется несколько байтов. Оставшаяся часть 1-го байта, маскируемая 0x7F, покажет вам количество байтов, использованных для определения длины.

Для образца 0x820102 опишу: 1-й байтный бит 8, установленный в 1, и часть длины с динамической длиной, остальная часть 1-го байта, которая является 0x02 показать количество байтов, используемых для длины. 0x0102 Сама шестнадцатеричная длина равна 258 байтов.

Другие вопросы по тегам