免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
1 [报告]
发表于 2009-03-06 12:25 |显示全部楼层
原帖由 Godbach 于 2009-2-27 19:08 发表
在调用netlink_unicast函数的前后打印一些信息出来,看看那些报文走到了这个流程,并且成功的被netlink_unicast处理了。

对,dmesg看看程序执行流程。

[ 本帖最后由 springtty 于 2009-3-6 12:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 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
3 [报告]
发表于 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)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP