libbpf_rs

Type Alias OpenProgramMut

Source
pub type OpenProgramMut<'obj> = OpenProgramImpl<'obj, Mut>;
Expand description

A mutable parsed but not yet loaded BPF program.

Aliased Type§

struct OpenProgramMut<'obj> { /* private fields */ }

Implementations§

Source§

impl<'obj> OpenProgramMut<'obj>

Source

pub fn new_mut(prog: &'obj mut bpf_program) -> Self

Create a new OpenProgram from a ptr to a libbpf_sys::bpf_program.

Source

pub fn set_prog_type(&mut self, prog_type: ProgramType)

Set the program type.

Source

pub fn set_attach_type(&mut self, attach_type: ProgramAttachType)

Set the attachment type of the program.

Source

pub fn set_ifindex(&mut self, idx: u32)

Bind the program to a particular network device.

Currently only used for hardware offload and certain XDP features such like HW metadata.

Source

pub fn set_log_level(&mut self, log_level: u32)

Set the log level for the bpf program.

The log level is interpreted by bpf kernel code and interpretation may change with newer kernel versions. Refer to the kernel source code for details.

In general, a value of 0 disables logging while values > 0 enables it.

Source

pub fn set_autoload(&mut self, autoload: bool)

Set whether a bpf program should be automatically loaded by default when the bpf object is loaded.

Source

pub fn set_attach_target( &mut self, attach_prog_fd: i32, attach_func_name: Option<String>, ) -> Result<()>

Source

pub fn set_flags(&mut self, flags: u32)

Set flags on the program.

Methods from Deref<Target = OpenProgram<'obj>>§

Source

pub fn prog_type(&self) -> ProgramType

The ProgramType of this OpenProgram.

Source

pub fn name(&self) -> &OsStr

Retrieve the name of this OpenProgram.

Source

pub fn section(&self) -> &OsStr

Retrieve the name of the section this OpenProgram belongs to.

Source

pub fn insn_cnt(&self) -> usize

Returns the number of instructions that form the program.

Note: Keep in mind, libbpf can modify the program’s instructions and consequently its instruction count, as it processes the BPF object file. So OpenProgram::insn_cnt and Program::insn_cnt may return different values.

Source

pub fn insns(&self) -> &[bpf_insn]

Gives read-only access to BPF program’s underlying BPF instructions.

Keep in mind, libbpf can modify and append/delete BPF program’s instructions as it processes BPF object file and prepares everything for uploading into the kernel. So OpenProgram::insns and Program::insns may return different sets of instructions. As an example, during BPF object load phase BPF program instructions will be CO-RE-relocated, BPF subprograms instructions will be appended, ldimm64 instructions will have FDs embedded, etc. So instructions returned before load and after it might be quite different.

Trait Implementations§

Source§

impl<'obj> Deref for OpenProgramMut<'obj>

Source§

type Target = OpenProgramImpl<'obj>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.