sk_buff copy& sk_buff克隆

时间:2012-11-06 09:36:59

标签: c linux linux-kernel linux-device-driver kernel-module

我为linux kernel&编写了一个模块它试图窃取数据包&其相关的 sk_buff 。这样做我想使用struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask)&然后在数据包被删除时将返回类型传递给内核。

所以当内核获取有关数据包丢弃的信息时,它会尝试释放sk_buff。在这里我的问题会影响我新复制的skb&它的尖头数据包?或者现在我可以玩我的新sk_buff?

或是否可以使用 skb_clone()&使用分组数据部分而不删除旧sk_buff引用的数据,因为它会降低数据包的复制成本。

1 个答案:

答案 0 :(得分:5)

使用skb_copy会将sk_buff和数据包复制到新内存。当内核释放另一个内核时的含义,副本不会受到影响。

另一方面,

skb_clonesk_buff结构复制到新内存,而不是数据包。意味着当旧的一个被释放时,你的副本也将释放该数据包。

以下是一些链接: