问题标签 [netlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
11769 浏览

c - 如何在内核和用户空间之间创建“netlink”?

我想使用 netlink 在应用程序和内核空间之间进行通信。我的Linux内核版本是2.6.28,下面是我的错误代码:

简短的错误消息是:

在文件<linux/netlink.h>中,函数netlink_kernel_create()定义为

我不明白第一个参数使用什么,net. 有人可以解释我应该在这里使用什么吗?

0 投票
4 回答
74147 浏览

c - 如何使用 netlink 套接字与内核模块通信?

我正在尝试编写一个使用 netlink 与用户进程通信的 linux 内核模块。我正在使用 netlink,因为我想与之通信的用户程序仅使用套接字进行通信,我无法将其更改为添加ioctl()或任何东西。

问题是我不知道该怎么做。我已经用谷歌搜索了,但我发现的所有示例都是像这个一样的旧示例,并且对于当前的内核版本不再有效。我也看过这个 SO question,但这里的示例使用libnl进行套接字操作,但我想坚持使用标准套接字函数(由 定义sys/socket.h)。所以有人可以在这里指导我一些教程或指南或一些可以帮助我理解netlink接口和用法的东西。我非常感谢一个工作示例,没什么花哨的,只是一个非常基本的示例,说明如何建立从用户程序中的套接字到内核中的套接字的连接,然后将数据从用户进程发送到内核并从内核接收回来。

另外请不要告诉我看内核代码。我已经在做,但这需要很多时间,而且我已经没有多少时间了。

更新: 经过大量试验和错误后,我有以下代码将消息从用户程序发送到内核,但从内核到用户程序的消息(即使用netlink_unicast())不起作用。它不仅不工作,呼叫挂起系统,然后我必须重新启动机器。有人可以看看并告诉我我做错了什么。该netlink_unicast()调用在以下代码中进行了注释。内核到用户程序消息应该取消注释。

用户程序

内核代码

0 投票
1 回答
106 浏览

linux - 查询和修改接口高级信息

我需要执行以下任务:

  • 列出接口
  • 设置/删除/列出 IPv6 地址
  • 添加/删除路由条目

AFAIK 我不能使用ioctl我需要使用 netlink。问题是我找不到很好的描述如何使用它(大多数 netlink 教程都集中在如何创建连接上)。strace也没有证明有用。

0 投票
2 回答
1163 浏览

linux - NetLink 消息内存问题

我正在尝试将消息从用户空间发送到内核。我能够通过 netlink 套接字成功发送它。但是我想知道我是否应该释放我编写的内核函数中的消息,或者 netlink 套接字 API 正在释放内存?

同样在 /proc/net/netlink 中,我可以看到 Drop 计数不断增加。这个计数意味着什么?

0 投票
2 回答
2559 浏览

c - Netlink 套接字

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

我试过了

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

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

更新

我的结构

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

0 投票
1 回答
1892 浏览

c - 使用 netlink 的内核空间用户空间通信

我的目标是始终在内核内存中拥有一个数组或列表,以便始终可以从内核空间访问它。为此,我使用这里推荐的 netlink 套接字。我遵循这个例子,它展示了如何发送一个字符串。我不确定如何在套接字中发送结构数组或结构列表。

是否可以使用 netlink 发送列表或数组?

0 投票
2 回答
4464 浏览

macos - 有人知道 MAC OS X 的 NETLINK Sockets API 等效吗?

有人知道 MAC OS X 的 NETLINK Sockets API 等效吗?我正在尝试将 Linux 应用程序移植到 MAC OS X,但在 MACOS 中找不到类似的东西。

我需要在我的应用程序中提供对网络适配器的异步访问。

每隔一定的秒数轮询网络适配器关于配置更改等对我来说不是方便的解决方案。NETLINK Socket API 让我只有在发生有趣的事情时才会收到通知。

我知道 NETLINK 是 Linux 特定的东西,用于在 Linux 内核和用户空间之间进行通信,但在 MACOS 下可能存在类似 NETLINK 的东西。

我看到了与内核通信的唯一工具——sysctl()

有人有任何信息吗?

0 投票
2 回答
6409 浏览

python - 如何在 PYTHON 中使用 NETLINK 套接字从内核空间获取数据?

如何在 PYTHON 中使用 NETLINK 套接字从内核空间获取数据?

0 投票
3 回答
14095 浏览

linux - RTNETLINK 回答:没有这样的文件或目录

当我运行这个 cmd 时:

我明白了

我已经配置了内核netfilters,以及menuconfig.

我不明白为什么会发生此错误。我正在使用iproute2-2.6.23和 Fedora 8。

这在我的笔记本电脑上运行良好,但在我的台式电脑上却不行?

0 投票
2 回答
3063 浏览

linux - netlink 套接字问题:内核冻结

我正在尝试使用 netlink 套接字在用户空间和内核空间之间交换消息...我从用户空间向内核空间发送消息并且一切正常但是当我尝试从内核空间回复时,系统冻结. 特别是我使用工作队列安排了一个函数,该函数创建消息并使用 netlink_unicast 函数发送到用户空间......这里有一些内核代码:

如果我尝试评论对 netlink_unicast 内核的调用不会冻结。从用户空间我可以正确发送消息。我记得过去相同的代码运行良好,现在我对这个奇怪的错误感到非常惊讶。

任何想法?

谢谢你们!


我试图在 netlink_unicast 调用之后删除 kfree_skb 调用并且一切正常......那么,为什么系统会因该调用而挂起?我应该在哪里释放分配的 sk_buff?