diff --git a/aya/Cargo.toml b/aya/Cargo.toml index 4e5eec16b..4adfd51ec 100644 --- a/aya/Cargo.toml +++ b/aya/Cargo.toml @@ -16,6 +16,7 @@ async-io = { workspace = true, optional = true } aya-obj = { workspace = true, features = ["std"] } bitflags = { workspace = true } bytes = { workspace = true } +hashbrown = { workspace = true, default-features = true } lazy_static = { workspace = true } libc = { workspace = true } log = { workspace = true } diff --git a/aya/src/bpf.rs b/aya/src/bpf.rs index ee074dba6..9c4c817f1 100644 --- a/aya/src/bpf.rs +++ b/aya/src/bpf.rs @@ -768,7 +768,9 @@ impl<'a> Default for BpfLoader<'a> { #[derive(Debug)] pub struct Bpf { maps: HashMap, - programs: HashMap, + // TODO(https://github.com/rust-lang/rust/issues/97601): use `HashMap` when `get_many_mut` is + // stabilized. + programs: hashbrown::HashMap, } impl Bpf { @@ -914,6 +916,31 @@ impl Bpf { self.programs.get_mut(name) } + /// Attempts to get mutable references to `N` programs in the map at once. + /// + /// Returns an array of length `N` with the results of each query. For soundness, at most one + /// mutable reference will be returned to any value. `None` will be returned if any of the + /// keys are duplicates or missing. + /// + /// # Examples + /// + /// ```no_run + /// # let mut bpf = aya::Bpf::load(&[])?; + /// use aya::programs::UProbe; + /// + /// let [ssl_read, ssl_write ]= bpf.many_programs_mut(["SSL_read", "SSL_write"]).unwrap(); + /// let ssl_read: &mut UProbe = ssl_read.try_into()?; + /// let ssl_write: &mut UProbe = ssl_write.try_into()?; + /// ssl_read.load()?; + /// ssl_read.attach(Some("SSL_read"), 0, "libssl", None)?; + /// ssl_write.load()?; + /// ssl_write.attach(Some("SSL_write"), 0, "libssl", None)?; + /// # Ok::<(), aya::BpfError>(()) + /// ``` + pub fn many_programs_mut(&mut self, names: [&str; N]) -> Option<[&mut Program; N]> { + self.programs.get_many_mut(names) + } + /// An iterator over all the programs. /// /// # Examples diff --git a/aya/src/programs/extension.rs b/aya/src/programs/extension.rs index c5895ab69..22af510bd 100644 --- a/aya/src/programs/extension.rs +++ b/aya/src/programs/extension.rs @@ -37,22 +37,13 @@ pub enum ExtensionError { /// use aya::{BpfLoader, programs::{Xdp, XdpFlags, Extension}}; /// /// let mut bpf = BpfLoader::new().extension("extension").load_file("app.o")?; -/// let mut prog = None; -/// let mut ext = None; -/// for (name, program) in bpf.programs_mut() { -/// match name { -/// "main" => prog = Some(program), -/// "extension" => ext = Some(program), -/// _ => {}, -/// } -/// } -/// -/// let prog: &mut Xdp = prog.unwrap().try_into()?; +/// let [prog, ext] = bpf.many_programs_mut(["main", "extension"]).unwrap(); +/// let prog: &mut Xdp = prog.try_into()?; /// prog.load()?; /// prog.attach("eth0", XdpFlags::default())?; /// /// let prog_fd = prog.fd().unwrap(); -/// let ext: &mut Extension = ext.unwrap().try_into()?; +/// let ext: &mut Extension = ext.try_into()?; /// ext.load(prog_fd, "function_to_replace")?; /// ext.attach()?; /// Ok::<(), aya::BpfError>(()) diff --git a/xtask/public-api/aya.txt b/xtask/public-api/aya.txt index 15c5e4a15..b51dc7465 100644 --- a/xtask/public-api/aya.txt +++ b/xtask/public-api/aya.txt @@ -444,6 +444,8 @@ impl core::marker::Sync for aya::maps::perf::Events impl core::marker::Unpin for aya::maps::perf::Events impl core::panic::unwind_safe::RefUnwindSafe for aya::maps::perf::Events impl core::panic::unwind_safe::UnwindSafe for aya::maps::perf::Events +impl hashbrown::Equivalent for aya::maps::perf::Events where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::maps::perf::Events::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::maps::perf::Events where U: core::convert::From pub fn aya::maps::perf::Events::into(self) -> U impl core::convert::TryFrom for aya::maps::perf::Events where U: core::convert::Into @@ -1888,6 +1890,8 @@ impl core::marker::Sync for aya::programs::cgroup_device::CgroupDeviceLinkId impl core::marker::Unpin for aya::programs::cgroup_device::CgroupDeviceLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_device::CgroupDeviceLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_device::CgroupDeviceLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_device::CgroupDeviceLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_device::CgroupDeviceLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_device::CgroupDeviceLinkId where U: core::convert::From pub fn aya::programs::cgroup_device::CgroupDeviceLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_device::CgroupDeviceLinkId where U: core::convert::Into @@ -2029,6 +2033,8 @@ impl core::marker::Sync for aya::programs::cgroup_skb::CgroupSkbLinkId impl core::marker::Unpin for aya::programs::cgroup_skb::CgroupSkbLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_skb::CgroupSkbLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_skb::CgroupSkbLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_skb::CgroupSkbLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_skb::CgroupSkbLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_skb::CgroupSkbLinkId where U: core::convert::From pub fn aya::programs::cgroup_skb::CgroupSkbLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_skb::CgroupSkbLinkId where U: core::convert::Into @@ -2137,6 +2143,8 @@ impl core::marker::Sync for aya::programs::cgroup_sock::CgroupSockLinkId impl core::marker::Unpin for aya::programs::cgroup_sock::CgroupSockLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_sock::CgroupSockLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_sock::CgroupSockLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_sock::CgroupSockLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_sock::CgroupSockLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_sock::CgroupSockLinkId where U: core::convert::From pub fn aya::programs::cgroup_sock::CgroupSockLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_sock::CgroupSockLinkId where U: core::convert::Into @@ -2245,6 +2253,8 @@ impl core::marker::Sync for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkI impl core::marker::Unpin for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId where U: core::convert::From pub fn aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_sock_addr::CgroupSockAddrLinkId where U: core::convert::Into @@ -2353,6 +2363,8 @@ impl core::marker::Sync for aya::programs::cgroup_sockopt::CgroupSockoptLinkId impl core::marker::Unpin for aya::programs::cgroup_sockopt::CgroupSockoptLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_sockopt::CgroupSockoptLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_sockopt::CgroupSockoptLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_sockopt::CgroupSockoptLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_sockopt::CgroupSockoptLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_sockopt::CgroupSockoptLinkId where U: core::convert::From pub fn aya::programs::cgroup_sockopt::CgroupSockoptLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_sockopt::CgroupSockoptLinkId where U: core::convert::Into @@ -2461,6 +2473,8 @@ impl core::marker::Sync for aya::programs::cgroup_sysctl::CgroupSysctlLinkId impl core::marker::Unpin for aya::programs::cgroup_sysctl::CgroupSysctlLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::cgroup_sysctl::CgroupSysctlLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::cgroup_sysctl::CgroupSysctlLinkId +impl hashbrown::Equivalent for aya::programs::cgroup_sysctl::CgroupSysctlLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::cgroup_sysctl::CgroupSysctlLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::cgroup_sysctl::CgroupSysctlLinkId where U: core::convert::From pub fn aya::programs::cgroup_sysctl::CgroupSysctlLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::cgroup_sysctl::CgroupSysctlLinkId where U: core::convert::Into @@ -2608,6 +2622,8 @@ impl core::marker::Sync for aya::programs::extension::ExtensionLinkId impl core::marker::Unpin for aya::programs::extension::ExtensionLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::extension::ExtensionLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::extension::ExtensionLinkId +impl hashbrown::Equivalent for aya::programs::extension::ExtensionLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::extension::ExtensionLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::extension::ExtensionLinkId where U: core::convert::From pub fn aya::programs::extension::ExtensionLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::extension::ExtensionLinkId where U: core::convert::Into @@ -2720,6 +2736,8 @@ impl core::marker::Sync for aya::programs::fentry::FEntryLinkId impl core::marker::Unpin for aya::programs::fentry::FEntryLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::fentry::FEntryLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::fentry::FEntryLinkId +impl hashbrown::Equivalent for aya::programs::fentry::FEntryLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::fentry::FEntryLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::fentry::FEntryLinkId where U: core::convert::From pub fn aya::programs::fentry::FEntryLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::fentry::FEntryLinkId where U: core::convert::Into @@ -2832,6 +2850,8 @@ impl core::marker::Sync for aya::programs::fexit::FExitLinkId impl core::marker::Unpin for aya::programs::fexit::FExitLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::fexit::FExitLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::fexit::FExitLinkId +impl hashbrown::Equivalent for aya::programs::fexit::FExitLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::fexit::FExitLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::fexit::FExitLinkId where U: core::convert::From pub fn aya::programs::fexit::FExitLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::fexit::FExitLinkId where U: core::convert::Into @@ -2983,6 +3003,8 @@ impl core::marker::Sync for aya::programs::kprobe::KProbeLinkId impl core::marker::Unpin for aya::programs::kprobe::KProbeLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::kprobe::KProbeLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::kprobe::KProbeLinkId +impl hashbrown::Equivalent for aya::programs::kprobe::KProbeLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::kprobe::KProbeLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::kprobe::KProbeLinkId where U: core::convert::From pub fn aya::programs::kprobe::KProbeLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::kprobe::KProbeLinkId where U: core::convert::Into @@ -3131,6 +3153,8 @@ impl core::marker::Sync for aya::programs::links::FdLinkId impl core::marker::Unpin for aya::programs::links::FdLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::links::FdLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::links::FdLinkId +impl hashbrown::Equivalent for aya::programs::links::FdLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::links::FdLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::links::FdLinkId where U: core::convert::From pub fn aya::programs::links::FdLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::links::FdLinkId where U: core::convert::Into @@ -3219,6 +3243,8 @@ impl core::marker::Sync for aya::programs::links::ProgAttachLinkId impl core::marker::Unpin for aya::programs::links::ProgAttachLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::links::ProgAttachLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::links::ProgAttachLinkId +impl hashbrown::Equivalent for aya::programs::links::ProgAttachLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::links::ProgAttachLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::links::ProgAttachLinkId where U: core::convert::From pub fn aya::programs::links::ProgAttachLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::links::ProgAttachLinkId where U: core::convert::Into @@ -3369,6 +3395,8 @@ impl core::marker::Sync for aya::programs::lirc_mode2::LircLinkId impl core::marker::Unpin for aya::programs::lirc_mode2::LircLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::lirc_mode2::LircLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::lirc_mode2::LircLinkId +impl hashbrown::Equivalent for aya::programs::lirc_mode2::LircLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::lirc_mode2::LircLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::lirc_mode2::LircLinkId where U: core::convert::From pub fn aya::programs::lirc_mode2::LircLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::lirc_mode2::LircLinkId where U: core::convert::Into @@ -3528,6 +3556,8 @@ impl core::marker::Sync for aya::programs::lsm::LsmLinkId impl core::marker::Unpin for aya::programs::lsm::LsmLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::lsm::LsmLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::lsm::LsmLinkId +impl hashbrown::Equivalent for aya::programs::lsm::LsmLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::lsm::LsmLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::lsm::LsmLinkId where U: core::convert::From pub fn aya::programs::lsm::LsmLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::lsm::LsmLinkId where U: core::convert::Into @@ -3588,6 +3618,8 @@ impl core::marker::Sync for aya::programs::perf_attach::PerfLinkId impl core::marker::Unpin for aya::programs::perf_attach::PerfLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::perf_attach::PerfLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::perf_attach::PerfLinkId +impl hashbrown::Equivalent for aya::programs::perf_attach::PerfLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::perf_attach::PerfLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::perf_attach::PerfLinkId where U: core::convert::From pub fn aya::programs::perf_attach::PerfLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::perf_attach::PerfLinkId where U: core::convert::Into @@ -3815,6 +3847,8 @@ impl core::marker::Sync for aya::programs::perf_event::PerfEventLinkId impl core::marker::Unpin for aya::programs::perf_event::PerfEventLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::perf_event::PerfEventLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::perf_event::PerfEventLinkId +impl hashbrown::Equivalent for aya::programs::perf_event::PerfEventLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::perf_event::PerfEventLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::perf_event::PerfEventLinkId where U: core::convert::From pub fn aya::programs::perf_event::PerfEventLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::perf_event::PerfEventLinkId where U: core::convert::Into @@ -3853,6 +3887,8 @@ impl core::marker::Sync for aya::programs::tc::TcAttachType impl core::marker::Unpin for aya::programs::tc::TcAttachType impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::tc::TcAttachType impl core::panic::unwind_safe::UnwindSafe for aya::programs::tc::TcAttachType +impl hashbrown::Equivalent for aya::programs::tc::TcAttachType where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::tc::TcAttachType::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::tc::TcAttachType where U: core::convert::From pub fn aya::programs::tc::TcAttachType::into(self) -> U impl core::convert::TryFrom for aya::programs::tc::TcAttachType where U: core::convert::Into @@ -4005,6 +4041,8 @@ impl core::marker::Sync for aya::programs::tc::SchedClassifierLinkId impl core::marker::Unpin for aya::programs::tc::SchedClassifierLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::tc::SchedClassifierLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::tc::SchedClassifierLinkId +impl hashbrown::Equivalent for aya::programs::tc::SchedClassifierLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::tc::SchedClassifierLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::tc::SchedClassifierLinkId where U: core::convert::From pub fn aya::programs::tc::SchedClassifierLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::tc::SchedClassifierLinkId where U: core::convert::Into @@ -4145,6 +4183,8 @@ impl core::marker::Sync for aya::programs::tp_btf::BtfTracePointLinkId impl core::marker::Unpin for aya::programs::tp_btf::BtfTracePointLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::tp_btf::BtfTracePointLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::tp_btf::BtfTracePointLinkId +impl hashbrown::Equivalent for aya::programs::tp_btf::BtfTracePointLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::tp_btf::BtfTracePointLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::tp_btf::BtfTracePointLinkId where U: core::convert::From pub fn aya::programs::tp_btf::BtfTracePointLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::tp_btf::BtfTracePointLinkId where U: core::convert::Into @@ -4296,6 +4336,8 @@ impl core::marker::Sync for aya::programs::trace_point::TracePointLinkId impl core::marker::Unpin for aya::programs::trace_point::TracePointLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::trace_point::TracePointLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::trace_point::TracePointLinkId +impl hashbrown::Equivalent for aya::programs::trace_point::TracePointLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::trace_point::TracePointLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::trace_point::TracePointLinkId where U: core::convert::From pub fn aya::programs::trace_point::TracePointLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::trace_point::TracePointLinkId where U: core::convert::Into @@ -4454,6 +4496,8 @@ impl core::marker::Sync for aya::programs::uprobe::UProbeLinkId impl core::marker::Unpin for aya::programs::uprobe::UProbeLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::uprobe::UProbeLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::uprobe::UProbeLinkId +impl hashbrown::Equivalent for aya::programs::uprobe::UProbeLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::uprobe::UProbeLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::uprobe::UProbeLinkId where U: core::convert::From pub fn aya::programs::uprobe::UProbeLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::uprobe::UProbeLinkId where U: core::convert::Into @@ -4645,6 +4689,9 @@ impl core::marker::Sync for aya::programs::xdp::XdpFlags impl core::marker::Unpin for aya::programs::xdp::XdpFlags impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::xdp::XdpFlags impl core::panic::unwind_safe::UnwindSafe for aya::programs::xdp::XdpFlags +impl bitflags::traits::BitFlags for aya::programs::xdp::XdpFlags where B: bitflags::traits::Flags +pub type aya::programs::xdp::XdpFlags::Iter = bitflags::iter::Iter +pub type aya::programs::xdp::XdpFlags::IterNames = bitflags::iter::IterNames impl core::convert::Into for aya::programs::xdp::XdpFlags where U: core::convert::From pub fn aya::programs::xdp::XdpFlags::into(self) -> U impl core::convert::TryFrom for aya::programs::xdp::XdpFlags where U: core::convert::Into @@ -4716,6 +4763,8 @@ impl core::marker::Sync for aya::programs::xdp::XdpLinkId impl core::marker::Unpin for aya::programs::xdp::XdpLinkId impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::xdp::XdpLinkId impl core::panic::unwind_safe::UnwindSafe for aya::programs::xdp::XdpLinkId +impl hashbrown::Equivalent for aya::programs::xdp::XdpLinkId where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::xdp::XdpLinkId::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::xdp::XdpLinkId where U: core::convert::From pub fn aya::programs::xdp::XdpLinkId::into(self) -> U impl core::convert::TryFrom for aya::programs::xdp::XdpLinkId where U: core::convert::Into @@ -5343,6 +5392,8 @@ impl core::marker::Sync for aya::programs::tc::TcAttachType impl core::marker::Unpin for aya::programs::tc::TcAttachType impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::tc::TcAttachType impl core::panic::unwind_safe::UnwindSafe for aya::programs::tc::TcAttachType +impl hashbrown::Equivalent for aya::programs::tc::TcAttachType where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::programs::tc::TcAttachType::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::programs::tc::TcAttachType where U: core::convert::From pub fn aya::programs::tc::TcAttachType::into(self) -> U impl core::convert::TryFrom for aya::programs::tc::TcAttachType where U: core::convert::Into @@ -6772,6 +6823,9 @@ impl core::marker::Sync for aya::programs::xdp::XdpFlags impl core::marker::Unpin for aya::programs::xdp::XdpFlags impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::xdp::XdpFlags impl core::panic::unwind_safe::UnwindSafe for aya::programs::xdp::XdpFlags +impl bitflags::traits::BitFlags for aya::programs::xdp::XdpFlags where B: bitflags::traits::Flags +pub type aya::programs::xdp::XdpFlags::Iter = bitflags::iter::Iter +pub type aya::programs::xdp::XdpFlags::IterNames = bitflags::iter::IterNames impl core::convert::Into for aya::programs::xdp::XdpFlags where U: core::convert::From pub fn aya::programs::xdp::XdpFlags::into(self) -> U impl core::convert::TryFrom for aya::programs::xdp::XdpFlags where U: core::convert::Into @@ -6903,6 +6957,8 @@ impl core::marker::Sync for aya::util::KernelVersion impl core::marker::Unpin for aya::util::KernelVersion impl core::panic::unwind_safe::RefUnwindSafe for aya::util::KernelVersion impl core::panic::unwind_safe::UnwindSafe for aya::util::KernelVersion +impl hashbrown::Equivalent for aya::util::KernelVersion where Q: core::cmp::Eq + core::marker::Sized, K: core::borrow::Borrow + core::marker::Sized +pub fn aya::util::KernelVersion::equivalent(&self, key: &K) -> bool impl core::convert::Into for aya::util::KernelVersion where U: core::convert::From pub fn aya::util::KernelVersion::into(self) -> U impl core::convert::TryFrom for aya::util::KernelVersion where U: core::convert::Into @@ -6991,6 +7047,7 @@ pub struct aya::Bpf impl aya::Bpf pub fn aya::Bpf::load(data: &[u8]) -> core::result::Result pub fn aya::Bpf::load_file>(path: P) -> core::result::Result +pub fn aya::Bpf::many_programs_mut(&mut self, names: [&str; N]) -> core::option::Option<[&mut aya::programs::Program; N]> pub fn aya::Bpf::map(&self, name: &str) -> core::option::Option<&aya::maps::Map> pub fn aya::Bpf::map_mut(&mut self, name: &str) -> core::option::Option<&mut aya::maps::Map> pub fn aya::Bpf::maps(&self) -> impl core::iter::traits::iterator::Iterator @@ -7174,6 +7231,9 @@ impl core::marker::Sync for aya::VerifierLogLevel impl core::marker::Unpin for aya::VerifierLogLevel impl core::panic::unwind_safe::RefUnwindSafe for aya::VerifierLogLevel impl core::panic::unwind_safe::UnwindSafe for aya::VerifierLogLevel +impl bitflags::traits::BitFlags for aya::VerifierLogLevel where B: bitflags::traits::Flags +pub type aya::VerifierLogLevel::Iter = bitflags::iter::Iter +pub type aya::VerifierLogLevel::IterNames = bitflags::iter::IterNames impl core::convert::Into for aya::VerifierLogLevel where U: core::convert::From pub fn aya::VerifierLogLevel::into(self) -> U impl core::convert::TryFrom for aya::VerifierLogLevel where U: core::convert::Into