问题标签 [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 投票
2 回答
27720 浏览

linux - 这个宏 _IOR(MY_MACIG, 0, int) 是什么意思?

我正在通过 ioctl 示例程序来检查它如何与内核空间通信。在程序中 WRITE_IOCTL 用作命令

我无法理解是什么_IOW(MY_MACIG, 1, int)。这是我下载程序的链接。请帮我。 http://people.ee.ethz.ch/~arkeller/linux/multi/kernel_user_space_howto-4.html

0 投票
2 回答
5462 浏览

c - 侦听 PF_NETLINK 套接字时获取所有链接和地址信息

我编写了一段代码,每当相关(对我)网络信息发生变化时(主要是监听 RTM_NEWADDR、RTM_DELADDR、RTM_NEWLINK 和 RTM_DELLINK)都会通知我。每次拔掉插头、更改 ip 或任何我收到通知时,它都工作得很好。唯一的问题是,我第一次启动我的代码时,我希望它能给我整个当前状态(RTM_GETLINK 和 RTM_GETADDR)。

我可以请求 RTM_GETLINK 或 RTM_GETADDR:

但如果我同时要求两者:

我只得到ip信息。

我应该使用两个不同的套接字,一个用于请求,另一个用于侦听,还是可以在同一个套接字中完成所有这些?

我尝试为每个请求执行发送,并使用 seq(为第二个请求增加它),我可以看到第二个回复只有 40 个字节长:(

再分析一下,似乎我得到了 NLMSG_ERROR 消息类型。错误代码 -16 表示“设备或资源忙”。

如果我在每次发送后读取套接字,我就不会遇到问题。但我宁愿能够完成我的所有请求,然后才能收集所有回复......

0 投票
2 回答
4100 浏览

android - 如何为内核使用 netlink 套接字 - 用户空间通信 Android

我正在尝试为 android 编写内核模块以与用户空间服务通信,以便我的应用程序可以显示有关内核的一些信息。到目前为止,我已经尝试了几个在网上找到的示例,但没有一个有效。这个想法是让内核发送更新,然后服务将接收它们。ioctl 不是解决方案,因为通信需要事件驱动,并从内核启动。如果有人知道如何做到这一点,那么 jni 和内核模块的 C 代码将会很棒。

0 投票
2 回答
10168 浏览

c - 通过 C 中的 Netlink 从内核到用户空间的多播

我试图编写一个使用 Netlink 在内核和用户空间之间进行通信的简单程序。基本上这是我想要实现的目标:

  1. 用户空间程序开始绑定到用户定义的多播组。
  2. 插入内核模块
  3. 内核模块向该多播组发送消息
  4. 用户空间程序接收到消息

这是我的代码:

======用户空间程序======

======内核模块======

由于内核模块在初始化过程中只会发送一次消息,因此我先运行监听程序然后插入模块,虽然我总是得到这个错误:

当追踪到 err id 时,它反映在 netlink/af_netlink.c 中的这段代码中:

我认为这不是 delivery_failure 但由于某些原因仍未交付。

我指的是这个例子,作者的程序一直在监听路由变化。虽然我想使用用户定义的多播组。

有任何想法吗?提前致谢!

0 投票
1 回答
832 浏览

linux-kernel - 内核中的 netlink 套接字事件监听器

我正在使用 netlink 套接字在用户空间应用程序和内核模块之间进行通信。但是,当用户应用程序关闭时,我想停止将数据从内核路由到用户应用程序。当使用 netlink 套接字的进程终止时,有没有办法在内核中获取事件?

0 投票
2 回答
485 浏览

c++ - C++ NetLink 套接字错误

我最近再次开始使用 C++ 应用程序。我使用 NetLink for Sockets 和 Visual Studio 进行开发。

我做了一个小代码,但我遇到了一些错误。我已经包含了来自 NetLink 的文件,并添加了 ws2_32.lib(在链接器/通用和编译指示注释中),但我仍然遇到这些错误:

我正在使用的代码(只是想尝试接受):

0 投票
1 回答
919 浏览

sockets - netlink 套接字中 msg 的 len 不正确

我尝试使用 netlink 套接字将二进制数据从内核空间发送到用户空间。我按照如何使用 netlink 套接字与内核模块进行通信中的示例进行操作?

但是在用户空间的接收端,我收到的数据长度大于从内核空间发送的数据长度。不过数据是一样的。数据会附加一些垃圾值。

netlink 套接字中是否不能保证接收到的数据长度与从内核空间发送的数据长度相同?

0 投票
1 回答
364 浏览

linux - netlink 分散发送导致来自内核的错误响应 (NLMSG_ERROR)

我正在编写一个使用 Netlink 协议收集任务统计信息的程序。我没有走得太远,因为内核对我认为有效的数据包做出了错误响应。我使用 strace 将我的程序的行为与正常工作的 iotop 的行为进行了比较。

来自 iotop 的 strace 的相关位:

我的程序的 strace 输出的相应部分:

如果我重新格式化这些,它们看起来有点像这样(作为十六进制转储):(请注意,这些来自不同的运行,因此 pid 值会不同,但重新格式化的 strace 输出的其余部分是相同的。)

在我看来,有两个不同之处。

  1. iotop 似乎对 pid 使用负值。我尝试进行更改,以便我的程序也为 pid 发送一个负数。这没什么区别。

  2. 我使用分散/收集方法:它在内存上的浪费更少(这可能在我想到的目标 PC 中受到限制)。但是,我怀疑有一些(如果不是全部)Netlink 组件仅支持在每个请求时发送和接收单个缓冲区。

有谁知道 Netlink 是否允许分散/聚集,或者它是否需要一次在一个大缓冲区中完成所有通信?

0 投票
2 回答
1723 浏览

c - Netlink 套接字不会将路由添加到 IPv6 的路由表

我希望能够添加一个新的 IPv6 地址,但到目前为止还没有。程序运行成功,但路由表中没有任何反映。

这给了我在 RTA_DST 时的属性值 48 和在 RTA_GATEWAY 时的属性值 68。我在哪里犯错了。我似乎没有找到错误。任何帮助表示赞赏!

0 投票
2 回答
242 浏览

android - android vold机制在main函数中

通过查看vold的代码,

我发现 main.cpp (system/vold/main.cpp) 中有几行代码我没有得到这些代码的真正功能。

那些是..

1.


2.

为什么vold在这里冷启动?


谁能解释一下为什么vold会这样做?

谢谢