免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: overcloud
打印 上一主题 下一主题

求助,netlink传输,内核死活收不到包 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-03-06 20:46 |只看该作者
dmesg显示是
[185112.322833] initializing Netlink Socket!
[185112.322851] successful create socket
[185118.182413] input()called
[185118.182428] nl_data_ready: received netlink message payload:Hello you!
[185118.182433] pid = 18160
[185118.182437] skb allocated
[185118.182441] Greeting From Kernel!
[185118.182444] ready to unicast
[185118.182451] unicasted
应该就是成功发出去了吧

论坛徽章:
0
22 [报告]
发表于 2009-03-07 05:03 |只看该作者
原帖由 Godbach 于 2009-2-27 17:50 发表
ip_queue中向用户空间发送信息的函数:

其中红色那行代码就是实际的发送函数,这个函数里面peer_pid参数为用户空间发送消息是记录下来的,你比较一下是否是在内核接受用户消息时记录下来的。


我看ip_queue.c里面并没有设置NETLINK_CB(skb),所以我把那两行去掉了,直接netlink_unicast,这次好像收到了,但是马上就机器崩溃,好像close(sock)那里出问题了,或者别的地方...依然一头雾水

论坛徽章:
0
23 [报告]
发表于 2009-03-07 13:19 |只看该作者
原帖由 overcloud 于 2009-3-7 05:03 发表


我看ip_queue.c里面并没有设置NETLINK_CB(skb),所以我把那两行去掉了,直接netlink_unicast,这次好像收到了,但是马上就机器崩溃,好像close(sock)那里出问题了,或者别的地方...依然一头雾水


给你一段我的代码片段,我用NLMSG_PUT宏来设置参数。

NLMSG_PUT( skb_d, 0 , 0, 0, MAX_PAYLOAD );
NETLINK_CB( skb_d ).pid = 0;
nlh = nlmsg_hdr( skb_d );
memcpy( NLMSG_DATA( nlh ) ,  ptMsg , MAX_PAYLOAD );                        
rc = netlink_unicast( nl_sk , skb_d, pid, MSG_DONTWAIT );

论坛徽章:
0
24 [报告]
发表于 2009-03-07 13:23 |只看该作者
原帖由 overcloud 于 2009-3-7 05:03 发表


我看ip_queue.c里面并没有设置NETLINK_CB(skb),所以我把那两行去掉了,直接netlink_unicast,这次好像收到了,但是马上就机器崩溃,好像close(sock)那里出问题了,或者别的地方...依然一头雾水


用宏试试看。
#define NLMSG_NEW(skb, pid, seq, type, len, flags) \
({&nbsp;&nbsp;&nbsp;&nbsp;if (skb_tailroom(skb) < (int)NLMSG_SPACE(len)) \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto nlmsg_failure; \
&nbsp;&nbsp;&nbsp;&nbsp;__nlmsg_put(skb, pid, seq, type, len, flags); })

#define NLMSG_PUT(skb, pid, seq, type, len) \
&nbsp;&nbsp;&nbsp;&nbsp;NLMSG_NEW(skb, pid, seq, type, len, 0)

论坛徽章:
0
25 [报告]
发表于 2009-06-01 14:20 |只看该作者

回复 #24 springtty 的帖子

你的方法很好用,我遇到类似的问题,使用了你的两段代码就解决问题了,从核心态发出的消息,用户态程序可以接收到了.非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP