我想使用netlink在应用程序和内核空间之间进行通信。我的Linux内核版本是2.6.28,下面是我的错误代码:
nf_sock=netlink_kernel_create(NL_PROTO,0,nl_user_skb,THIS_MODULE);
缩写的错误消息是:
error: too few arguments to function 'netlink_kernel_create'
在文件<linux/netlink.h>中,函数netlink_kernel_create()被定义为
extern struct sock *netlink_kernel_cre
有没有人知道NETLINK Sockets API for MAC OS X的等价物?我正在尝试将Linux应用程序移植到MACOS上,但在MACOS中找不到任何类似的东西。
我需要在应用程序中提供对网络适配器的异步访问。
每隔几秒钟轮询一次网络适配器的配置变化等,对我来说不是一个方便的解决方案。NETLINK Socket API游戏我只有在发生有趣的事情时才能收到通知。
我知道NETLINK是Linux特有的在Linux内核和用户空间之间进行通信的东西,但在MACOS下可能存在类似NETLINK的东西。
我看到了与内核通信的唯一工具- sysctl()
有谁有什么消息吗?
我想要完成的任务实际上非常简单(将字符串"TEST“多播到userland守护进程),但是内核模块不编译。它以错误结束:
passing argument 4 of ‘genlmsg_multicast_allns’ makes integer from pointer without a cast [enabled by default]
但它不应该只是我定义的多播组吗?
这是“澄清”的代码:
#include <linux/module.h>
#include <net/sock.h>
#include <linux/netlink.h>
#in
ss工具类似于netstat。ss使用的NETLINK库非常糟糕(man 7 netlink)。我在网上找不到如何正确地使用NETLINK_INET_DIAG功能。ss工具的源代码会有帮助,但我也找不到。任何建议都将不胜感激。
root@ubuntu:~# uname -a
Linux ubuntu 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013 i686 i686 i386 GNU/Linux
root@ubuntu:~# apt-get source ss
Reading package list
我正在尝试在ClearOS 7.3,64位上执行简单的程序
#include <sys/socket.h>
#include <linux/netlink.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
int main()
{
int flags =0;
int bus = NETLINK_NETFILTER;
int sock_fd = socket(AF_NETLINK, SO
我正在阿尔卑斯Linux上编译激流。autogen和configure可以正常工作,但是在调用make之后,会出现以下消息失败:
local_addr.cc:45:10: fatal error: linux/netlink.h: No such file or directory
我在/usr/include里查了一下,发现只有netlink/netlink.h。但是,源文件中的下一个包含是rtnetlink.h,它不存在。这是由于缺少依赖关系还是与glibc/musl相关的问题?如何在阿尔卑斯Linux下构建libtorrent/rtorrent?我知道有一个阿尔卑斯山的rtorrent包
我编写了一个内核模块来发送通用的Netlink多播,并使用接收它们的libmnl编写了一个userland客户机。
这一切都很好,但是我的客户端即使不是根用户,也可以工作,我想防止这种情况发生。
man 7 netlink说:
Only processes with an effective UID of 0 or the CAP_NET_ADMIN capability
may send or listen to a netlink multicast group.
显然,听的部分是不正确的。我尝试过CentOS 5 (2.6.18)、CentOS 6 (2.6.32)和Ubuntu14.0
我使用netlink套接字与linux内核通信用户python代码,我可以从用户正确地发送消息到内核,但不能从内核获得响应。它显示:“向用户发送bak时出错。”在我的内核代码中
我尝试了所有的方法来获得响应消息:recv,recvfrom recvmsg,然后我的目的是解压它以获得具有以下格式的响应的有效负载: response_message = header +有效负载,但是用户总是无法获得响应。我在执行用户python代码时得到了这样的信息:
pid of sock : 1
seq number of sock : 0
pid of the message send to kernel: