Перезаписать атрибут в сообщении struct nl_msg (netlink, libnl)

Для формирования netlink сообщения библиотека libnl предоставляет функции типа nla_put_.... Можно ли каким-либо образом перезаписать значение атрибута, добавленное одной из таких функций, без удаления всего сообщения и составления его заново?


Ответы (1 шт):

Автор решения: Pak Uula

Я понял в чём ваш вопрос. Нет, нельзя.

Атрибуты представлены в памяти последовательно, один за другим. Память каждого атрибута устроена так: { тип_атрибута, длина_атрибута, значение_атрибута }

nla_put всегда добавляет атрибут в хвост сообщения. Записав атрибут nla_put передвигает указатель конца сообщения на байт, следующий за добавленным атрибутом. Если атрибут не может уместиться в остаток памяти, аллоцированной для сообщения, то nla_put возвращает отрицательный код ошибки.

→ Ссылка