ENUM NFT_REGISTERS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ enum nft_registers β€” the Kernel API Manual moment πŸ’…

okay so bestie, sit down, because today we're learning about enum nft_registers, aka the nf_tables registers, straight out of the Kernel API Manual section 9. it's giving foundational. it's giving "you will need this later." let's go πŸ¦‹


✨ NAME ✨

enum nft_registers β€” the nf_tables registers, periodt. πŸŽ€


🌸 SYNOPSIS 🌸

enum nft_registers {
    NFT_REG_VERDICT ,
    NFT_REG_1 ,
    NFT_REG_2 ,
    NFT_REG_3 ,
    NFT_REG_4 ,
    __NFT_REG_MAX ,
    NFT_REG32_00 ,
    NFT_REG32_01 ,
    NFT_REG32_02 ,
    NFT_REG32_03 ,
    NFT_REG32_04 ,
    NFT_REG32_05 ,
    NFT_REG32_06 ,
    NFT_REG32_07 ,
    NFT_REG32_08 ,
    NFT_REG32_09 ,
    NFT_REG32_10 ,
    NFT_REG32_11 ,
    NFT_REG32_12 ,
    NFT_REG32_13 ,
    NFT_REG32_14 ,
    NFT_REG32_15

};

like, look at her. iconic structure. no notes. πŸ”₯


πŸ’– Constants πŸ’–

okay so the docs are kind of unserious here β€” every single one of these is literally marked -- undescribed -- in the source. not me reading that and gasping 😭. so we're gonna list them all with love and zero invented lore, because rule one of this page is: no cap, no extra facts.

  • NFT_REG_VERDICT β€” -- undescribed -- πŸ™ˆ the mystery is the point
  • NFT_REG_1 β€” -- undescribed --
  • NFT_REG_2 β€” -- undescribed --
  • NFT_REG_3 β€” -- undescribed --
  • NFT_REG_4 β€” -- undescribed --
  • __NFT_REG_MAX β€” -- undescribed -- (yes the double underscore is part of the name, don't come for her πŸ’…)
  • NFT_REG32_00 β€” -- undescribed --
  • NFT_REG32_01 β€” -- undescribed --
  • NFT_REG32_02 β€” -- undescribed --
  • NFT_REG32_03 β€” -- undescribed --
  • NFT_REG32_04 β€” -- undescribed --
  • NFT_REG32_05 β€” -- undescribed --
  • NFT_REG32_06 β€” -- undescribed --
  • NFT_REG32_07 β€” -- undescribed --
  • NFT_REG32_08 β€” -- undescribed --
  • NFT_REG32_09 β€” -- undescribed --
  • NFT_REG32_10 β€” -- undescribed --
  • NFT_REG32_11 β€” -- undescribed --
  • NFT_REG32_12 β€” -- undescribed --
  • NFT_REG32_13 β€” -- undescribed --
  • NFT_REG32_14 β€” -- undescribed --
  • NFT_REG32_15 β€” -- undescribed --
fr fr that's all 22 of them and every single description is -- undescribed --. we are not making anything up. we are simply holding space for the empty docs. 🫢

🧚 Description 🧚

okay here's the actual tea, and it's kind of a glow-up story. πŸ’–

nf_tables used to have five registers: a verdict register plus four data registers, and each of those data registers was size 16. that was the old era.

then the data registers got changed β€” now it's 16 registers of size 4. slay, more registers, smaller each, very demure very mindful.

but here's the compatibility bit, and this is important so don't zone out on me 😭: for compatibility reasons, the NFT_REG_[1-4] registers still map to areas of size 16, and the 4 byte registers are addressed using NFT_REG32_00 - NFT_REG32_15.

so like β€” old naming still lives in the big 16-sized lane, and the new 32-named girlies are the 4 byte ones. both exist. both valid. main character energy on both sides honestly. πŸ‘‘


🌈 SEE ALSO 🌈

the mothership first:

  • Kernel file ./include/uapi/linux/netfilter/nf_tables.h

and then, bestie, the entire extended family. we're listing every single one because nobody gets left behind at this function πŸ’œ:

  • enum nft_verdicts(9)
  • enum nf_tables_msg_types(9)
  • enum nft_list_attributes(9)
  • enum nft_hook_attributes(9)
  • enum nft_table_flags(9)
  • enum nft_table_attributes(9)
  • enum nft_chain_attributes(9)
  • enum nft_rule_attributes(9)
  • enum nft_rule_compat_flags(9)
  • enum nft_rule_compat_attributes(9)
  • enum nft_set_flags(9)
  • enum nft_set_policies(9)
  • enum nft_set_desc_attributes(9)
  • enum nft_set_field_attributes(9)
  • enum nft_set_attributes(9)
  • enum nft_set_elem_flags(9)
  • enum nft_set_elem_attributes(9)
  • enum nft_set_elem_list_attributes(9)
  • enum nft_data_types(9)
  • enum nft_data_attributes(9)
  • enum nft_verdict_attributes(9)
  • enum nft_expr_attributes(9)
  • enum nft_immediate_attributes(9)
  • enum nft_bitwise_ops(9)
  • enum nft_bitwise_attributes(9)
  • enum nft_byteorder_ops(9)
  • enum nft_byteorder_attributes(9)
  • enum nft_cmp_ops(9)
  • enum nft_cmp_attributes(9)
  • enum nft_range_ops(9)
  • enum nft_range_attributes(9)
  • enum nft_lookup_attributes(9)
  • enum nft_dynset_attributes(9)
  • enum nft_payload_bases(9)
  • enum nft_payload_csum_types(9)
  • enum nft_payload_attributes(9)
  • enum nft_exthdr_op(9)
  • enum nft_exthdr_attributes(9)
  • enum nft_meta_keys(9)
  • enum nft_rt_keys(9)
  • enum nft_hash_types(9)
  • enum nft_hash_attributes(9)
  • enum nft_meta_attributes(9)
  • enum nft_rt_attributes(9)
  • enum nft_socket_attributes(9)
  • enum nft_ct_keys(9)
  • enum nft_ct_attributes(9)
  • enum nft_offload_attributes(9)
  • enum nft_limit_attributes(9)
  • enum nft_connlimit_attributes(9)
  • enum nft_counter_attributes(9)
  • enum nft_last_attributes(9)
  • enum nft_log_attributes(9)
  • enum nft_log_level(9)
  • enum nft_queue_attributes(9)
  • enum nft_quota_attributes(9)
  • enum nft_secmark_attributes(9)
  • enum nft_reject_types(9)
  • enum nft_reject_inet_code(9)
  • enum nft_reject_attributes(9)
  • enum nft_nat_types(9)
  • enum nft_nat_attributes(9)
  • enum nft_tproxy_attributes(9)
  • enum nft_masq_attributes(9)
  • enum nft_redir_attributes(9)
  • enum nft_dup_attributes(9)
  • enum nft_fwd_attributes(9)
  • enum nft_objref_attributes(9)
  • enum nft_gen_attributes(9)
  • enum nft_object_attributes(9)
  • enum nft_flowtable_flags(9)
  • enum nft_flowtable_attributes(9)
  • enum nft_flowtable_hook_attributes(9)
  • enum nft_osf_attributes(9)
  • enum nft_synproxy_attributes(9)
  • enum nft_devices_attributes(9)
  • enum nft_trace_attributes(9)
  • enum nft_ng_attributes(9)

and that's the whole page, bestie. go forth and address your registers correctly. πŸ’œ

mwah πŸ’‹ β€” this lil recap comes to you from ./include/uapi/linux/netfilter, dated October 2026. see you in the next manpage, ily πŸŽ€βœ¨

πŸ“¦ where this page comes from