ENUM OVS_PACKET_ATTR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… enum ovs_packet_attr β€” the Kernel API Manual moment ✨

okay so bestie, welcome to the enum ovs_packet_attr(9) page β€” it's the one all about the attributes for %OVS_PACKET_* commands. lowkey iconic, highkey essential. let's get into it 🫢


🌸 SYNOPSIS 🌸

enum ovs_packet_attr {
    OVS_PACKET_ATTR_PACKET ,
    OVS_PACKET_ATTR_KEY ,
    OVS_PACKET_ATTR_ACTIONS ,
    OVS_PACKET_ATTR_USERDATA ,
    OVS_PACKET_ATTR_EGRESS_TUN_KEY ,
    OVS_PACKET_ATTR_PROBE ,
    OVS_PACKET_ATTR_MRU ,
    OVS_PACKET_ATTR_LEN ,
    OVS_PACKET_ATTR_HASH ,
    OVS_PACKET_ATTR_UPCALL_PID

};

πŸŽ€ Constants πŸŽ€

  • OVS_PACKET_ATTR_PACKET β€” the main character πŸ’« present for all notifications, no cap. it holds the entire packet as received, from the start of the Ethernet header onward. and like, for OVS_PACKET_CMD_ACTION, OVS_PACKET_ATTR_PACKET reflects changes made by actions preceding OVS_ACTION_ATTR_USERSPACE, but OVS_PACKET_ATTR_KEY is the flow key extracted from the packet as originally received. so they're giving two different energies, periodt.
  • OVS_PACKET_ATTR_KEY β€” also present for all notifications πŸ—οΈ contains the flow key extracted from the packet as nested OVS_KEY_ATTR_* attributes. this lets userspace adapt its flow setup strategy by comparing its notion of the flow key against the kernel's. it's giving vibe check between userspace and kernel, iykyk.
  • OVS_PACKET_ATTR_ACTIONS β€” contains actions for the packet 🎬 used for OVS_PACKET_CMD_EXECUTE, and it has nested OVS_ACTION_ATTR_* attributes. also used in upcall when OVS_ACTION_ATTR_USERSPACE has the optional OVS_USERSPACE_ATTR_ACTIONS attribute. multitasking queen.
  • OVS_PACKET_ATTR_USERDATA β€” present for an OVS_PACKET_CMD_ACTION notification if the OVS_ACTION_ATTR_USERSPACE action specified an OVS_USERSPACE_ATTR_USERDATA attribute, with the same length and content specified there πŸ“ literally same length, same content, matching set.
  • OVS_PACKET_ATTR_EGRESS_TUN_KEY β€” present for an OVS_PACKET_CMD_ACTION notification if the OVS_ACTION_ATTR_USERSPACE action specified an OVS_USERSPACE_ATTR_EGRESS_TUN_PORT attribute β€” which is sent only if the output port is actually a tunnel port πŸš‡ contains the output tunnel key extracted from the packet as nested OVS_TUNNEL_KEY_ATTR_* attributes. conditional queen.
  • OVS_PACKET_ATTR_PROBE β€” packet operation is a feature probe πŸ” just out here checking the vibes.
  • OVS_PACKET_ATTR_MRU β€” present for an OVS_PACKET_CMD_ACTION and
  • OVS_PACKET_ATTR_LEN β€” packet size before truncation πŸ“ the OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment size.
  • OVS_PACKET_ATTR_HASH β€” packet hash info (e.g. hash, sw_hash and l4_hash in skb) πŸ”₯
  • OVS_PACKET_ATTR_UPCALL_PID β€” Netlink PID to use for upcalls while processing OVS_PACKET_CMD_EXECUTE πŸ‘‘ takes precedence over all other ways to determine the Netlink PID, including OVS_USERSPACE_ATTR_PID, OVS_DP_ATTR_UPCALL_PID, OVS_DP_ATTR_PER_CPU_PIDS and the OVS_VPORT_ATTR_UPCALL_PID. main character energy fr fr, everybody else is supporting cast.

πŸ¦‹ Description πŸ¦‹

these attributes follow the struct ovs_header within the Generic Netlink payload for OVS_PACKET_* commands πŸ’– so like, they know their place and their place is right after struct ovs_header.


✨ SEE ALSO ✨

  • Kernel file ./include/uapi/linux/openvswitch.h
  • struct ovs_header(9)
  • enum ovs_datapath_attr(9)
  • enum ovs_vport_type(9)
  • enum ovs_vport_attr(9)
  • enum ovs_vport_upcall_attr(9)
  • enum ovs_frag_type(9)
  • enum ovs_flow_attr(9)
  • enum ovs_sample_attr(9)
  • enum ovs_userspace_attr(9)
  • struct ovs_action_push_mpls(9)
  • struct ovs_action_add_mpls(9)
  • struct ovs_action_push_vlan(9)
  • enum ovs_ct_attr(9)
  • enum ovs_nat_attr(9)
  • struct ovs_action_push_eth(9)
  • enum ovs_check_pkt_len_attr(9)
  • enum ovs_psample_attr(9)
  • enum ovs_action_attr(9)

and that's the whole page, bestie, you ate that πŸ’… mwah πŸ’‹

sign-off szn: this lil masterpiece lives in ./include/uapi/linux, dated October 2026, and it's literally the enum ovs_packet_attr(9) page from the Kernel API Manual 🌈⭐ go forth and slay πŸŽ€πŸ’œ

πŸ“¦ where this page comes from