STRUCT DP_UPCALL_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct dp_upcall_info(9) β€” the kernel API manual, bestie edition πŸŽ€

okay so this page lives in the Kernel API Manual, section 9, and it's all about struct dp_upcall_info β€” the little bundle of metadata that rides along with a packet when the datapath sends it up to userspace. it's giving "message with a really cute cover letter" ngl ✨


🌸 NAME 🌸

struct dp_upcall_info β€” metadata to include with a packet sent to userspace


✨ SYNOPSIS ✨

struct dp_upcall_info {
    struct ip_tunnel_info *egress_tun_info;
    const struct nlattr *userdata;
    const struct nlattr *actions;
    int actions_len;
    u32 portid;
    u8 cmd;
    u16 mru;
 };

like, that's the whole struct. seven fields. every single one of them matters, so let's go field by field, no skipping πŸ™ˆ


πŸ¦‹ MEMBERS πŸ¦‹

  • egress_tun_info β€” if it's nonnull, it becomes OVS_PACKET_ATTR_EGRESS_TUN_KEY. iconic behavior honestly πŸ‘‘
  • userdata β€” if it's nonnull, its variable-length value gets passed to userspace as OVS_PACKET_ATTR_USERDATA. variable-length meaning it's whatever size it needs to be, not fixed πŸ’…
  • actions β€” if it's nonnull, its variable-length value gets passed to userspace as OVS_PACKET_ATTR_ACTIONS. same variable-length deal πŸŽ€
  • actions_len β€” the length of the actions. that's it, that's the field. it pairs with actions like the bestie duo they are 🫢
  • portid β€” the netlink portid to which the packet should be sent. and here's the important bit, so listen up: if portid is 0 then no packet is sent and the packet is accounted in the datapath's n_lost counter. fr fr, zero means it goes nowhere and gets counted as lost 😭
  • cmd β€” one of OVS_PACKET_CMD_*. that's the whole range, pick from there ⭐
  • mru β€” if not zero, Maximum received IP fragment size. highkey useful when it's set, and when it's 0... it's not set 🌈

πŸ”₯ SEE ALSO πŸ”₯

kernel file ./net/openvswitch/datapath.h plus these absolute legends:

  • struct dp_stats_percpu(9)
  • struct dp_nlsk_pids(9)
  • struct datapath(9)
  • struct ovs_skb_cb(9)
  • struct ovs_net(9)
  • enum ovs_pkt_hash_types(9)

okay that's the page!! mwah πŸ’‹ this one comes from ./net/openvswitch, dated October 2026, and it's literally titled struct dp_upcall_info(9) β€” go forth and upcall responsibly, bestie πŸ§šπŸ’œ

πŸ“¦ where this page comes from