Netlink сокеты - PullRequest
       11

Netlink сокеты

0 голосов
/ 14 декабря 2010

Я пытаюсь отправить список / массив структуры в пространство ядра из пространства пользователя. Аналогично Ссылка Как рекомендовано там, я думаю об использовании сокетов, для которых я нашел ссылку . В этой строке сообщение приветствуется

strcpy(NLMSG_DATA(nlh), "Hello");

Я пытался

NLMSG_DATA(nlh) = my_list

Это дало мне ошибку: lvalue требуется в качестве левого операнда присваивания.

Как я могу изменить это для отправки массива / списка с помощью сетевых ссылок? Если это не может быть отправлено таким образом, как еще я могу это сделать?

Обновление

Моя структура

typedef struct {
 int val1;
 int val2;
} mystruct;

Мне нужно выделить массив / список из них в памяти ядра, чтобы другие системные вызовы могли получить доступ к этому списку.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

Вы не можете отправлять структуры, основанные на указателях, используя сокеты netlink. См. структура пакета netlink: все данные должны быть в одном блоке.

0 голосов
/ 14 декабря 2010

NLMSG_DATA() соответствует значению указателя, поэтому вам нужно использовать функцию копирования, например memcpy(NLMSG_DATA(nlh), my_list, sizeof my_list).

Точные данные будут зависеть от вашей структуры данных.Предположительно вы захотите отправить количество записей в списке, а затем каждую запись отдельно.

...