iptfs_pskb_extract_seq(9)
β¨ NAME β¨
iptfs_pskb_extract_seq β bestie, this is the one that makes a brand new sk_buff and then loads it up with data. π
(oh also, hi, you're reading the Kernel API Manual page for it, section 9 β very demure, very kernel of you π)
πΈ SYNOPSIS πΈ
struct sk_buff * iptfs_pskb_extract_seq (u32 skblen , struct
skb_seq_state *st , u32 off , int len );
Yes the line wraps weirdly, no I did not do that, that's just how it's printed, leave her alone π
π ARGUMENTS π
skblenβ the total data size forskb. Like, the whole capacity of the thing you're building. πstβ the source for the rest of the data to copy intoskb. This is where the good stuff lives. π«Άoffβ the offset intostto copy data from. Where you start scooping. π₯lenβ the length of data to copy fromstintoskb. β οΈ And listen: this must be<= skblen. Not a vibe if it isn't, okay?
π¦ DESCRIPTION π¦
Okay so here's the whole situation, bestie. π
First, iptfs_pskb_extract_seq creates a new sk_buff called skb, and it gives it skblen worth of packet data space. Fresh out the box, iconic.
Then β and this is the little plot twist β if non-zero, it copies rlen bytes of runt into skb. Runt data said "I'm coming too" and honestly? Slay. β¨
After that, it uses the seq functions to copy len bytes out of st and into skb, starting from off. So like: off is your starting point, len is how much you're hauling over, and st is the source it's all coming from. π
β οΈ Heads up: it is an error forlento be greater than the amount of data left inst. Like, you cannot pull more than what's there. The math has to math. π
π RETURN π
You get back the newly allocated sk_buff skb π₯³ β or NULL if an error occurs, in which case, no skb for you, sorry babe. π
π SEE ALSO π
Kernel file ./net/xfrm/xfrm_iptfs.c β go read the actual source, it's giving main character energy π
IPTFS_DEFAULT_DROP_TIME_USECS(9), IPTFS_DEFAULT_REORDER_WINDOW(9), IPTFS_DEFAULT_INIT_DELAY_USECS(9), IPTFS_DEFAULT_MAX_QUEUE_SIZE(9), struct xfrm_iptfs_config(9), struct xfrm_iptfs_data(9), iptfs_alloc_skb(9), iptfs_skb_head_to_frag(9), struct iptfs_skb_frag_walk(9), iptfs_skb_prepare_frag_walk(9), iptfs_skb_can_add_frags(9), iptfs_skb_add_frags(9), iptfs_pskb_add_frags(9), iptfs_input_save_runt(9), __iptfs_iphlen(9), __iptfs_iplen(9), iptfs_complete_inner_skb(9), iptfs_reassem_abort(9), iptfs_reassem_done(9), iptfs_reassem_cont(9), iptfs_input_ordered(9), iptfs_drop_timer(9), iptfs_input(9), iptfs_enqueue(9), iptfs_copy_create_frag(9), iptfs_copy_create_frags(9), iptfs_first_skb(9), iptfs_encap_add_ipv4(9), iptfs_encap_add_ipv6(9), iptfs_prepare_output(9), __iptfs_get_inner_mtu(9), iptfs_get_inner_mtu(9), iptfs_user_init(9)
That's the whole friends list, no cap. Go read them all, iykyk π¦
βΏ and that's the page! βΏ brought to you by ./net/xfrm, dated October 2026, and filed under iptfs_pskb_extract_seq(9) β mwah, ily, now go build that skb ππΈπ
π¦ 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