__libeth_xdp_run_prog(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ NAME

__libeth_xdp_run_prog β€” bestie, it runs an XDP program on an XDP buffer ✨ (this is from the Kernel API Manual, for the record)

🌸 SYNOPSIS

u32 __libeth_xdp_run_prog (struct libeth_xdp_buff *xdp , const struct
libeth_xdp_tx_bulk *bq );

πŸŽ€ ARGUMENTS

  • xdp β€” the XDP buffer you're running the prog on. that's the main character of this whole thing πŸ’…
  • bq β€” the buffer bulk used for `XDP_TX` queueing 🫢

πŸ’– DESCRIPTION

Okay so this one is an internal inline abstraction whose entire job is to run the XDP program. It handles `XDP_DROP` and `XDP_REDIRECT` only β€” everything else gets processed levels up, no cap. πŸ™ˆ

Also, on errors it reports an XDP prog exception. So like, it will tell on you, but lovingly. 😭

⭐ RETURN

Returns the libeth_xdp prog verdict, depending on the prog's verdict. Yes bestie, the verdict decides the verdict β€” it's giving "the vibes decide the vibes" but make it kernel code πŸ”₯

🧚 SEE ALSO

Kernel file ./include/net/libeth/xdp.h, plus literally this whole friend group:

struct libeth_xdp_buff(9), __LIBETH_XDP_ONSTACK_BUFF(9), LIBETH_XDP_ONSTACK_BUFF(9), libeth_xdpsq_num(9), libeth_xdpsq_shared(9), libeth_xdpsq_id(9), libeth_xdpsq_get(9), libeth_xdpsq_put(9), libeth_xdpsq_lock(9), libeth_xdpsq_unlock(9), libeth_xdpsq_deinit_timer(9), libeth_xdpsq_queue_timer(9), libeth_xdpsq_run_timer(9), enum (anonymous)(9), enum (anonymous)(9), struct libeth_xdp_tx_frame(9), struct libeth_xdp_tx_bulk(9), LIBETH_XDP_ONSTACK_BULK(9), struct libeth_xdpsq(9), struct libeth_xdp_tx_desc(9)

libeth_xdp_ptr_to_priv(9), libeth_xdp_priv_to_ptr(9), libeth_xdp_tx_xmit_bulk(9), libeth_xdp_tx_queue_head(9), libeth_xdp_tx_queue_frag(9), libeth_xdp_tx_queue_bulk(9), libeth_xdp_tx_fill_stats(9), libeth_xdp_tx_fill_buf(9), __libeth_xdp_tx_flush_bulk(9), libeth_xdp_tx_flush_bulk(9), libeth_xdp_xmit_init_bulk(9), libeth_xdp_xmit_frame_dma(9), libeth_xdp_xmit_queue_head(9), libeth_xdp_xmit_queue_frag(9), libeth_xdp_xmit_queue_bulk(9), libeth_xdp_xmit_fill_buf(9), libeth_xdp_xmit_flush_bulk(9), __libeth_xdp_xmit_do_bulk(9), libeth_xdp_xmit_do_bulk(9), libeth_xdp_tx_init_bulk(9)

libeth_xdp_init_buff(9), libeth_xdp_save_buff(9), libeth_xdp_return_stash(9), libeth_xdp_return_buff(9), libeth_xdp_prepare_buff(9), libeth_xdp_process_buff(9), libeth_xdp_buff_stats_frags(9), __libeth_xdp_run_flush(9), libeth_xdp_run_prog(9), __libeth_xdp_run_pass(9), libeth_xdp_run_pass(9), libeth_xdp_finalize_rx(9), LIBETH_XDP_DEFINE_TIMER(9), LIBETH_XDP_DEFINE_FLUSH_TX(9), LIBETH_XDP_DEFINE_FLUSH_XMIT(9), LIBETH_XDP_DEFINE_RUN_PROG(9), LIBETH_XDP_DEFINE_RUN_PASS(9), LIBETH_XDP_DEFINE_RUN(9), LIBETH_XDP_DEFINE_FINALIZE(9)

libeth_xdp_buff_to_rq(9), libeth_xdpmo_rx_hash(9), __libeth_xdp_complete_tx(9), libeth_xdp_set_features(9), libeth_xdp_set_features_noredir(9)

(iykyk πŸ’œ)


slay, that's the whole page πŸŽ€ it lives in ./include/net/libeth, the date on it is October 2026, and it's filed under __libeth_xdp_run_prog(9). go be iconic with your XDP progs, bestie πŸ’…πŸŒŸ

πŸ“¦ where this page comes from