skb_checksum_trimmed(9)
skb_checksum_trimmed(9) β¨
bestie, this page is from the Kernel API Manual, and it is officially giving βvalidate checksum of an skbβ energy. iconic, honestly.
π NAME π
skb_checksum_trimmed β validate checksum of an skb
β¨ SYNOPSIS β¨
struct sk_buff * skb_checksum_trimmed (struct sk_buff *skb , unsigned
int transport_len , __sum16(*skb_chkf)(struct sk_buff *skb) );
π ARGUMENTS π
skbβ the skb to check. main character behavior.transport_lenβ the data length beyond the network header. like, the amount past the network header, iykyk.skb_chkfβ checksum function to use. your chosen checksum bestie.
π¦ DESCRIPTION π¦
Okay so skb_checksum_trimmed applies the given checksum function skb_chkf to the provided skb. It returns a checked and maybe trimmed skb β and if it goes wrong, it returns NULL on error. no cap. π«Ά
If the skb has data beyond the given transport length, then a trimmed & cloned skb is checked and returned. The way it just handles the extra data with a trim-and-clone moment? obsessed. π
Caller responsibilities, and do not skip these: the caller needs to set the skb transport header and free any returned skb if it differs from the provided skb. Fr fr, if the returned skb differs from the one you passed in, free it.
π SEE ALSO π
Kernel file: ./net/core/skbuff.c
The whole linked-up squad β every single one, periodt:
drop_reasons_register_subsys(9)drop_reasons_unregister_subsys(9)skb_panic(9)napi_skb_cache_get_bulk(9)__build_skb(9)build_skb_around(9)__napi_build_skb(9)napi_build_skb(9)__alloc_skb(9)__netdev_alloc_skb(9)napi_alloc_skb(9)skb_pp_cow_data(9)skb_pp_frag_ref(9)__kfree_skb(9)sk_skb_reason_drop(9)skb_tx_error(9)consume_skb(9)__consume_stateless_skb(9)napi_consume_skb(9)alloc_skb_for_msg(9)skb_morph(9)skb_copy_ubufs(9)skb_clone(9)skb_copy(9)__pskb_copy_fclone(9)pskb_expand_head(9)skb_expand_head(9)skb_copy_expand(9)__skb_pad(9)pskb_put(9)skb_put(9)skb_push(9)skb_pull(9)skb_pull_data(9)skb_trim(9)__pskb_pull_tail(9)skb_copy_bits(9)skb_store_bits(9)skb_zerocopy(9)skb_dequeue(9)skb_dequeue_tail(9)skb_queue_purge_reason(9)skb_rbtree_purge(9)skb_queue_head(9)skb_queue_tail(9)skb_unlink(9)skb_append(9)skb_split(9)skb_shift(9)skb_prepare_seq_read(9)skb_seq_read(9)skb_abort_seq_read(9)skb_copy_seq_read(9)skb_find_text(9)skb_pull_rcsum(9)skb_segment(9)skb_to_sgvec(9)skb_cow_data(9)skb_clone_sk(9)skb_partial_csum_set(9)skb_checksum_setup(9)skb_checksum_maybe_trim(9)skb_try_coalesce(9)skb_scrub_packet(9)skb_eth_pop(9)skb_eth_push(9)skb_mpls_push(9)skb_mpls_pop(9)skb_mpls_update_lse(9)skb_mpls_dec_ttl(9)alloc_skb_with_frags(9)skb_condense(9)__skb_ext_alloc(9)__skb_ext_set(9)skb_ext_add(9)skb_attempt_defer_free(9)skb_splice_from_iter(9)
bye bestie π«Ά this pageβs source/version is ./net/core and itβs dated October 2026 β now go validate those checksums and slay π
β¨
π¦ 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