linux内核里怎么读skb的mac地址
时间: 2024-11-09 21:09:57 浏览: 17
ipv4_linux内核skb处理流程图_
5星 · 资源好评率100%
在Linux内核中,要读取Sk_buff(skb)的MAC地址,你可以使用`skb->mac.raw`来访问MAC头部的数据。这里`raw`是一个指向MAC地址的指针,通常是一个`struct ethhdr`结构,它包含了MAC地址信息。下面是一个简单的示例:
```c
#include <linux/skbuff.h>
#include <linux/etherdevice.h>
void get_skb_mac_address(struct sk_buff *skb)
{
struct ethhdr *eth = (struct ethhdr *) skb->data;
unsigned char mac[ETH_ALEN];
memcpy(mac, ð->h_source, ETH_ALEN); // 获取发送方MAC地址
memcpy(ð->h_dest, mac, ETH_ALEN); // 或者获取接收方MAC地址
printk(KERN_INFO "MAC Address: %pM\n", mac);
}
```
这段代码会打印出skb中的MAC地址。请注意,`skb_data()`通常返回的是skb数据部分的起始位置,而`ethhdr`结构位于数据的开始。
阅读全文