Linux内核??与sk_buff有关重要数据结构
作者:网络转载 发布时间:[ 2012/12/21 10:27:59 ] 推荐标签:
3、skb_shared_info结构体
struct skb_shared_info {
unsigned short nr_frags;
unsigned short gso_size;//尺寸
/* Warning: this field is not always filled in (UFO)! */
unsigned short gso_segs;//顺序
unsigned short gso_type;
__be32 ip6_frag_id;
__u8 tx_flags;
struct sk_buff *frag_list;//分片的sk_buff列表
struct skb_shared_hwtstamps hwtstamps;//硬件时间戳
/*
* Warning : all fields before dataref are cleared in __alloc_skb()
*/
atomic_t dataref;//使用计数
/* Intermediate layers must ensure that destructor_arg
* remains valid until skb destructor */
void * destructor_arg;
/* must be last field, see pskb_expand_head() */
skb_frag_t frags[MAX_SKB_FRAGS];
};
该类型用来管理数据包分片信息,通过宏可以表示与skb的关系
#define skb_shinfo(SKB) ((struct skb_shared_info *)(skb_end_pointer(SKB)))
#ifdef NET_SKBUFF_DATA_USES_OFFSET
static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
{
return skb->head + skb->end;
}
#else
static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
{
return skb->end;
}
#endif
可以看到如果用户没有自己使用偏移量,是skb的end属性指针,也是该信息存储在缓冲区之后。
下篇将看有关sk_buff的操作函数的实现。
本文转自:http://blog.csdn.net/yming0221/article/details/7971463
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11