问题标签 [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.
c++ - 从 C++ 使用 netlink 的最佳方法是什么?
在 C++ 中从用户空间发送和接收 netlink 消息的最佳方式是什么?我不想使用 C。我想连接 inet_diag 模块。
linux - 在 Linux 内核中使用 netlink 套接字在用户空间应用程序和字符设备之间进行通信时出错
我编写了一个内核驱动程序“hello_kernel”,它在自定义节点 /dev/hello 上注册为字符设备。在 hello_kernel.c 文件中,在调用 register_chrdev() 之后,我尝试使用 netlink_kernel_create()(在 netlink.h 中定义)创建一个 netlink 套接字,并使用正确定义的函数通过该套接字接收用户空间消息。
代码编译完美,我使用 mknod 使设备点头 /dev/hello;但是当我尝试安装此模块( hello_kernel.ko )时,出现错误:
insmod:插入“hello_kernel.ko”时出错:-1 没有子进程
dmesg 命令显示在创建套接字时出错,即使用 netlink_kernel_create()。
最初,我试图使用这个模块来连接一个用户空间应用程序,只使用一个运行良好的 netlink 套接字。我添加字符设备功能的动机是使另一个用户应用程序能够像常规设备文件一样打开它并发出 ioctl 调用。
我能做些什么来完成这项工作?或者内核不支持合并这两个功能?
代码如下:
尝试插入模块:
dmesg 的输出:
android - NetlinkListener 和 NetlinkEvent 错误消息
我的应用程序在运行时不会中断。但是,总是会出现以下错误消息
NetlinkListener:忽略非内核 netlink 多播消息 NetlinkEvent:NetlinkEvent::FindParam():未找到参数“UDEV_LOG”
我正在开发的应用程序使用套接字从特定 IP 源(具有特定启用的端口号)接收包。我设置了一组日志输出(我什至尝试了“System.out.println”调用)来验证数据流,一切似乎都很好。
谁能告诉我这些错误消息与什么完全相关?
我用于测试的设备是带有最新 OTA 更新 (Android 2.3.6) 的 Motorola Atrix 4G (MB860)。由于兼容性问题,我们所做的所有开发都必须使用 API 8(或更早版本)来完成。
sockets - 从用户态进入内核态的不同方式?NETLINK Socket是其中之一吗?如何?
NETLINK Socket 是否用于从用户模式进入内核模式。我们如何使用NETLINK Socket 实现系统调用功能,同时从用户模式跳转到内核模式?恕我直言,如果可能的话?RGds,软的
linux - 使用 GDB 调试 netlink 通信
我有一个使用 netlink 套接字与内核模块通信的多线程应用程序。用户模式应用程序中的一个线程用作服务器,内核模块用作客户端。内核代码大致如下:
当用户模式应用程序回复此消息时,会在 netlink 回调中更新message_status变量。所以基本上这个想法是发送一条消息,然后在最大超时时间等待回复。
现在,使用 gdb,如果我在用户模式下由 netlink 服务器线程调用的任何函数中添加断点,则断点永远不会被命中,并且内核日志中充斥着类似的消息
在我们得到答复之前有人叫醒了我们。剩余时间 3499
在我们得到答复之前有人叫醒了我们。剩余时间 3499
在我们得到答复之前有人叫醒了我们。剩余时间 3499
在我们得到答复之前有人叫醒了我们。剩余时间 3499
..
..
在我们得到答复之前有人叫醒了我们。剩余时间 3498
直到我终于得到
未收到回复
是什么导致内核线程从超时中唤醒,我应该如何调试用户模式代码?
PS:我在 RHEL 6.0 上使用 2.6.32-71.el6.x86_64
linux - 是否可以通过 netlink 在两个 linux 内核模块之间进行通信?
众所周知,netlink 是用户/内核空间的通信机制。
我想从我的内核模块与另一个模块进行通信。另一个内核模块已经有了 netlink 接口。
是否可以像我们在用户空间中那样从内核模块连接到netlink?
linux-kernel - 网络过滤器限速
我正在 1Gbit/sec 网络上测试 netlink 过滤器应用程序:我有用户空间功能将判决发送到 netlink 套接字;另一个用户空间例程从 netlink 套接字和一些自定义过滤器函数执行标记数据包的异步读取。对于 >300 Mbps 的比特率,我看到 netlink 套接字读取错误“没有可用的缓冲区空间”。我把它当作 netlink 缓冲区溢出。有人可以推荐一种方法来提高高速网络的 netlink 吞吐量吗?我的内核版本是 2.6.38。
c - 从 netlink 消息中提取当前路由,附加代码
我正在尝试使用 netlink 套接字监视路由更改,但是我应该如何获取更新的路由地址?
代码:
c - 我无法通过 NETLINK_ROUTE 选项通过 Netlink 套接字设置特定接口(eth0 或 eth1)的 MTU 大小
我编写了一个程序来将特定接口(比如eth0
或)的 MTU 大小设置为 1100。请求消息是使用 Netlink 套接字通过选项eth1
从用户空间发送的。NETLINK_ROUTE
消息从用户空间成功发送,但是当我验证时ifconfig eth0
,MTU 大小仍然显示旧值(1500)。我验证正确吗?我怎么知道内核是否正确设置了 MTU 大小?如果我错了,请在下面找到我的程序并纠正我。
linux - 如何使用netlink监控用户空间deamon中的内核arp表?
我知道我们可以使用带有 RTM_F_NOTIFY 标志的 'NETLINK_ROUTE' 套接字来通知用户是否根据 RFC3549 更改路由。但是我找不到一种在 arp 表更改时通知用户的方法。
PS:我用的是linux内核3.0.6