skb_dst(9)
β¨ skb_dst(9) β Kernel API Manual β¨
okay so bestie, welcome to the skb_dst(9) page π
this is the Kernel API Manual and honestly this function is a whole mood β tiny, iconic, does exactly one thing, no notes.
πΈ NAME πΈ
skb_dst β returns you the skb's dst_entry. that's it. that's the whole job. main character energy but make it a getter π«Ά
π SYNOPSIS π
struct dst_entry * skb_dst (const struct sk_buff *skb );
π¦ ARGUMENTS π¦
skbβ the buffer, bestie. the one and only thing you pass in π
π RETURN π
it gives you back the skb's dst_entry β and ngl, it does not care whether a reference was taken or not. taken ref? not taken? doesn't matter, you get the dst_entry either way. it's giving "i'm not keeping score" πβ¨
π₯ SEE ALSO π₯
this page is like the popular kid at the function β everybody's linked to it, iykyk. the kernel file it lives in is ./include/linux/skbuff.h, and then literally all of these besties:
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)- the dst_ref side of the family π:
skb_pfmemalloc(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) - the queue-and-roomie girlies π:
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) - frag gang, assemble π§:
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) - timestamp + checksum girlies, obsessed π
:
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),struct skb_ext(9),skb_checksum_none_assert(9),skb_head_is_locked(9)
likeβ¦ that's the whole extended universe fr fr π
no cap, no hidden lore here βskb_dstjust hands you thedst_entryand dips. keep that in mind and you're slaying π«Ά
and that's the page, bestie!! π compiled from ./include/linux π dated October 2026 β and yes, it's skb_dst(9) β periodt π
β¨
π¦ 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