|
|
@ -88,7 +88,7 @@ pub use xdp::{Xdp, XdpError, XdpFlags};
|
|
|
|
use crate::{
|
|
|
|
use crate::{
|
|
|
|
generated::{bpf_attach_type, bpf_prog_info, bpf_prog_type},
|
|
|
|
generated::{bpf_attach_type, bpf_prog_info, bpf_prog_type},
|
|
|
|
maps::MapError,
|
|
|
|
maps::MapError,
|
|
|
|
obj::{self, Function},
|
|
|
|
obj::{self, Function, KernelVersion},
|
|
|
|
sys::{bpf_load_program, bpf_pin_object, bpf_prog_detach, bpf_prog_query, BpfLoadProgramAttrs},
|
|
|
|
sys::{bpf_load_program, bpf_pin_object, bpf_prog_detach, bpf_prog_query, BpfLoadProgramAttrs},
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -397,6 +397,14 @@ fn load_program(prog_type: bpf_prog_type, data: &mut ProgramData) -> Result<(),
|
|
|
|
..
|
|
|
|
..
|
|
|
|
} = obj;
|
|
|
|
} = obj;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let target_kernel_version = match *kernel_version {
|
|
|
|
|
|
|
|
KernelVersion::Any => {
|
|
|
|
|
|
|
|
let (major, minor, patch) = crate::sys::kernel_version().unwrap();
|
|
|
|
|
|
|
|
(major << 16) + (minor << 8) + patch
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
_ => (*kernel_version).into(),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
let mut log_buf = VerifierLog::new();
|
|
|
|
let mut log_buf = VerifierLog::new();
|
|
|
|
let mut retries = 0;
|
|
|
|
let mut retries = 0;
|
|
|
|
let mut ret;
|
|
|
|
let mut ret;
|
|
|
@ -405,7 +413,7 @@ fn load_program(prog_type: bpf_prog_type, data: &mut ProgramData) -> Result<(),
|
|
|
|
ty: prog_type,
|
|
|
|
ty: prog_type,
|
|
|
|
insns: instructions,
|
|
|
|
insns: instructions,
|
|
|
|
license,
|
|
|
|
license,
|
|
|
|
kernel_version: (*kernel_version).into(),
|
|
|
|
kernel_version: target_kernel_version,
|
|
|
|
expected_attach_type: data.expected_attach_type,
|
|
|
|
expected_attach_type: data.expected_attach_type,
|
|
|
|
attach_btf_obj_fd: data.attach_btf_obj_fd,
|
|
|
|
attach_btf_obj_fd: data.attach_btf_obj_fd,
|
|
|
|
attach_btf_id: data.attach_btf_id,
|
|
|
|
attach_btf_id: data.attach_btf_id,
|
|
|
|