0

我正在尝试从用户空间向内核空间发送一个结构列表/数组。类似于Link 正如那里推荐的那样,我正在考虑使用我找到的套接字link。消息在此行中设置为 hello

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

我试过了

NLMSG_DATA(nlh) = my_list

这给了我错误:左值需要作为赋值的左操作数。

如何更改它以使用 netlinks 发送数组/列表?如果不能以这种方式发送,我还能如何轻松地做到这一点?

更新

我的结构

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

我需要在内核内存中分配一个数组/列表,以便其他系统调用可以访问该列表。

4

2 回答 2

0

NLMSG_DATA()计算为指针右值,因此您需要使用复制函数,如memcpy(NLMSG_DATA(nlh), my_list, sizeof my_list).

确切的细节将取决于您的数据结构。大概您将要发送列表条目的数量,然后分别发送每个条目。

于 2010-12-14T03:30:29.160 回答
0

您不能使用 netlink 套接字发送基于指针的结构。看netlink的包结构:所有数据必须在一个块中。

于 2010-12-14T03:35:27.197 回答