| .. SPDX-License-Identifier: GPL-2.0 | |
| struct sk_buff | |
| ============== | |
| :c:type:`sk_buff` is the main networking structure representing | |
| a packet. | |
| Basic sk_buff geometry | |
| ---------------------- | |
| .. kernel-doc:: include/linux/skbuff.h | |
| :doc: Basic sk_buff geometry | |
| Shared skbs and skb clones | |
| -------------------------- | |
| :c:member:`sk_buff.users` is a simple refcount allowing multiple entities | |
| to keep a struct sk_buff alive. skbs with a ``sk_buff.users != 1`` are referred | |
| to as shared skbs (see skb_shared()). | |
| skb_clone() allows for fast duplication of skbs. None of the data buffers | |
| get copied, but caller gets a new metadata struct (struct sk_buff). | |
| &skb_shared_info.refcount indicates the number of skbs pointing at the same | |
| packet data (i.e. clones). | |
| dataref and headerless skbs | |
| --------------------------- | |
| .. kernel-doc:: include/linux/skbuff.h | |
| :doc: dataref and headerless skbs |