STRUCT SKB_EXT(9)
π struct skb_ext(9) β the kernel API manual, but make it make sense
okay bestie so you've stumbled into the kernel API manual page for struct skb_ext(9) and honestly? it's giving "small struct, big responsibilities." let's get into it π
β¨ NAME β¨
struct skb_ext β sk_buff extensions, aka the little sidecar situation for your sockets. iconic behaviour, no cap π
πΈ SYNOPSIS πΈ
here's the whole vibe, copy it exactly, don't touch a character:
struct skb_ext {
refcount_t refcnt;
u8 offset[SKB_EXT_NUM];
u8 chunks;
char data[];
};
look at her. main character energy. variable-length data[] at the end? we love a flexible array member π¦
π Members π
refcntβ starts at1on allocation and gets deallocated on0. so like, when the refcount hits zero, she's gone, periodt πoffsetβ the offset to add todatato obtain the extension address. math girlie behaviour fr frchunksβ the size currently allocated, stored inSKB_EXT_ALIGN_SHIFTunits. yes, units, keep up π«Άdataβ start of extension data, variable sized. she grows, she shrinks, she contains multitudes β¨
β Note β
bestie listen up because this is the whole trick: offsets/lengths are stored in chunks of 8 bytes. this allows you to use u8 types while allowing up to 2kb worth of extension data. it's giving "clever packing" and honestly? ate. π₯
like, u8 looking smol but carrying up to 2kb of info? that's the kind of sly engineering i'm obsessed with π
π¦ SEE ALSO π¦
okay so this is the part where we list everything, and i do mean everything β the whole friend group, the extended universe, the group chat. grab a snack π
- Kernel file
./include/linux/skbuff.h(the house where all of this lives) skb checksums(9)skb_frag_size(9)skb_frag_size_set(9)skb_frag_size_add(9)skb_frag_size_sub(9)skb_frag_must_loop(9)skb_frag_foreach_page(9)struct skb_shared_hwtstamps(9)dataref and headerless skbs(9)Basic sk_buff geometry(9)struct sk_buff(9)skb_pfmemalloc(9)skb_dst(9)skb_dstref_steal(9)skb_dstref_restore(9)skb_dst_set(9)skb_dst_set_noref(9)skb_dst_is_noref(9)skb_napi_id(9)skb_unref(9)kfree_skb(9)alloc_skb(9)skb_fclone_busy(9)alloc_skb_fclone(9)skb_pad(9)skb_queue_empty(9)skb_queue_empty_lockless(9)skb_queue_is_last(9)skb_queue_is_first(9)skb_queue_next(9)skb_queue_prev(9)skb_get(9)skb_cloned(9)skb_header_cloned(9)__skb_header_release(9)skb_shared(9)skb_share_check(9)skb_unshare(9)skb_peek(9)__skb_peek(9)skb_peek_next(9)skb_peek_tail(9)skb_queue_len(9)skb_queue_len_lockless(9)__skb_queue_head_init(9)skb_queue_splice(9)skb_queue_splice_init(9)skb_queue_splice_tail(9)skb_queue_splice_tail_init(9)__skb_queue_after(9)__skb_queue_head(9)__skb_queue_tail(9)__skb_dequeue(9)__skb_dequeue_tail(9)skb_len_add(9)__skb_fill_netmem_desc(9)skb_fill_page_desc(9)skb_fill_page_desc_noacc(9)skb_headroom(9)skb_tailroom(9)skb_availroom(9)skb_reserve(9)skb_tailroom_reserve(9)skb_reset_transport_header_careful(9)skb_set_transport_header_careful(9)pskb_trim_unique(9)skb_orphan(9)skb_orphan_frags(9)__skb_queue_purge_reason(9)netdev_alloc_frag(9)netdev_alloc_skb(9)__dev_alloc_pages(9)__dev_alloc_page(9)dev_page_is_reusable(9)skb_propagate_pfmemalloc(9)skb_frag_off(9)skb_frag_off_add(9)skb_frag_off_set(9)skb_frag_off_copy(9)skb_frag_net_iov(9)skb_frag_page(9)skb_frag_netmem(9)skb_frag_address(9)skb_frag_address_safe(9)skb_frag_phys(9)skb_frag_page_copy(9)__skb_frag_dma_map(9)skb_clone_writable(9)skb_cow(9)skb_cow_head(9)skb_padto(9)__skb_put_padto(9)skb_put_padto(9)skb_linearize(9)skb_has_shared_frag(9)skb_linearize_cow(9)skb_postpull_rcsum(9)skb_postpush_rcsum(9)skb_push_rcsum(9)pskb_trim_rcsum(9)skb_needs_linearize(9)skb_get_timestamp(9)skb_data_move(9)skb_postpull_data_move(9)skb_postpush_data_move(9)skb_complete_tx_timestamp(9)skb_tstamp_tx(9)skb_tx_timestamp(9)skb_complete_wifi_ack(9)skb_checksum_complete(9)skb_checksum_none_assert(9)skb_head_is_locked(9)
like i said. the entire extended universe. iykyk π
that's the whole page bestie, go forth and be normal about skb extensions π
source/version and date, so you know this is legit: <pink>./include/linux</pink> , <purple>October 2026</purple> β mwah, you're welcome π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms