紫柳 发表于 2015-06-09 09:00

在链路层接口内添加判断MAC地址为空的语句后ping不通本机?

如题,在内核协议栈链路层处理接口dev_queue_xmit里添加判断源mac和目的mac为空的语句后,ping不通本机(127.0.0.1),打印语句显示源和目的MAC都为空int dev_queue_xmit(skb)
{

...

gso:
   if(!memcmp(destmac,skb->data,6|| !memcmp(srcmac,skb->data+6,6))) //destmac和srcmac为全0
{
    printk(KERN_ALTER "skb->data:%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n",skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data,skb->data);
    return 0;
}

}按理说ping任何主机mac都不应该为空,请各位大侠解惑,多谢!

conjurator 发表于 2015-06-09 10:09

本帖最后由 conjurator 于 2015-06-09 11:28 编辑

回复 1# 紫柳
I got it wrong previously.
'lo' device is initialized with all zero MAC address.
when a skb passed neighbor system, a dummy mac header is created with both source & destination address set to null.

abutter 发表于 2015-06-09 12:07

紫柳 发表于 2015-06-09 09:00 static/image/common/back.gif
如题,在内核协议栈链路层处理接口dev_queue_xmit里添加判断源mac和目的mac为空的语句后,ping不通本机(12 ...

括号是不是放的不对啊。

紫柳 发表于 2015-06-11 16:30

本帖最后由 紫柳 于 2015-06-11 16:30 编辑

回复 3# abutter


    少写了一个)
页: [1]
查看完整版本: 在链路层接口内添加判断MAC地址为空的语句后ping不通本机?