网络链接套接字

发布于 2024-10-07 14:43:11 字数 691 浏览 7 评论 0原文

我正在尝试将结构列表/数组从用户空间发送到内核空间。类似于链接 按照那里的建议,我正在考虑使用我发现的套接字 链接。 Message is set hello in this line

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

我尝试了

NLMSG_DATA(nlh) = my_list

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

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

更新

我的结构

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

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

I am trying send a list/array of struct to kernel space from userspace. Similar to Link
As recommended there, I am thinking of using sockets for which i found link. Message is set hello in this line

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

I tried

NLMSG_DATA(nlh) = my_list

That gave me error: lvalue required as left operand of assignment.

How can I change this to send an array/list using netlinks? If it can't be send this way, how else easily can I do this?

Update

My structure

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

I need to allocate an array/list of these in kernel memory so other system calls can access that list.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紫罗兰の梦幻 2024-10-14 14:43:11

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

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

NLMSG_DATA() evaluates to a pointer rvalue, so you need to use a copying function like memcpy(NLMSG_DATA(nlh), my_list, sizeof my_list).

The exact details will depend on your data structure. Presumably you will want to send the number of list entries, then each entry separately.

挖个坑埋了你 2024-10-14 14:43:11

您不能使用 netlink 套接字发送基于指针的结构。请参阅netlink的数据包结构:所有数据必须位于单个块中。

You cannot send pointer-based structures using netlink sockets. See the packet structure of netlink: all data must be in a single block.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文