Struct libbpf_rs::OpenProgram
source · pub struct OpenProgram { /* 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 OpenProgram
impl OpenProgram
pub fn set_prog_type(&mut self, prog_type: ProgramType)
pub fn prog_type(&self) -> ProgramType
pub fn set_attach_type(&mut self, attach_type: ProgramAttachType)
pub fn set_ifindex(&mut self, idx: u32)
sourcepub fn set_log_level(&mut self, log_level: u32) -> Result<()>
pub fn set_log_level(&mut self, log_level: u32) -> Result<()>
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.
sourcepub fn set_autoload(&mut self, autoload: bool) -> Result<()>
pub fn set_autoload(&mut self, autoload: bool) -> Result<()>
Set whether a bpf program should be automatically loaded by default when the bpf object is loaded.
pub fn set_attach_target( &mut self, attach_prog_fd: i32, attach_func_name: Option<String>, ) -> Result<()>
pub fn set_flags(&self, flags: u32) -> Result<()>
sourcepub fn insn_cnt(&self) -> usize
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.
sourcepub fn insns(&self) -> &[bpf_insn]
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 AsRawLibbpf for OpenProgram
impl AsRawLibbpf for OpenProgram
source§fn as_libbpf_object(&self) -> NonNull<Self::LibbpfType>
fn as_libbpf_object(&self) -> NonNull<Self::LibbpfType>
Retrieve the underlying libbpf_sys::bpf_program
.
§type LibbpfType = bpf_program
type LibbpfType = bpf_program
libbpf
type.