这个表还有一个必要需求:每个sk_buff结构必须能够迅速找出整个表的头。为了实现这个功能,添加一个sk_buff_head结构体作为哑元元素 structsk_buff_head{/* 这两个必须是最前面的 */structsk_buff*next;structsk_buff*prev;__u32qlen;// 元素的数目spinlock_tlock;// 防止对表的并发访问}; sk_buff和sk_buff...
sk_buff结构体由多个部分组成,包括布局、通用、专用功能和管理函数。它在传输过程中,从一个网络层传递到另一个时,报头信息会随之变化。上行过程中,L4添加报头后传递给L3,L3再添加自己的报头;下行时,L3会保留L2报头的指针,而不是删除。sk_buff结构定义在头文件中,基于变量堆。其内部包含sk_buff...