我正在编写一个内核模块来从存储在 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
inplace of访问目标地址h_source
。
我的问题是源 MAC 地址总是a8:c0:0:0:a8:c0
,而目标 MAC 地址总是一些垃圾值,而不是我自己的 MAC 地址。
谁能帮我解决这个问题?我想获得正确的 MAC 地址。