libbpf_rs

Struct OpenProgramImpl

Source
pub struct OpenProgramImpl<'obj, T = ()> { /* private fields */ }
Expand description

Represents a parsed but not yet loaded BPF program.

This object exposes operations that need to happen before the program is loaded.

Implementations§

Source§

impl<'obj> OpenProgramImpl<'obj>

Source

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

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

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.

Source§

impl<'obj> OpenProgramImpl<'obj, Mut>

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.

Trait Implementations§

Source§

impl<T> AsRawLibbpf for OpenProgramImpl<'_, T>

Source§

fn as_libbpf_object(&self) -> NonNull<Self::LibbpfType>

Retrieve the underlying libbpf_sys::bpf_program.

Source§

type LibbpfType = bpf_program

The underlying libbpf type.
Source§

impl<'obj, T: Debug> Debug for OpenProgramImpl<'obj, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'obj, T> Freeze for OpenProgramImpl<'obj, T>

§

impl<'obj, T> RefUnwindSafe for OpenProgramImpl<'obj, T>
where T: RefUnwindSafe,

§

impl<'obj, T = ()> !Send for OpenProgramImpl<'obj, T>

§

impl<'obj, T = ()> !Sync for OpenProgramImpl<'obj, T>

§

impl<'obj, T> Unpin for OpenProgramImpl<'obj, T>

§

impl<'obj, T> UnwindSafe for OpenProgramImpl<'obj, T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.