免费注册 查看新帖 |

Chinaunix

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

[网络子系统] 判断数据帧pkt_type的一个疑问 [复制链接]

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-07 17:57 |只看该作者 |倒序浏览
内核版本:2.6.32-5
  1. static inline unsigned compare_ether_addr(const u8 *addr1, const u8 *addr2)
  2. {
  3.     const u16 *a = (const u16 *) addr1;
  4.     const u16 *b = (const u16 *) addr2;

  5.     BUILD_BUG_ON(ETH_ALEN != 6);
  6.     return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
  7. }
复制代码
eth_type_trans()通过compare_ether_addr_64bits()基于目标MAC地址对帧的类型pkt_type进行判断
而compare_ether_addr_64bits()会根据CPU架构是否可以对未对齐的内存进行有效访问而选择不同的处理方式

若选择调用compare_ether_addr()的话,这里只比较了网卡的MAC地址与数据帧目标MAC地址的前3个字节

难道仅前3字节相匹配就可以判断出两个mac地址相同或不同吗?
这样的话,若数据帧的目标mac地址为00:00:00:aa:aa:aa,接收帧的网卡mac为,00:00:00:bb:bb:bb,岂不是就可以判断为该帧就是发往本机的(pkt_type == PACKET_HOST)?

甚是不解,请各位大神指点一下,谢谢。

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
2 [报告]
发表于 2014-12-08 12:54 |只看该作者
回复 1# superwujc

自己顶一下,烦请各位大神指点一下啊

   

论坛徽章:
0
3 [报告]
发表于 2014-12-08 13:01 |只看该作者
const u16 *a = (const u16 *) addr1;(u8 --> u16)
已经转换为了2字节的
MAC共6个字节

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
4 [报告]
发表于 2014-12-08 15:21 |只看该作者
回复 3# hnwyllmm
多谢!

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP