参考了网站:http://edsionte.com/techblog/archives/4134
netlink编程-用户主动发起会话
我在linux中运行了一变,但是不知道为什么 在最后的输出的时候:
printf("Received message payload:%s\n", (char *)NLMSG_DATA(&r.nlh));
输出的是一个乱码!
这是为什么 求大神帮忙一下 谢谢[code]#include
by
SCDXMOE
-
内核源码
-
2014-05-31 17:42:20 阅读(1542) 回复(5)
本帖最后由 denallo 于 2013-12-11 19:51 编辑 我自己注册的netlink协议,从用户层将数据发往内核一切正常,不过要是从内核往用户层发数据的话(用netlink_unicast),用户层收得到数据,但是recvmsg返回的数值显示它收到的数据比内核发送的数据少。 补充:刚刚测了下,nlmsg报头的长度是16个字节,然后NLMSG_DATA所指向的数据缓冲区的长度是12个字节,在内核层发送时,netlink_unicast返回的字节数是28个字节,而在用户层接收数...
我自己写了一个模块,就是当neifilter接受到ICMP包的时候就放入NET_QUEUE队列,然后在用户层使用netlink机制进行接受这样的包,但是我的用户层怎么会失败,当我用ip_queue模块的时候就可以,不知道怎么回事,下面的user.zip是用户层的源代码,module是那个我写的icmp模块,麻烦大家看下
netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(netlink_ROUTE),1-wire 子系统(netlink_W1),用户态 socket 协议(netlink_USERSOCK),防火墙(netlink_FIREWALL),socket 监视(netlink_INET_DIAG),netfilter 日志(netlink_NFLOG),ipsec 安全策略(netlink_XF...
netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(netlink_ROUTE),1-wire 子系统(netlink_W1),用户态 socket 协议(netlink_USERSOCK),防火墙(netlink_FIREWALL),socket 监视(netlink_INET_DIAG),netfilter 日志(netlink_NFLOG),ipsec 安全策略(netlink_XF...
我遇到一个问题,每次调用recvmsg,都会报Message Too Long的错误。而GNU C Library也没有recvmsg的详细介绍,不知道哪位版友用过recvmsg.望不吝赐教
最近学习netlink,看了网上的很多资料知道了: 1,基于socket, AF_netlink 2,用于进程和内核的通信,比ioctl,system_call 好很多 3,双工,kernel可以主动给user-space 发消息 4,在user_space 中使用标准BSD socket,在kernel里使用特定的API 大概明白了一些特性和使用的流程和方法,但是还是感觉对netlink很模糊,有没有谁帮我讲讲它的具体应用价值在哪,或者是告诉我现在要从哪方面去更深的了解它了?
最近应用需求需要实现一下硬盘、U盘、eSata备份的热插拔功能,内核对热插拔都以实现,但是怎么才能让应用层也能实时的知道有热插拔事件产生呢,刚开始想到的是用信号来实现异步通知,虽然已经实现,但是这种方法不太适用,不能将所有的热插拔事件统一起来,后来网上google了几篇关于netlink的文章,顺便做了下笔记。 netlink提供了一种异步通讯方式,使用时与标准的socket API一样。 内核代码: #include linux/module.h...