nft_pipapo_do_walk(9)
π nft_pipapo_do_walk β the manual page bestie
okay so this is nft_pipapo_do_walk, from the kernel API manual (section 9, the kernel API girlies). strap in, it's actually not that deep, i promise π
β¨ NAME β¨
nft_pipapo_do_walk β walk over elements in m πΆββοΈβ¨
π¦ SYNOPSIS π¦
void nft_pipapo_do_walk (const struct nft_ctx *ctx , struct nft_set *set
, const struct nft_pipapo_match *m , struct nft_set_iter *iter );
literally just that one call, no return value, she's a void icon π
πΈ ARGUMENTS πΈ
ctxβ the nftables API context, aka the vibe check for the whole operation π«Άsetβ the nftables API set representation, the actual set we're dealing with β¨mβ the matching data that points to the key mapping array. this is the main character of the function, honestly πiterβ the iterator, the thing that keeps track of where we're at π«
π₯ DESCRIPTION π₯
okay so here's the tea β: the elements are referenced in the mapping array for the last field, right? so we can just scan that array directly. no cap, there's literally no need to follow rule mappings from the first field. why would you when the last field already has the receipts? π
and m? she's protected β either by the RCU read lock or by the transaction mutex. so don't come for her without one of those, bestie π
π SEE ALSO π
bestie there are SO many siblings, buckle up π§:
- Kernel file
./net/netfilter/nft_set_pipapo.cTheory of Operation(9) pipapo_refill(9)pipapo_get_slow(9)pipapo_get(9)nft_pipapo_lookup(9)nft_pipapo_get(9)pipapo_realloc_mt(9)lt_calculate_size(9)pipapo_resize(9)pipapo_bucket_set(9)pipapo_lt_4b_to_8b(9)pipapo_lt_8b_to_4b(9)pipapo_lt_bits_adjust(9)pipapo_insert(9)pipapo_step_diff(9)pipapo_step_after_end(9)pipapo_base_sum(9)pipapo_expand(9)pipapo_map(9)pipapo_free_scratch(9)pipapo_realloc_scratch(9)pipapo_maybe_clone(9)nft_pipapo_insert(9)pipapo_clone(9)pipapo_rules_same_key(9)pipapo_unmap(9)pipapo_drop(9)pipapo_gc_scan(9)pipapo_gc_queue(9)pipapo_free_fields(9)pipapo_reclaim_match(9)nft_pipapo_commit(9)nft_pipapo_activate(9)nft_pipapo_deactivate(9)nft_pipapo_flush(9)pipapo_get_boundaries(9)pipapo_match_field(9)nft_pipapo_remove(9)nft_pipapo_walk(9)nft_pipapo_privsize(9)nft_pipapo_estimate(9)nft_pipapo_init(9)nft_set_pipapo_match_destroy(9)nft_pipapo_destroy(9)nft_pipapo_gc_init(9)
like, the whole pipapo family reunion fr fr π«Ά
ngl the whole "don't touch m without the RCU read lock or the transaction mutex" thing is the one part where you need to be on your best behaviour. everything else is just walking an array, slay π
and that's the page, periodt π she lives in ./net/netfilter and this edition is dated October 2026 β go off, kernel docs, you ate ππ
π¦ 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