pipapo_drop(9)
π pipapo_drop(9) β the Kernel API Manual page, but make it make sense
okay so bestie, welcome to the Kernel API Manual, section 9 (that's the kernel-functions girlies πΈ). Today's main character is pipapo_drop β she deletes stuff, and honestly? she ate.
π NAME
pipapo_drop β delete an entry from the lookup and mapping tables, given a rule map. that's it, that's the whole job π«Ά
β¨ SYNOPSIS
void pipapo_drop (struct nft_pipapo_match *m , union
nft_pipapo_map_bucket rulemap[] );
literally just those two things, no cap β¨
π ARGUMENTS
mβ the matching data. yep. that's the vibe. πrulemapβ the table of rule maps: arrays of the first rule, plus the amount of rules in the next field that a given entry maps to, for each field. so it's like, a little itinerary of where everything lives πΊοΈ
π¦ DESCRIPTION
okay so picture this: for each rule in the lookup table buckets that map to this set of rules, we drop all the bits that are set in the lookup table mapping. slay, but also slightly unhinged energy π₯
in pictures β and yes, we're doing diagrams, stay with me β imagine we want to drop rules 0 and 1 from this lookup table:
bucket group 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 0 0 1,2 1 1,2
0 2 0 1,2 3 0
1,2 4 0,1,2 5 0 1 2 6 0,1,2 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 7 1,2 1,2 1 1 1 0,1 1 1 1 1 1 1
1 1 1 1
so then rule 2 becomes rule 0, and the glow-up result is this:
bucket group 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 0 0 1 0 2
0 3 0 4 0 5 0 6 0 7
0 0
like... the way the numbers just renumber themselves? iconic. π
and once that's done, you call unmap to drop all the corresponding rule references from the mapping tables. it's giving cleanup era, it's giving closure. periodt. π
π SEE ALSO
the whole friend group, fr fr β go say hi:
- 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_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_do_walk(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)
and that's the whole page, bestie!! this lil masterpiece lives in the <lavender>./net/netfilter</lavender> corner of the kernel, and the source/version + date stamp is <pink>October 2026</pink> π go forth, drop those entries, and remember: the bits were set, and now they're not. no cap, iykyk πβ¨
π¦ 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