【发布时间】:2012-04-25 01:10:18
【问题描述】:
我正在编写一个内核模块来从存储在 sk_buff 中的数据包中获取 MAC 地址。我使用以下代码打印源和目标的 MAC 地址:
struct ethhdr *mh = eth_hdr(skb);
printk(KERN_EMERG "Source MAC=%x:%x:%x:%x:%x:%x\n",mh->h_source[0],mh->h_source[1],mh->h_source[2],mh->h_source[3],mh->h_source[4],mh->h_source[5]);
可以使用h_dest 代替h_source 访问目标地址。
我的问题是源 MAC 地址总是a8:c0:0:0:a8:c0 而目标 MAC 地址总是一些垃圾值而不是我自己的 MAC 地址。
谁能帮我解决这个问题?我想获取正确的 MAC 地址。
【问题讨论】:
-
你可以使用 %pM 用 printk 打印 mac 地址。
标签: linux