Merge pull request #720 from dave-tucker/programsection-noname

aya-obj: Remove name from ProgramSection
reviewable/pr709/r3
Dave Tucker 1 year ago committed by GitHub
commit e9153792f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -188,35 +188,6 @@ pub struct Function {
///
/// [Program Types and ELF Sections]: https://docs.kernel.org/bpf/libbpf/program_types.html
///
/// ## Program Name
///
/// Each section name is parsed into a section type and a program name.
///
/// Generally speaking,
/// - if the section name does not contain any slashes,
/// then the program name is just that section name;
/// - if there are some slashes, the name is `section_name.rsplitn(2, '/')[0]`,
/// - except for tracepoint programs, for which the name is
/// `section_name.splitn(2, '/')[1]`.
///
/// ```rust
/// use aya_obj::ProgramSection;
/// use std::str::FromStr;
///
/// assert_eq!(
/// ProgramSection::from_str("kprobe/do_unlinkat")
/// .unwrap().name(),
/// "do_unlinkat",
/// );
/// assert_eq!(
/// ProgramSection::from_str("tracepoint/syscalls/sys_enter_openat")
/// .unwrap().name(),
/// "syscalls/sys_enter_openat",
/// );
/// ```
///
/// The program name will be used in [Object] as references to each program.
///
/// # Unsupported Sections
///
/// Currently, the following section names are not supported yet:
@ -238,139 +209,53 @@ pub struct Function {
#[derive(Debug, Clone)]
#[allow(missing_docs)]
pub enum ProgramSection {
KRetProbe {
name: String,
},
KProbe {
name: String,
},
KRetProbe,
KProbe,
UProbe {
name: String,
sleepable: bool,
},
URetProbe {
name: String,
sleepable: bool,
},
TracePoint {
name: String,
},
SocketFilter {
name: String,
},
TracePoint,
SocketFilter,
Xdp {
name: String,
frags: bool,
},
SkMsg {
name: String,
},
SkSkbStreamParser {
name: String,
},
SkSkbStreamVerdict {
name: String,
},
SockOps {
name: String,
},
SchedClassifier {
name: String,
},
CgroupSkb {
name: String,
},
CgroupSkbIngress {
name: String,
},
CgroupSkbEgress {
name: String,
},
SkMsg,
SkSkbStreamParser,
SkSkbStreamVerdict,
SockOps,
SchedClassifier,
CgroupSkb,
CgroupSkbIngress,
CgroupSkbEgress,
CgroupSockAddr {
name: String,
attach_type: CgroupSockAddrAttachType,
},
CgroupSysctl {
name: String,
},
CgroupSysctl,
CgroupSockopt {
name: String,
attach_type: CgroupSockoptAttachType,
},
LircMode2 {
name: String,
},
PerfEvent {
name: String,
},
RawTracePoint {
name: String,
},
LircMode2,
PerfEvent,
RawTracePoint,
Lsm {
name: String,
sleepable: bool,
},
BtfTracePoint {
name: String,
},
BtfTracePoint,
FEntry {
name: String,
sleepable: bool,
},
FExit {
name: String,
sleepable: bool,
},
Extension {
name: String,
},
SkLookup {
name: String,
},
Extension,
SkLookup,
CgroupSock {
name: String,
attach_type: CgroupSockAttachType,
},
CgroupDevice {
name: String,
},
}
impl ProgramSection {
/// Returns the program name
pub fn name(&self) -> &str {
match self {
ProgramSection::KRetProbe { name } => name,
ProgramSection::KProbe { name } => name,
ProgramSection::UProbe { name, .. } => name,
ProgramSection::URetProbe { name, .. } => name,
ProgramSection::TracePoint { name } => name,
ProgramSection::SocketFilter { name } => name,
ProgramSection::Xdp { name, .. } => name,
ProgramSection::SkMsg { name } => name,
ProgramSection::SkSkbStreamParser { name } => name,
ProgramSection::SkSkbStreamVerdict { name } => name,
ProgramSection::SockOps { name } => name,
ProgramSection::SchedClassifier { name } => name,
ProgramSection::CgroupSkb { name, .. } => name,
ProgramSection::CgroupSkbIngress { name, .. } => name,
ProgramSection::CgroupSkbEgress { name, .. } => name,
ProgramSection::CgroupSockAddr { name, .. } => name,
ProgramSection::CgroupSysctl { name } => name,
ProgramSection::CgroupSockopt { name, .. } => name,
ProgramSection::LircMode2 { name } => name,
ProgramSection::PerfEvent { name } => name,
ProgramSection::RawTracePoint { name } => name,
ProgramSection::Lsm { name, .. } => name,
ProgramSection::BtfTracePoint { name, .. } => name,
ProgramSection::FEntry { name, .. } => name,
ProgramSection::FExit { name, .. } => name,
ProgramSection::Extension { name } => name,
ProgramSection::SkLookup { name } => name,
ProgramSection::CgroupSock { name, .. } => name,
ProgramSection::CgroupDevice { name } => name,
}
}
CgroupDevice,
}
impl FromStr for ProgramSection {
@ -385,84 +270,63 @@ impl FromStr for ProgramSection {
None => (section, section),
Some((kind, name)) => (kind, name),
};
let name = name.to_owned();
Ok(match kind {
"kprobe" => KProbe { name },
"kretprobe" => KRetProbe { name },
"uprobe" => UProbe {
name,
sleepable: false,
},
"uprobe.s" => UProbe {
name,
sleepable: true,
},
"uretprobe" => URetProbe {
name,
sleepable: false,
},
"uretprobe.s" => URetProbe {
name,
sleepable: true,
},
"xdp" => Xdp { name, frags: false },
"xdp.frags" => Xdp { name, frags: true },
"tp_btf" => BtfTracePoint { name },
_ if kind.starts_with("tracepoint") || kind.starts_with("tp") => {
// tracepoint sections are named `tracepoint/category/event_name`,
// and we want to parse the name as "category/event_name"
let name = section.splitn(2, '/').last().unwrap().to_owned();
TracePoint { name }
}
"socket" => SocketFilter { name },
"sk_msg" => SkMsg { name },
"sk_skb" => match &*name {
"stream_parser" => SkSkbStreamParser { name },
"stream_verdict" => SkSkbStreamVerdict { name },
"kprobe" => KProbe,
"kretprobe" => KRetProbe,
"uprobe" => UProbe { sleepable: false },
"uprobe.s" => UProbe { sleepable: true },
"uretprobe" => URetProbe { sleepable: false },
"uretprobe.s" => URetProbe { sleepable: true },
"xdp" => Xdp { frags: false },
"xdp.frags" => Xdp { frags: true },
"tp_btf" => BtfTracePoint,
kind if kind.starts_with("tracepoint") || kind.starts_with("tp") => TracePoint,
"socket" => SocketFilter,
"sk_msg" => SkMsg,
"sk_skb" => match name {
"stream_parser" => SkSkbStreamParser,
"stream_verdict" => SkSkbStreamVerdict,
_ => {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),
})
}
},
"sk_skb/stream_parser" => SkSkbStreamParser { name },
"sk_skb/stream_verdict" => SkSkbStreamVerdict { name },
"sockops" => SockOps { name },
"classifier" => SchedClassifier { name },
"cgroup_skb" => match &*name {
"ingress" => CgroupSkbIngress { name },
"egress" => CgroupSkbEgress { name },
"sk_skb/stream_parser" => SkSkbStreamParser,
"sk_skb/stream_verdict" => SkSkbStreamVerdict,
"sockops" => SockOps,
"classifier" => SchedClassifier,
"cgroup_skb" => match name {
"ingress" => CgroupSkbIngress,
"egress" => CgroupSkbEgress,
_ => {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),
})
}
},
"cgroup_skb/ingress" => CgroupSkbIngress { name },
"cgroup_skb/egress" => CgroupSkbEgress { name },
"cgroup/skb" => CgroupSkb { name },
"cgroup_skb/ingress" => CgroupSkbIngress,
"cgroup_skb/egress" => CgroupSkbEgress,
"cgroup/skb" => CgroupSkb,
"cgroup/sock" => CgroupSock {
name,
attach_type: CgroupSockAttachType::default(),
},
"cgroup/sysctl" => CgroupSysctl { name },
"cgroup/dev" => CgroupDevice { name },
"cgroup/sysctl" => CgroupSysctl,
"cgroup/dev" => CgroupDevice,
"cgroup/getsockopt" => CgroupSockopt {
name,
attach_type: CgroupSockoptAttachType::Get,
},
"cgroup/setsockopt" => CgroupSockopt {
name,
attach_type: CgroupSockoptAttachType::Set,
},
"cgroup" => match &*name {
"skb" => CgroupSkb { name },
"sysctl" => CgroupSysctl { name },
"dev" => CgroupDevice { name },
"cgroup" => match name {
"skb" => CgroupSkb,
"sysctl" => CgroupSysctl,
"dev" => CgroupDevice,
"getsockopt" | "setsockopt" => {
if let Ok(attach_type) = CgroupSockoptAttachType::try_from(name.as_str()) {
CgroupSockopt { name, attach_type }
if let Ok(attach_type) = CgroupSockoptAttachType::try_from(name) {
CgroupSockopt { attach_type }
} else {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),
@ -470,21 +334,20 @@ impl FromStr for ProgramSection {
}
}
"sock" => CgroupSock {
name,
attach_type: CgroupSockAttachType::default(),
},
"post_bind4" | "post_bind6" | "sock_create" | "sock_release" => {
if let Ok(attach_type) = CgroupSockAttachType::try_from(name.as_str()) {
CgroupSock { name, attach_type }
if let Ok(attach_type) = CgroupSockAttachType::try_from(name) {
CgroupSock { attach_type }
} else {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),
});
}
}
_ => {
if let Ok(attach_type) = CgroupSockAddrAttachType::try_from(name.as_str()) {
CgroupSockAddr { name, attach_type }
name => {
if let Ok(attach_type) = CgroupSockAddrAttachType::try_from(name) {
CgroupSockAddr { attach_type }
} else {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),
@ -493,98 +356,64 @@ impl FromStr for ProgramSection {
}
},
"cgroup/post_bind4" => CgroupSock {
name,
attach_type: CgroupSockAttachType::PostBind4,
},
"cgroup/post_bind6" => CgroupSock {
name,
attach_type: CgroupSockAttachType::PostBind6,
},
"cgroup/sock_create" => CgroupSock {
name,
attach_type: CgroupSockAttachType::SockCreate,
},
"cgroup/sock_release" => CgroupSock {
name,
attach_type: CgroupSockAttachType::SockRelease,
},
"cgroup/bind4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::Bind4,
},
"cgroup/bind6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::Bind6,
},
"cgroup/connect4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::Connect4,
},
"cgroup/connect6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::Connect6,
},
"cgroup/getpeername4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::GetPeerName4,
},
"cgroup/getpeername6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::GetPeerName6,
},
"cgroup/getsockname4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::GetSockName4,
},
"cgroup/getsockname6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::GetSockName6,
},
"cgroup/sendmsg4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::UDPSendMsg4,
},
"cgroup/sendmsg6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::UDPSendMsg6,
},
"cgroup/recvmsg4" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::UDPRecvMsg4,
},
"cgroup/recvmsg6" => CgroupSockAddr {
name,
attach_type: CgroupSockAddrAttachType::UDPRecvMsg6,
},
"lirc_mode2" => LircMode2 { name },
"perf_event" => PerfEvent { name },
"raw_tp" | "raw_tracepoint" => RawTracePoint { name },
"lsm" => Lsm {
name,
sleepable: false,
},
"lsm.s" => Lsm {
name,
sleepable: true,
},
"fentry" => FEntry {
name,
sleepable: false,
},
"fentry.s" => FEntry {
name,
sleepable: true,
},
"fexit" => FExit {
name,
sleepable: false,
},
"fexit.s" => FExit {
name,
sleepable: true,
},
"freplace" => Extension { name },
"sk_lookup" => SkLookup { name },
"lirc_mode2" => LircMode2,
"perf_event" => PerfEvent,
"raw_tp" | "raw_tracepoint" => RawTracePoint,
"lsm" => Lsm { sleepable: false },
"lsm.s" => Lsm { sleepable: true },
"fentry" => FEntry { sleepable: false },
"fentry.s" => FEntry { sleepable: true },
"fexit" => FExit { sleepable: false },
"fexit.s" => FExit { sleepable: true },
"freplace" => Extension,
"sk_lookup" => SkLookup,
_ => {
return Err(ParseError::InvalidProgramSection {
section: section.to_owned(),

@ -400,37 +400,37 @@ impl<'a> BpfLoader<'a> {
Err(err) => {
for program in obj.programs.values() {
match program.section {
ProgramSection::Extension { .. }
| ProgramSection::FEntry { .. }
| ProgramSection::FExit { .. }
| ProgramSection::Lsm { .. }
| ProgramSection::BtfTracePoint { .. } => {
ProgramSection::Extension
| ProgramSection::FEntry { sleepable: _ }
| ProgramSection::FExit { sleepable: _ }
| ProgramSection::Lsm { sleepable: _ }
| ProgramSection::BtfTracePoint => {
return Err(BpfError::BtfError(err))
}
ProgramSection::KRetProbe { .. }
| ProgramSection::KProbe { .. }
| ProgramSection::UProbe { .. }
| ProgramSection::URetProbe { .. }
| ProgramSection::TracePoint { .. }
| ProgramSection::SocketFilter { .. }
| ProgramSection::Xdp { .. }
| ProgramSection::SkMsg { .. }
| ProgramSection::SkSkbStreamParser { .. }
| ProgramSection::SkSkbStreamVerdict { .. }
| ProgramSection::SockOps { .. }
| ProgramSection::SchedClassifier { .. }
| ProgramSection::CgroupSkb { .. }
| ProgramSection::CgroupSkbIngress { .. }
| ProgramSection::CgroupSkbEgress { .. }
| ProgramSection::CgroupSockAddr { .. }
| ProgramSection::CgroupSysctl { .. }
| ProgramSection::CgroupSockopt { .. }
| ProgramSection::LircMode2 { .. }
| ProgramSection::PerfEvent { .. }
| ProgramSection::RawTracePoint { .. }
| ProgramSection::SkLookup { .. }
| ProgramSection::CgroupSock { .. }
| ProgramSection::CgroupDevice { .. } => {}
ProgramSection::KRetProbe
| ProgramSection::KProbe
| ProgramSection::UProbe { sleepable: _ }
| ProgramSection::URetProbe { sleepable: _ }
| ProgramSection::TracePoint
| ProgramSection::SocketFilter
| ProgramSection::Xdp { frags: _ }
| ProgramSection::SkMsg
| ProgramSection::SkSkbStreamParser
| ProgramSection::SkSkbStreamVerdict
| ProgramSection::SockOps
| ProgramSection::SchedClassifier
| ProgramSection::CgroupSkb
| ProgramSection::CgroupSkbIngress
| ProgramSection::CgroupSkbEgress
| ProgramSection::CgroupSockAddr { attach_type: _ }
| ProgramSection::CgroupSysctl
| ProgramSection::CgroupSockopt { attach_type: _ }
| ProgramSection::LircMode2
| ProgramSection::PerfEvent
| ProgramSection::RawTracePoint
| ProgramSection::SkLookup
| ProgramSection::CgroupSock { attach_type: _ }
| ProgramSection::CgroupDevice => {}
}
}
@ -558,15 +558,15 @@ impl<'a> BpfLoader<'a> {
})
} else {
match &section {
ProgramSection::KProbe { .. } => Program::KProbe(KProbe {
ProgramSection::KProbe => Program::KProbe(KProbe {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
kind: ProbeKind::KProbe,
}),
ProgramSection::KRetProbe { .. } => Program::KProbe(KProbe {
ProgramSection::KRetProbe => Program::KProbe(KProbe {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
kind: ProbeKind::KRetProbe,
}),
ProgramSection::UProbe { sleepable, name: _ } => {
ProgramSection::UProbe { sleepable } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
if *sleepable {
@ -577,7 +577,7 @@ impl<'a> BpfLoader<'a> {
kind: ProbeKind::UProbe,
})
}
ProgramSection::URetProbe { sleepable, name: _ } => {
ProgramSection::URetProbe { sleepable } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
if *sleepable {
@ -588,14 +588,12 @@ impl<'a> BpfLoader<'a> {
kind: ProbeKind::URetProbe,
})
}
ProgramSection::TracePoint { .. } => Program::TracePoint(TracePoint {
ProgramSection::TracePoint => Program::TracePoint(TracePoint {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::SocketFilter => Program::SocketFilter(SocketFilter {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::SocketFilter { .. } => {
Program::SocketFilter(SocketFilter {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
})
}
ProgramSection::Xdp { frags, .. } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
@ -604,32 +602,30 @@ impl<'a> BpfLoader<'a> {
}
Program::Xdp(Xdp { data })
}
ProgramSection::SkMsg { .. } => Program::SkMsg(SkMsg {
ProgramSection::SkMsg => Program::SkMsg(SkMsg {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::CgroupSysctl => Program::CgroupSysctl(CgroupSysctl {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::CgroupSysctl { .. } => {
Program::CgroupSysctl(CgroupSysctl {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
})
}
ProgramSection::CgroupSockopt { attach_type, .. } => {
Program::CgroupSockopt(CgroupSockopt {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
attach_type: *attach_type,
})
}
ProgramSection::SkSkbStreamParser { .. } => Program::SkSkb(SkSkb {
ProgramSection::SkSkbStreamParser => Program::SkSkb(SkSkb {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
kind: SkSkbKind::StreamParser,
}),
ProgramSection::SkSkbStreamVerdict { .. } => Program::SkSkb(SkSkb {
ProgramSection::SkSkbStreamVerdict => Program::SkSkb(SkSkb {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
kind: SkSkbKind::StreamVerdict,
}),
ProgramSection::SockOps { .. } => Program::SockOps(SockOps {
ProgramSection::SockOps => Program::SockOps(SockOps {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::SchedClassifier { .. } => {
ProgramSection::SchedClassifier => {
Program::SchedClassifier(SchedClassifier {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
name: unsafe {
@ -638,15 +634,15 @@ impl<'a> BpfLoader<'a> {
},
})
}
ProgramSection::CgroupSkb { .. } => Program::CgroupSkb(CgroupSkb {
ProgramSection::CgroupSkb => Program::CgroupSkb(CgroupSkb {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
expected_attach_type: None,
}),
ProgramSection::CgroupSkbIngress { .. } => Program::CgroupSkb(CgroupSkb {
ProgramSection::CgroupSkbIngress => Program::CgroupSkb(CgroupSkb {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
expected_attach_type: Some(CgroupSkbAttachType::Ingress),
}),
ProgramSection::CgroupSkbEgress { .. } => Program::CgroupSkb(CgroupSkb {
ProgramSection::CgroupSkbEgress => Program::CgroupSkb(CgroupSkb {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
expected_attach_type: Some(CgroupSkbAttachType::Egress),
}),
@ -656,18 +652,16 @@ impl<'a> BpfLoader<'a> {
attach_type: *attach_type,
})
}
ProgramSection::LircMode2 { .. } => Program::LircMode2(LircMode2 {
ProgramSection::LircMode2 => Program::LircMode2(LircMode2 {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::PerfEvent { .. } => Program::PerfEvent(PerfEvent {
ProgramSection::PerfEvent => Program::PerfEvent(PerfEvent {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::RawTracePoint { .. } => {
Program::RawTracePoint(RawTracePoint {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
})
}
ProgramSection::Lsm { sleepable, name: _ } => {
ProgramSection::RawTracePoint => Program::RawTracePoint(RawTracePoint {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::Lsm { sleepable } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
if *sleepable {
@ -675,12 +669,10 @@ impl<'a> BpfLoader<'a> {
}
Program::Lsm(Lsm { data })
}
ProgramSection::BtfTracePoint { .. } => {
Program::BtfTracePoint(BtfTracePoint {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
})
}
ProgramSection::FEntry { sleepable, name: _ } => {
ProgramSection::BtfTracePoint => Program::BtfTracePoint(BtfTracePoint {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::FEntry { sleepable } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
if *sleepable {
@ -688,7 +680,7 @@ impl<'a> BpfLoader<'a> {
}
Program::FEntry(FEntry { data })
}
ProgramSection::FExit { sleepable, name: _ } => {
ProgramSection::FExit { sleepable } => {
let mut data =
ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
if *sleepable {
@ -696,10 +688,10 @@ impl<'a> BpfLoader<'a> {
}
Program::FExit(FExit { data })
}
ProgramSection::Extension { .. } => Program::Extension(Extension {
ProgramSection::Extension => Program::Extension(Extension {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::SkLookup { .. } => Program::SkLookup(SkLookup {
ProgramSection::SkLookup => Program::SkLookup(SkLookup {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
ProgramSection::CgroupSock { attach_type, .. } => {
@ -708,11 +700,9 @@ impl<'a> BpfLoader<'a> {
attach_type: *attach_type,
})
}
ProgramSection::CgroupDevice { .. } => {
Program::CgroupDevice(CgroupDevice {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
})
}
ProgramSection::CgroupDevice => Program::CgroupDevice(CgroupDevice {
data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
}),
}
};
(name, program)

@ -9,8 +9,10 @@ fn run_with_rbpf() {
let object = Object::parse(crate::PASS).unwrap();
assert_eq!(object.programs.len(), 1);
assert_matches!(object.programs["pass"].section, ProgramSection::Xdp { .. });
assert_eq!(object.programs["pass"].section.name(), "xdp.frags");
assert_matches!(
object.programs["pass"].section,
ProgramSection::Xdp { frags: true }
);
let instructions = &object
.functions
@ -40,7 +42,6 @@ fn use_map_with_rbpf() {
object.programs["bpf_prog"].section,
ProgramSection::TracePoint { .. }
);
assert_eq!(object.programs["bpf_prog"].section.name(), "tracepoint");
// Initialize maps:
// - fd: 0xCAFE00 or 0xCAFE01 (the 0xCAFE00 part is used to distinguish fds from indices),

@ -5813,74 +5813,43 @@ impl<T> core::convert::From<T> for aya_obj::ParseError
pub fn aya_obj::ParseError::from(t: T) -> T
pub enum aya_obj::obj::ProgramSection
pub aya_obj::obj::ProgramSection::BtfTracePoint
pub aya_obj::obj::ProgramSection::BtfTracePoint::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupDevice
pub aya_obj::obj::ProgramSection::CgroupDevice::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSkb
pub aya_obj::obj::ProgramSection::CgroupSkb::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSkbEgress
pub aya_obj::obj::ProgramSection::CgroupSkbEgress::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSkbIngress
pub aya_obj::obj::ProgramSection::CgroupSkbIngress::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSock
pub aya_obj::obj::ProgramSection::CgroupSock::attach_type: aya_obj::programs::cgroup_sock::CgroupSockAttachType
pub aya_obj::obj::ProgramSection::CgroupSock::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSockAddr
pub aya_obj::obj::ProgramSection::CgroupSockAddr::attach_type: aya_obj::programs::cgroup_sock_addr::CgroupSockAddrAttachType
pub aya_obj::obj::ProgramSection::CgroupSockAddr::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSockopt
pub aya_obj::obj::ProgramSection::CgroupSockopt::attach_type: aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachType
pub aya_obj::obj::ProgramSection::CgroupSockopt::name: alloc::string::String
pub aya_obj::obj::ProgramSection::CgroupSysctl
pub aya_obj::obj::ProgramSection::CgroupSysctl::name: alloc::string::String
pub aya_obj::obj::ProgramSection::Extension
pub aya_obj::obj::ProgramSection::Extension::name: alloc::string::String
pub aya_obj::obj::ProgramSection::FEntry
pub aya_obj::obj::ProgramSection::FEntry::name: alloc::string::String
pub aya_obj::obj::ProgramSection::FEntry::sleepable: bool
pub aya_obj::obj::ProgramSection::FExit
pub aya_obj::obj::ProgramSection::FExit::name: alloc::string::String
pub aya_obj::obj::ProgramSection::FExit::sleepable: bool
pub aya_obj::obj::ProgramSection::KProbe
pub aya_obj::obj::ProgramSection::KProbe::name: alloc::string::String
pub aya_obj::obj::ProgramSection::KRetProbe
pub aya_obj::obj::ProgramSection::KRetProbe::name: alloc::string::String
pub aya_obj::obj::ProgramSection::LircMode2
pub aya_obj::obj::ProgramSection::LircMode2::name: alloc::string::String
pub aya_obj::obj::ProgramSection::Lsm
pub aya_obj::obj::ProgramSection::Lsm::name: alloc::string::String
pub aya_obj::obj::ProgramSection::Lsm::sleepable: bool
pub aya_obj::obj::ProgramSection::PerfEvent
pub aya_obj::obj::ProgramSection::PerfEvent::name: alloc::string::String
pub aya_obj::obj::ProgramSection::RawTracePoint
pub aya_obj::obj::ProgramSection::RawTracePoint::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SchedClassifier
pub aya_obj::obj::ProgramSection::SchedClassifier::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SkLookup
pub aya_obj::obj::ProgramSection::SkLookup::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SkMsg
pub aya_obj::obj::ProgramSection::SkMsg::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SkSkbStreamParser
pub aya_obj::obj::ProgramSection::SkSkbStreamParser::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SkSkbStreamVerdict
pub aya_obj::obj::ProgramSection::SkSkbStreamVerdict::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SockOps
pub aya_obj::obj::ProgramSection::SockOps::name: alloc::string::String
pub aya_obj::obj::ProgramSection::SocketFilter
pub aya_obj::obj::ProgramSection::SocketFilter::name: alloc::string::String
pub aya_obj::obj::ProgramSection::TracePoint
pub aya_obj::obj::ProgramSection::TracePoint::name: alloc::string::String
pub aya_obj::obj::ProgramSection::UProbe
pub aya_obj::obj::ProgramSection::UProbe::name: alloc::string::String
pub aya_obj::obj::ProgramSection::UProbe::sleepable: bool
pub aya_obj::obj::ProgramSection::URetProbe
pub aya_obj::obj::ProgramSection::URetProbe::name: alloc::string::String
pub aya_obj::obj::ProgramSection::URetProbe::sleepable: bool
pub aya_obj::obj::ProgramSection::Xdp
pub aya_obj::obj::ProgramSection::Xdp::frags: bool
pub aya_obj::obj::ProgramSection::Xdp::name: alloc::string::String
impl aya_obj::ProgramSection
pub fn aya_obj::ProgramSection::name(&self) -> &str
impl core::str::traits::FromStr for aya_obj::ProgramSection
pub type aya_obj::ProgramSection::Err = aya_obj::ParseError
pub fn aya_obj::ProgramSection::from_str(section: &str) -> core::result::Result<aya_obj::ProgramSection, aya_obj::ParseError>
@ -6565,74 +6534,43 @@ impl<T> core::convert::From<T> for aya_obj::ParseError
pub fn aya_obj::ParseError::from(t: T) -> T
pub enum aya_obj::ProgramSection
pub aya_obj::ProgramSection::BtfTracePoint
pub aya_obj::ProgramSection::BtfTracePoint::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupDevice
pub aya_obj::ProgramSection::CgroupDevice::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSkb
pub aya_obj::ProgramSection::CgroupSkb::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSkbEgress
pub aya_obj::ProgramSection::CgroupSkbEgress::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSkbIngress
pub aya_obj::ProgramSection::CgroupSkbIngress::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSock
pub aya_obj::ProgramSection::CgroupSock::attach_type: aya_obj::programs::cgroup_sock::CgroupSockAttachType
pub aya_obj::ProgramSection::CgroupSock::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSockAddr
pub aya_obj::ProgramSection::CgroupSockAddr::attach_type: aya_obj::programs::cgroup_sock_addr::CgroupSockAddrAttachType
pub aya_obj::ProgramSection::CgroupSockAddr::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSockopt
pub aya_obj::ProgramSection::CgroupSockopt::attach_type: aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachType
pub aya_obj::ProgramSection::CgroupSockopt::name: alloc::string::String
pub aya_obj::ProgramSection::CgroupSysctl
pub aya_obj::ProgramSection::CgroupSysctl::name: alloc::string::String
pub aya_obj::ProgramSection::Extension
pub aya_obj::ProgramSection::Extension::name: alloc::string::String
pub aya_obj::ProgramSection::FEntry
pub aya_obj::ProgramSection::FEntry::name: alloc::string::String
pub aya_obj::ProgramSection::FEntry::sleepable: bool
pub aya_obj::ProgramSection::FExit
pub aya_obj::ProgramSection::FExit::name: alloc::string::String
pub aya_obj::ProgramSection::FExit::sleepable: bool
pub aya_obj::ProgramSection::KProbe
pub aya_obj::ProgramSection::KProbe::name: alloc::string::String
pub aya_obj::ProgramSection::KRetProbe
pub aya_obj::ProgramSection::KRetProbe::name: alloc::string::String
pub aya_obj::ProgramSection::LircMode2
pub aya_obj::ProgramSection::LircMode2::name: alloc::string::String
pub aya_obj::ProgramSection::Lsm
pub aya_obj::ProgramSection::Lsm::name: alloc::string::String
pub aya_obj::ProgramSection::Lsm::sleepable: bool
pub aya_obj::ProgramSection::PerfEvent
pub aya_obj::ProgramSection::PerfEvent::name: alloc::string::String
pub aya_obj::ProgramSection::RawTracePoint
pub aya_obj::ProgramSection::RawTracePoint::name: alloc::string::String
pub aya_obj::ProgramSection::SchedClassifier
pub aya_obj::ProgramSection::SchedClassifier::name: alloc::string::String
pub aya_obj::ProgramSection::SkLookup
pub aya_obj::ProgramSection::SkLookup::name: alloc::string::String
pub aya_obj::ProgramSection::SkMsg
pub aya_obj::ProgramSection::SkMsg::name: alloc::string::String
pub aya_obj::ProgramSection::SkSkbStreamParser
pub aya_obj::ProgramSection::SkSkbStreamParser::name: alloc::string::String
pub aya_obj::ProgramSection::SkSkbStreamVerdict
pub aya_obj::ProgramSection::SkSkbStreamVerdict::name: alloc::string::String
pub aya_obj::ProgramSection::SockOps
pub aya_obj::ProgramSection::SockOps::name: alloc::string::String
pub aya_obj::ProgramSection::SocketFilter
pub aya_obj::ProgramSection::SocketFilter::name: alloc::string::String
pub aya_obj::ProgramSection::TracePoint
pub aya_obj::ProgramSection::TracePoint::name: alloc::string::String
pub aya_obj::ProgramSection::UProbe
pub aya_obj::ProgramSection::UProbe::name: alloc::string::String
pub aya_obj::ProgramSection::UProbe::sleepable: bool
pub aya_obj::ProgramSection::URetProbe
pub aya_obj::ProgramSection::URetProbe::name: alloc::string::String
pub aya_obj::ProgramSection::URetProbe::sleepable: bool
pub aya_obj::ProgramSection::Xdp
pub aya_obj::ProgramSection::Xdp::frags: bool
pub aya_obj::ProgramSection::Xdp::name: alloc::string::String
impl aya_obj::ProgramSection
pub fn aya_obj::ProgramSection::name(&self) -> &str
impl core::str::traits::FromStr for aya_obj::ProgramSection
pub type aya_obj::ProgramSection::Err = aya_obj::ParseError
pub fn aya_obj::ProgramSection::from_str(section: &str) -> core::result::Result<aya_obj::ProgramSection, aya_obj::ParseError>

Loading…
Cancel
Save