ENUM NFT_HASH_ATTRIBUTES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… enum nft_hash_attributes(9) β€” Kernel API Manual ✨

okay bestie, so this is a Kernel API Manual page for <pink>enum nft_hash_attributes</pink> β€” literally the netlink attribute list for the nf_tables hash expression. It's giving "small enum, big responsibilities" πŸŽ€ and ngl, once you know these ten-ish constants you're basically lowkey fluent in how nftables talks about hashing over netlink. iykyk πŸ’–


🌸 NAME 🌸

enum nft_hash_attributes β€” the netlink attributes for the nf_tables hash expression. that's it, that's the whole vibe πŸ¦‹


✨ SYNOPSIS ✨

enum nft_hash_attributes {
    NFTA_HASH_UNSPEC ,
    NFTA_HASH_SREG ,
    NFTA_HASH_DREG ,
    NFTA_HASH_LEN ,
    NFTA_HASH_MODULUS ,
    NFTA_HASH_SEED ,
    NFTA_HASH_OFFSET ,
    NFTA_HASH_TYPE ,
    NFTA_HASH_SET_NAME ,
    NFTA_HASH_SET_ID ,
    __NFTA_HASH_MAX

};

like, look at her go 🫢 β€” ten real members plus the bookends. copy this exactly, no cap, no renaming, no "fixing" the spacing πŸ’€


🧚 CONSTANTS 🧚

okay here's the roster, one by one, and yes i'm keeping every single one because that's the whole point bestie:

  • NFTA_HASH_UNSPEC β€” honestly? -- undescribed --. the manpage just leaves it blank 😭 it's the unspecified placeholder, that's all we're told.
  • NFTA_HASH_SREG β€” source register, and the type is NLA_U32 πŸ’œ
  • NFTA_HASH_DREG β€” destination register, type NLA_U32 ✨
  • NFTA_HASH_LEN β€” source data length, type NLA_U32 πŸ“
  • NFTA_HASH_MODULUS β€” modulus value, type NLA_U32 🌸
  • NFTA_HASH_SEED β€” seed value, type NLA_U32 🌈
  • NFTA_HASH_OFFSET β€” add this offset value to the hash result, type NLA_U32 πŸ”₯ (yes, "add this offset to your hash result" β€” that's the actual description, obsessed)
  • NFTA_HASH_TYPE β€” hash operation, type NLA_U32: nft_hash_types πŸ‘‘
  • NFTA_HASH_SET_NAME β€” name of the map to lookup, type NLA_STRING πŸŽ€
  • NFTA_HASH_SET_ID β€” id of the map, type NLA_U32 ⭐
  • __NFTA_HASH_MAX β€” again, -- undescribed --. it's the internal sentinel-end-of-list situation, and the page does not elaborate, so neither will i πŸ™ˆ
lowkey important: those NLA_U32 / NLA_STRING bits in the parentheses are the attribute types, and NFTA_HASH_TYPE points at nft_hash_types β€” keep them exactly as written, fr fr πŸ’…

πŸ’€ SEE ALSO πŸ’€

the main character file itself lives at ./include/uapi/linux/netfilter/nf_tables.h β€” go read it, it's the source of truth ✨ and then there's the extended friend group, aka basically every other nf_tables enum existing. say hi πŸ‘‹:

  • enum nft_registers(9), 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_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)

like... that's the whole netfilter friend group in one SEE ALSO section, iconic behavior honestly πŸ‘‘


and that's the page bestie!! 🫢 source: ./include/uapi/linux/netfilter, dated October 2026 β€” mwah, go hash something responsibly πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from