和克隆不同,当多个进程对同一个Socket Buffer的操作既要修改sk_buff数据结构中的内容,也要修改数据包内容时,必须对Socket Buffer进行复制,这是可以有两个选择:
1、如果既要修改主数据包中的内容,又要操作分片数据段中的值,函数struct sk_buff *skb_copy(struct sk_buff *skb)可以完成该功能。
2、如果只修改主数据包中的内容,而不需要读/写分片数据段中的值,可以使用函数struct sk_buff *pskb_copy(struct sk_buff *skb)来完成操作。