Crate redbpf_macros

Source
Expand description

Procedural macros to help writing eBPF programs using the redbpf-probes crate.

§Overview

redbpf-macros is part of the redbpf project. Together with redbpf-probes, it provides an idiomatic Rust API to write programs that can be compiled to eBPF bytecode and executed by the linux in-kernel eBPF virtual machine.

To streamline the process of working with eBPF programs even further, redbpf also provides cargo-bpf - a cargo subcommand to simplify creating and building eBPF programs.

§Example

#![no_std]
#![no_main]
use redbpf_probes::xdp::prelude::*;

// configure kernel version compatibility and license
program!(0xFFFFFFFE, "GPL");

#[xdp]
fn example_xdp_probe(ctx: XdpContext) -> XdpResult {

    // do something here

    Ok(XdpAction::Pass)
}

Macros§

Attribute Macros§

  • Attribute macro that must be used to define kprobes.
  • Attribute macro that must be used to define kretprobes.
  • Attribute macro that must be used when creating eBPF maps.
  • Attribute macro that must be used to define socket filter probes.
  • Attribute macro for defining BPF programs of stream parsers. A sockmap can be attached to the stream parser. The role of stream parsers is to find a message boundary of TCP stream and return the length of a message. If it returns proper length of a message then a stream verdict BPF program will be called.
  • Attribute macro for defining BPF programs of stream verdicts. A sockmap can be attached to the stream verdict. The role of stream verdicts is to predicate to which socket a message should be redirected.
  • Attribute macro for defining a BPF iterator of task
  • Attribute macro that must be used to define uprobes.
  • Attribute macro that must be used to define uretprobes.
  • Attribute macro that must be used to define XDP probes.