免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1506 | 回复: 8
打印 上一主题 下一主题

[网络子系统] 上层收不到网卡数据,问题出在哪?求指导,谢谢! [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-22 14:56 |只看该作者 |倒序浏览
在网络技术板块发过帖子,没人回,特转回内核板块,斑斑,指导下!
http://bbs.chinaunix.net/thread-4091724-1-1.html

卡了一天了。

论坛徽章:
0
2 [报告]
发表于 2013-07-22 17:44 |只看该作者
回复 1# shaohui973

MAC地址对么,没细看,先想到的是这个

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
3 [报告]
发表于 2013-07-22 17:57 |只看该作者
回复 2# 卖萌犯法


    正确的。

论坛徽章:
0
4 [报告]
发表于 2013-07-23 09:08 |只看该作者
本帖最后由 卖萌犯法 于 2013-07-23 09:12 编辑

回复 1# shaohui973

你能详细解释一下这些filter的意义么,我没有用过这种格式的BPF。
另外,这种格式的规则在用户空间是通过什么方式加入的,我只知道在内核里,它们是被 sk_attach_filter 加入到 filter 表中的。

另:
对同一块网卡的不同 socket 使用BPF规则,至少两组规则(两个socket)之间不会产生冲突,因为规则的所有者是socket,只有规则组内才会有冲突。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
5 [报告]
发表于 2013-07-23 10:59 |只看该作者
本帖最后由 shaohui973 于 2013-07-23 10:59 编辑

回复 4# 卖萌犯法


    可以。
                                       BPF_STMT(BPF_LD+BPF_H+BPF_ABS,12),                         /*从packet起始地址偏移12字节处加载2字节的内容到“累加器A”中(会做字节序转换,参考sk_run_filter()的实现)*/
                                       BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0X0800,0,5),          /*如果累加器A中的值为0x0800,则PC+0,否则PC+5(即最后一条命令,drop packet)*/
                                       BPF_STMT(BPF_LD+BPF_B+BPF_ABS,23),                            /*从packet起始地址偏移23字节处加载1字节的内容到“累加器A”中(会做字节序转换,参考sk_run_filter()的实现),源码中有一处错误*/
                                       BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0X11,0,3),                /*如果累加器A中的值为0x11,则PC+0,否则PC+3(即最后一条命令,drop packet)*/
                                       BPF_STMT(BPF_LD+BPF_H+BPF_ABS,36),
                                       BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, DHCP_SERVER_PORT,0,1),
                                       BPF_STMT(BPF_RET+BPF_K,-1),                                            /* keep packet */
                                       BPF_STMT(BPF_RET+BPF_K,0)                                              /* drop packet */

论坛徽章:
0
6 [报告]
发表于 2013-07-23 12:13 |只看该作者
回复 5# shaohui973

明白了,那么你的第二个规则,就是在判断 ether_type 是不是 cOCTPKT_HDR_ETHERTYPE ,如果是则接收,否则丢弃。
这个规则应该没有问题。

那么,会不会是 cOCTPKT_HDR_ETHERTYPE 存在大小端格式的问题。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
7 [报告]
发表于 2013-07-23 12:31 |只看该作者
回复 6# 卖萌犯法


    不会,BPF规则处理时会将包中的数据转成host字节序的

论坛徽章:
0
8 [报告]
发表于 2013-07-23 16:30 |只看该作者
回复 7# shaohui973

我不是说规则,我是说你的DSP填充成数据时,有没有可能大小端格式有问题。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
9 [报告]
发表于 2013-07-23 17:21 |只看该作者
回复 8# 卖萌犯法


    我已经找到原因了:
                                     http://bbs.chinaunix.net/forum.p ... ;page=1#pid23928681
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP