问题标签 [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.
linux - Problems with netlink socket, kernel opps 0002
I try to send some data from user mode to my kernel module. But when it send something, it triggers a kernel error:
Bug:unable to handle kernel paging request ad ffff88022f168bc0
IP: [<...>]build_skb+0xf5/0x1c0
I am using this period code now. Anybody have opinion on this problem? Thanks~
Here is the function in the kernel module that I use to receive message.
c - 关闭 telnet 会话会将标准输出重定向到 http 套接字
我有一个将日志输出显示到标准输出的程序。
因此,如果我打开一个到我的目标 linux 的 telnet 会话,然后在这个 telnet 会话上启动我的程序,那么我将在我的 telnet 会话上显示日志消息。
在我的程序中,我运行了一个小型 http 服务器。现在,如果我更改目标 linux 的 IP 地址,然后重新启动接口(http 服务器将自动重新启动,因为我使用 netlink 检测到 IP 地址的更改)然后我将关闭 telnet 会话并重定向 stdout 消息到我的 http 服务器打开的套接字,我将锁定日志消息的 printf。
我尝试使用 select 来检测这个锁,但没有成功:How to use select with stdout?
在进入 prinf 之前选择返回成功(锁定)
有什么建议可以避免这个问题吗?
c - 使用 3.X linux 内核的 C 语言中的 Netlink 套接字
嗨,我一直在努力让Netlink套接字适用于3.2 linux 内核,但我似乎不知道该怎么做。我已经四处寻找Netlink套接字基础知识的示例,但似乎我找到的所有示例都是针对2.6 内核的。
我试图找到的是如何使用 Netlink 套接字将信息从内核模块发送到用户模式应用程序,反之亦然?
任何帮助将不胜感激。谢谢!
linux-kernel - netlink_unicast 在守护程序模式下返回 errno -111(连接被拒绝)
我有一个使用 Netlink 的 Linux 内核模块,以便与在用户空间中运行的守护进程通信。
在开发阶段,我总是像正常进程一样运行守护进程可执行文件(不调用fork()
),一切正常。
到目前为止,主要行为的开发已经完成,所以我正在实现一个--daemon
调用该fork()
方法的参数(也setsid()
如链接http://www.thegeekstuff.com/2012/02/c-daemon-process/中所述) ) 就在继续正常进程之前。
下一步是守护进程在初始化 Netlink 套接字后调用 Linux 内核模块,这个是保存守护进程的 PID 以便推送消息。Linux 内核守护进程正确接收来自守护进程的消息,但无法使用netlink_unicast()
返回 errno -111(连接被拒绝)发送消息。
我检查了 Linux 内核模块收到的 PID,它与被分叉后的守护进程相同,所以看起来是正确的。
你知道为什么我的守护进程在分叉时不再能够recvmsg()
从我的 Linux 内核模块接收消息(使用该方法)吗?
c - netlink_kernel_create 不适用于最新的 linux 内核
kernel
编译使用 netlink 函数的旧模块时出现编译器错误。
以前它工作正常,但现在我收到此错误。
操作系统信息
linux - Net Link Linux 用户代码绑定套接字调用对于多播组 ID(非零值)总是失败
您好我正在尝试实现网络链接用户代码和内核代码,每件事都适用于单播(src_addr.nl_groups = 0;)。对于多播,用户代码绑定调用对于非零 src_addr.nl_groups 值总是失败。真的不确定为多播设置什么价值以及如何进一步进行。我检查了内核源代码树中 netlink_broadcast 的使用情况,所以我把相同的组 ID 值(RTMGRP_LINK)放在这里。对于单播,我在互联网上找到了很多帮助,但对于多播,我不这么认为。所以请帮助我进一步进行。
我得到的错误是:
绑定:没有这样的文件或目录
./a.out:无法绑定套接字(3)和错误:-1:没有这样的文件或目录
linux - 无法创建 netlink 套接字:不支持协议
我找到了一个关于使用 netfilter 和 libipq 库拦截 IPv6 数据包的示例。
它首先声明和创建一个 ipq_handle 结构:
对应的die()函数如下
但是,该程序无法正常运行,生成以下内容:
传递者:无法创建网络链接套接字:不支持协议
有人知道问题的可能原因吗?
linux - m 标志和 o 标志将存储在 Linux 中的位置
我想知道最近收到的路由器广告的 m 标志和 o 标志的值。从内核源代码中我了解到存储了 m 标志和 o 标志。
然后我相信必须可以使用 ioctl 或 proc 文件系统或任何其他方法检索这些值。任何人都可以请指出。
linux - Linux 内核中的 netlink 套接字与从用户态轮询有何不同?
我对内核-应用程序交互上下文中 netlink 套接字的功能有疑问。正如我所读到的,netlink 套接字用于从内核到应用程序的基于事件的通知。这样做的好处是应用程序不需要轮询。
但与 netlink 套接字一样,它最终也会轮询以检查是否已从内核发送了一些数据。所以我的问题是,netlink 套接字的这种功能与文件描述符的轮询有何不同?我提到了这个 ,但它告诉了如何使用 netlink,而不是 netlink 套接字和轮询之间的区别。
linux-kernel - sendmsg 导致内核崩溃
我使用 Netlink 套接字尝试了下面的程序,它就像一个魅力。
源:http ://binwaheed.blogspot.in/2010/08/after-reading-kernel-source-i-finally.html
内核模块
用户程序
}
但是,当我在第一次(在主程序内)sendmsg()
之后立即执行时,内核崩溃并且系统重新启动。sendmsg
知道为什么会这样吗?