Copy header of skb when it is required
int skb_cow(struct sk_buff * skb, unsigned int headroom);
skb
buffer to cow
headroom
needed headroom
If the skb passed lacks sufficient headroom or its data part is shared, data is reallocated. If reallocation fails, an error is returned and original skb is not changed.
The result is skb with writable area skb->head...skb->tail and at least headroom of space at head.