Перезаписать атрибут в сообщении struct nl_msg (netlink, libnl)
Для формирования netlink сообщения библиотека libnl предоставляет функции типа nla_put_.... Можно ли каким-либо образом перезаписать значение атрибута, добавленное одной из таких функций, без удаления всего сообщения и составления его заново?
Ответы (1 шт):
Я понял в чём ваш вопрос. Нет, нельзя.
Атрибуты представлены в памяти последовательно, один за другим. Память каждого атрибута устроена так: { тип_атрибута, длина_атрибута, значение_атрибута }
nla_put всегда добавляет атрибут в хвост сообщения. Записав атрибут nla_put передвигает указатель конца сообщения на байт, следующий за добавленным атрибутом. Если атрибут не может уместиться в остаток памяти, аллоцированной для сообщения, то nla_put возвращает отрицательный код ошибки.