STRUCT DEVLINK_DPIPE_TABLE_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so picture this: you're deep in the Kernel API Manual and you stumble on struct devlink_dpipe_table_ops. that's the whole vibe of this page. it's a struct, it's full of function pointers, and it's genuinely so important. let's get into it 🫢


✨ NAME ✨

struct devlink_dpipe_table_ops β€” literally the dpipe_table ops. that's it, that's the name, no notes πŸ’…


🌸 SYNOPSIS 🌸

here's the struct in all its glory, copy-pasted exactly so you don't have to squint at the original:

struct devlink_dpipe_table_ops {
    int (*actions_dump)(void *priv, struct sk_buff *skb);
    int (*matches_dump)(void *priv, struct sk_buff *skb);
    int (*entries_dump)(void *priv, bool counters_enabled, struct
devlink_dpipe_dump_ctx *dump_ctx);
    int (*counters_set_update)(void *priv, bool enable);
    u64 (*size_get)(void *priv);
 };

like, look at those function pointers. main character energy honestly πŸ‘‘


πŸŽ€ Members πŸŽ€

okay so here's the roster, member by member. no skipping, we're doing all five:

  • actions_dump β€” int (*actions_dump)(void *priv, struct sk_buff *skb); β€” this one dumps all the table's actions. all of them. every single one πŸ’–
  • matches_dump β€” int (*matches_dump)(void *priv, struct sk_buff *skb); β€” and this one dumps all the table's matches. yes it's the sibling of the one above, they're a matched set, iykyk ✨
  • entries_dump β€” int (*entries_dump)(void *priv, bool counters_enabled, struct devlink_dpipe_dump_ctx *dump_ctx); β€” this bad boy dumps all the active entries in the table. active only, bestie, we're not lugging around the inactive ones πŸ¦‹
  • counters_set_update β€” int (*counters_set_update)(void *priv, bool enable); β€” so when you're changing the counter status, the hardware sync maybe needs to happen, because it might need to allocate or free counter-related resources. note the "maybe" β€” that's the kernel being mysterious, not me πŸ™ˆ
  • size_get β€” u64 (*size_get)(void *priv); β€” gets the size. simple. iconic. does exactly what it says on the tin πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

okay this list is LONG and i respect it. everything here lives in the Kernel file ./include/net/devlink.h, and then it's a whole friend group:

  • struct devlink_port_pci_pf_attrs(9)
  • struct devlink_port_pci_vf_attrs(9)
  • struct devlink_port_pci_sf_attrs(9)
  • struct devlink_port_attrs(9)
  • struct devlink_linecard_ops(9)
  • struct devlink_dpipe_field(9)
  • struct devlink_dpipe_header(9)
  • struct devlink_dpipe_match(9)
  • struct devlink_dpipe_action(9)
  • struct devlink_dpipe_value(9)
  • struct devlink_dpipe_entry(9)
  • struct devlink_dpipe_dump_ctx(9)
  • struct devlink_dpipe_table(9)
  • struct devlink_dpipe_headers(9)
  • struct devlink_resource_size_params(9)
  • struct devlink_flash_notify(9)
  • struct devlink_param(9)
  • struct devlink_flash_update_params(9)
  • struct devlink_region_ops(9)
  • struct devlink_port_region_ops(9)
  • struct devlink_health_reporter_ops(9)
  • struct devlink_trap_metadata(9)
  • struct devlink_trap_policer(9)
  • struct devlink_trap_group(9)
  • struct devlink_trap(9)
  • struct devlink_port_ops(9)

like, that's the whole group chat. go say hi to all of them πŸ’œ


that's the page, bestie! 🧚

this one came from ./include/net, dated October 2026, and it's filed under struct devli...pe_table_ops(9) because even the manpage headers get truncated sometimes 😭 slay πŸ’…
πŸ“¦ where this page comes from