1 数据链路层
1.1 skb_mac_header
skb_mac_header
返回数据链路层协议头数据的地址
static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
{
return skb->head + skb->mac_header;
}
skb->head时缓冲区的地址地址,skb->mac_header数据链路层协议头地址偏移长度。两者相加就得到数据链路层协议头数据地址。
1.2 skb_reset_mac_header
skb_reset_mac_header
复位数据链路层协议头数据地址指针
static inline void skb_reset_mac_header(struct sk_buff *skb)
{
skb->mac_header = skb->data - skb->head;
}
1.3 skb_set_mac_header
将数据链路层协议头信息地址指针设置到相应位置。
static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
{
skb_reset_mac_header(skb);
skb->mac_header += offset;
}
2 网络层
1.1 skb_network_header
skb_network_header
返回网络层协议头数据的地址
static inline unsigned char *skb_network_header(const struct sk_buff *skb)
{
return skb->head + skb->network_header;
}
1.2 skb_reset_network_header
skb_reset_network_header
复位网络层协议头数据地址指针
static inline void skb_reset_network_header(struct sk_buff *skb)
{
skb->network_header = skb->data - skb->head;
}
1.3 skb_set_network_header
skb_set_network_header
将网络协议头信息地址指针设置到相应位置
static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
{
skb_reset_network_header(skb);
skb->network_header += offset;
}
3 传输层
3.1 skb_transport_header
skb_transport_header
返回传输层协议头数据的地址
static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
{
return skb->head + skb->transport_header;
}
3.2 skb_reset_transport_header
skb_reset_transport_header
复位传输层协议头数据地址指针
static inline void skb_reset_transport_header(struct sk_buff *skb)
{
skb->transport_header = skb->data - skb->head;
}
3.3 skb_set_transport_header
skb_set_transport_header
将传输层协议头信息地址指针设置到相应位置
static inline void skb_set_transport_header(struct sk_buff *skb,
const int offset)
{
skb_reset_transport_header(skb);
skb->transport_header += offset;
}