他们分别返回IP头和mac头吗?我有点困惑,因为只看实现,他们返回的指针是 skb->head + skb->network_header 等。为什么不通过执行 skb->network_header 来获取网络 header ?
谢谢!
最佳答案
skb_network_header()有两个版本
#ifdef NET_SKBUFF_DATA_USES_OFFSET
static inline unsigned char *skb_network_header(const struct sk_buff )
{
return skb->head + skb->network_header;
}
#else
static inline unsigned char *skb_network_header(const struct sk_buff *skb)
{
return skb->network_header;
}
基本上,如果 NET_SKBUFF_DATA_USES_OFFSET 有效(例如,对于 64 位架构),.network_header
是从开始的偏移量。
关于c - sk_buff 函数 skb_network_header() 和 skb_mac_header() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023226/