programs: allow program names to be static strings

reviewable/pr1212/r1
Tamir Duberstein 1 week ago
parent 73a34e1571
commit 22c8f783e7

@ -519,11 +519,7 @@ impl<'a> EbpfLoader<'a> {
.map(|(name, prog_obj)| { .map(|(name, prog_obj)| {
let function_obj = obj.functions.get(&prog_obj.function_key()).unwrap().clone(); let function_obj = obj.functions.get(&prog_obj.function_key()).unwrap().clone();
let prog_name = if FEATURES.bpf_name() { let prog_name = FEATURES.bpf_name().then(|| name.clone().into());
Some(name.clone())
} else {
None
};
let section = prog_obj.section.clone(); let section = prog_obj.section.clone();
let obj = (prog_obj, function_obj); let obj = (prog_obj, function_obj);

@ -71,6 +71,7 @@ pub mod uprobe;
pub mod xdp; pub mod xdp;
use std::{ use std::{
borrow::Cow,
ffi::CString, ffi::CString,
io, io,
os::fd::{AsFd, BorrowedFd}, os::fd::{AsFd, BorrowedFd},
@ -493,7 +494,7 @@ impl Program {
#[derive(Debug)] #[derive(Debug)]
pub(crate) struct ProgramData<T: Link> { pub(crate) struct ProgramData<T: Link> {
pub(crate) name: Option<String>, pub(crate) name: Option<Cow<'static, str>>,
pub(crate) obj: Option<(aya_obj::Program, aya_obj::Function)>, pub(crate) obj: Option<(aya_obj::Program, aya_obj::Function)>,
pub(crate) fd: Option<ProgramFd>, pub(crate) fd: Option<ProgramFd>,
pub(crate) links: Links<T>, pub(crate) links: Links<T>,
@ -509,7 +510,7 @@ pub(crate) struct ProgramData<T: Link> {
impl<T: Link> ProgramData<T> { impl<T: Link> ProgramData<T> {
pub(crate) fn new( pub(crate) fn new(
name: Option<String>, name: Option<Cow<'static, str>>,
obj: (aya_obj::Program, aya_obj::Function), obj: (aya_obj::Program, aya_obj::Function),
btf_fd: Option<Arc<crate::MockableFd>>, btf_fd: Option<Arc<crate::MockableFd>>,
verifier_log_level: VerifierLogLevel, verifier_log_level: VerifierLogLevel,
@ -531,7 +532,7 @@ impl<T: Link> ProgramData<T> {
} }
pub(crate) fn from_bpf_prog_info( pub(crate) fn from_bpf_prog_info(
name: Option<String>, name: Option<Cow<'static, str>>,
fd: crate::MockableFd, fd: crate::MockableFd,
path: &Path, path: &Path,
info: bpf_prog_info, info: bpf_prog_info,
@ -576,7 +577,7 @@ impl<T: Link> ProgramData<T> {
})?; })?;
let info = ProgramInfo::new_from_fd(fd.as_fd())?; let info = ProgramInfo::new_from_fd(fd.as_fd())?;
let name = info.name_as_str().map(|s| s.to_string()); let name = info.name_as_str().map(ToOwned::to_owned).map(Into::into);
Self::from_bpf_prog_info(name, fd, path.as_ref(), info.0, verifier_log_level) Self::from_bpf_prog_info(name, fd, path.as_ref(), info.0, verifier_log_level)
} }
} }

Loading…
Cancel
Save