aya-obj: add conversion u32 to enum type for prog, link, & attach type

Add conversion from u32 to program type, link type, and attach type.
Additionally, remove duplicate match statement for u32 conversion to
`BPF_MAP_TYPE_BLOOM_FILTER` & `BPF_MAP_TYPE_CGRP_STORAGE`.

New error `InvalidTypeBinding<T>` is created to represent when a
parsed/received value binding to a type is invalid.
This is used in the new conversions added here, and also replaces
`InvalidMapTypeError` in `TryFrom` for `bpf_map_type`.
pull/1007/head
tyrone-wu 2 months ago
parent cb8e478800
commit 1634fa7188
No known key found for this signature in database
GPG Key ID: 978B1A1B79210AD6

@ -87,6 +87,7 @@ mod std {
pub mod btf;
pub mod generated;
pub mod links;
pub mod maps;
pub mod obj;
pub mod programs;

@ -0,0 +1,100 @@
//! Link type bindings.
use crate::{
generated::{bpf_attach_type, bpf_link_type},
InvalidTypeBinding,
};
impl TryFrom<u32> for bpf_link_type {
type Error = InvalidTypeBinding<u32>;
fn try_from(link_type: u32) -> Result<Self, Self::Error> {
use bpf_link_type::*;
Ok(match link_type {
x if x == BPF_LINK_TYPE_UNSPEC as u32 => BPF_LINK_TYPE_UNSPEC,
x if x == BPF_LINK_TYPE_RAW_TRACEPOINT as u32 => BPF_LINK_TYPE_RAW_TRACEPOINT,
x if x == BPF_LINK_TYPE_TRACING as u32 => BPF_LINK_TYPE_TRACING,
x if x == BPF_LINK_TYPE_CGROUP as u32 => BPF_LINK_TYPE_CGROUP,
x if x == BPF_LINK_TYPE_ITER as u32 => BPF_LINK_TYPE_ITER,
x if x == BPF_LINK_TYPE_NETNS as u32 => BPF_LINK_TYPE_NETNS,
x if x == BPF_LINK_TYPE_XDP as u32 => BPF_LINK_TYPE_XDP,
x if x == BPF_LINK_TYPE_PERF_EVENT as u32 => BPF_LINK_TYPE_PERF_EVENT,
x if x == BPF_LINK_TYPE_KPROBE_MULTI as u32 => BPF_LINK_TYPE_KPROBE_MULTI,
x if x == BPF_LINK_TYPE_STRUCT_OPS as u32 => BPF_LINK_TYPE_STRUCT_OPS,
x if x == BPF_LINK_TYPE_NETFILTER as u32 => BPF_LINK_TYPE_NETFILTER,
x if x == BPF_LINK_TYPE_TCX as u32 => BPF_LINK_TYPE_TCX,
x if x == BPF_LINK_TYPE_UPROBE_MULTI as u32 => BPF_LINK_TYPE_UPROBE_MULTI,
x if x == BPF_LINK_TYPE_NETKIT as u32 => BPF_LINK_TYPE_NETKIT,
_ => return Err(InvalidTypeBinding { value: link_type }),
})
}
}
impl TryFrom<u32> for bpf_attach_type {
type Error = InvalidTypeBinding<u32>;
fn try_from(attach_type: u32) -> Result<Self, Self::Error> {
use bpf_attach_type::*;
Ok(match attach_type {
x if x == BPF_CGROUP_INET_INGRESS as u32 => BPF_CGROUP_INET_INGRESS,
x if x == BPF_CGROUP_INET_EGRESS as u32 => BPF_CGROUP_INET_EGRESS,
x if x == BPF_CGROUP_INET_SOCK_CREATE as u32 => BPF_CGROUP_INET_SOCK_CREATE,
x if x == BPF_CGROUP_SOCK_OPS as u32 => BPF_CGROUP_SOCK_OPS,
x if x == BPF_SK_SKB_STREAM_PARSER as u32 => BPF_SK_SKB_STREAM_PARSER,
x if x == BPF_SK_SKB_STREAM_VERDICT as u32 => BPF_SK_SKB_STREAM_VERDICT,
x if x == BPF_CGROUP_DEVICE as u32 => BPF_CGROUP_DEVICE,
x if x == BPF_SK_MSG_VERDICT as u32 => BPF_SK_MSG_VERDICT,
x if x == BPF_CGROUP_INET4_BIND as u32 => BPF_CGROUP_INET4_BIND,
x if x == BPF_CGROUP_INET6_BIND as u32 => BPF_CGROUP_INET6_BIND,
x if x == BPF_CGROUP_INET4_CONNECT as u32 => BPF_CGROUP_INET4_CONNECT,
x if x == BPF_CGROUP_INET6_CONNECT as u32 => BPF_CGROUP_INET6_CONNECT,
x if x == BPF_CGROUP_INET4_POST_BIND as u32 => BPF_CGROUP_INET4_POST_BIND,
x if x == BPF_CGROUP_INET6_POST_BIND as u32 => BPF_CGROUP_INET6_POST_BIND,
x if x == BPF_CGROUP_UDP4_SENDMSG as u32 => BPF_CGROUP_UDP4_SENDMSG,
x if x == BPF_CGROUP_UDP6_SENDMSG as u32 => BPF_CGROUP_UDP6_SENDMSG,
x if x == BPF_LIRC_MODE2 as u32 => BPF_LIRC_MODE2,
x if x == BPF_FLOW_DISSECTOR as u32 => BPF_FLOW_DISSECTOR,
x if x == BPF_CGROUP_SYSCTL as u32 => BPF_CGROUP_SYSCTL,
x if x == BPF_CGROUP_UDP4_RECVMSG as u32 => BPF_CGROUP_UDP4_RECVMSG,
x if x == BPF_CGROUP_UDP6_RECVMSG as u32 => BPF_CGROUP_UDP6_RECVMSG,
x if x == BPF_CGROUP_GETSOCKOPT as u32 => BPF_CGROUP_GETSOCKOPT,
x if x == BPF_CGROUP_SETSOCKOPT as u32 => BPF_CGROUP_SETSOCKOPT,
x if x == BPF_TRACE_RAW_TP as u32 => BPF_TRACE_RAW_TP,
x if x == BPF_TRACE_FENTRY as u32 => BPF_TRACE_FENTRY,
x if x == BPF_TRACE_FEXIT as u32 => BPF_TRACE_FEXIT,
x if x == BPF_MODIFY_RETURN as u32 => BPF_MODIFY_RETURN,
x if x == BPF_LSM_MAC as u32 => BPF_LSM_MAC,
x if x == BPF_TRACE_ITER as u32 => BPF_TRACE_ITER,
x if x == BPF_CGROUP_INET4_GETPEERNAME as u32 => BPF_CGROUP_INET4_GETPEERNAME,
x if x == BPF_CGROUP_INET6_GETPEERNAME as u32 => BPF_CGROUP_INET6_GETPEERNAME,
x if x == BPF_CGROUP_INET4_GETSOCKNAME as u32 => BPF_CGROUP_INET4_GETSOCKNAME,
x if x == BPF_CGROUP_INET6_GETSOCKNAME as u32 => BPF_CGROUP_INET6_GETSOCKNAME,
x if x == BPF_XDP_DEVMAP as u32 => BPF_XDP_DEVMAP,
x if x == BPF_CGROUP_INET_SOCK_RELEASE as u32 => BPF_CGROUP_INET_SOCK_RELEASE,
x if x == BPF_XDP_CPUMAP as u32 => BPF_XDP_CPUMAP,
x if x == BPF_SK_LOOKUP as u32 => BPF_SK_LOOKUP,
x if x == BPF_XDP as u32 => BPF_XDP,
x if x == BPF_SK_SKB_VERDICT as u32 => BPF_SK_SKB_VERDICT,
x if x == BPF_SK_REUSEPORT_SELECT as u32 => BPF_SK_REUSEPORT_SELECT,
x if x == BPF_SK_REUSEPORT_SELECT_OR_MIGRATE as u32 => {
BPF_SK_REUSEPORT_SELECT_OR_MIGRATE
}
x if x == BPF_PERF_EVENT as u32 => BPF_PERF_EVENT,
x if x == BPF_TRACE_KPROBE_MULTI as u32 => BPF_TRACE_KPROBE_MULTI,
x if x == BPF_LSM_CGROUP as u32 => BPF_LSM_CGROUP,
x if x == BPF_STRUCT_OPS as u32 => BPF_STRUCT_OPS,
x if x == BPF_NETFILTER as u32 => BPF_NETFILTER,
x if x == BPF_TCX_INGRESS as u32 => BPF_TCX_INGRESS,
x if x == BPF_TCX_EGRESS as u32 => BPF_TCX_EGRESS,
x if x == BPF_TRACE_UPROBE_MULTI as u32 => BPF_TRACE_UPROBE_MULTI,
x if x == BPF_CGROUP_UNIX_CONNECT as u32 => BPF_CGROUP_UNIX_CONNECT,
x if x == BPF_CGROUP_UNIX_SENDMSG as u32 => BPF_CGROUP_UNIX_SENDMSG,
x if x == BPF_CGROUP_UNIX_RECVMSG as u32 => BPF_CGROUP_UNIX_RECVMSG,
x if x == BPF_CGROUP_UNIX_GETPEERNAME as u32 => BPF_CGROUP_UNIX_GETPEERNAME,
x if x == BPF_CGROUP_UNIX_GETSOCKNAME as u32 => BPF_CGROUP_UNIX_GETSOCKNAME,
x if x == BPF_NETKIT_PRIMARY as u32 => BPF_NETKIT_PRIMARY,
x if x == BPF_NETKIT_PEER as u32 => BPF_NETKIT_PEER,
_ => return Err(InvalidTypeBinding { value: attach_type }),
})
}
}

@ -5,16 +5,10 @@ use core::mem;
#[cfg(not(feature = "std"))]
use crate::std;
use crate::EbpfSectionKind;
/// Invalid map type encontered
pub struct InvalidMapTypeError {
/// The map type
pub map_type: u32,
}
use crate::{EbpfSectionKind, InvalidTypeBinding};
impl TryFrom<u32> for crate::generated::bpf_map_type {
type Error = InvalidMapTypeError;
type Error = InvalidTypeBinding<u32>;
fn try_from(map_type: u32) -> Result<Self, Self::Error> {
use crate::generated::bpf_map_type::*;
@ -31,7 +25,6 @@ impl TryFrom<u32> for crate::generated::bpf_map_type {
x if x == BPF_MAP_TYPE_LRU_HASH as u32 => BPF_MAP_TYPE_LRU_HASH,
x if x == BPF_MAP_TYPE_LRU_PERCPU_HASH as u32 => BPF_MAP_TYPE_LRU_PERCPU_HASH,
x if x == BPF_MAP_TYPE_LPM_TRIE as u32 => BPF_MAP_TYPE_LPM_TRIE,
x if x == BPF_MAP_TYPE_BLOOM_FILTER as u32 => BPF_MAP_TYPE_BLOOM_FILTER,
x if x == BPF_MAP_TYPE_ARRAY_OF_MAPS as u32 => BPF_MAP_TYPE_ARRAY_OF_MAPS,
x if x == BPF_MAP_TYPE_HASH_OF_MAPS as u32 => BPF_MAP_TYPE_HASH_OF_MAPS,
x if x == BPF_MAP_TYPE_DEVMAP as u32 => BPF_MAP_TYPE_DEVMAP,
@ -42,7 +35,6 @@ impl TryFrom<u32> for crate::generated::bpf_map_type {
x if x == BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED as u32 => {
BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED
}
x if x == BPF_MAP_TYPE_CGRP_STORAGE as u32 => BPF_MAP_TYPE_CGRP_STORAGE,
x if x == BPF_MAP_TYPE_REUSEPORT_SOCKARRAY as u32 => BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
x if x == BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED as u32 => {
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED
@ -58,7 +50,8 @@ impl TryFrom<u32> for crate::generated::bpf_map_type {
x if x == BPF_MAP_TYPE_BLOOM_FILTER as u32 => BPF_MAP_TYPE_BLOOM_FILTER,
x if x == BPF_MAP_TYPE_USER_RINGBUF as u32 => BPF_MAP_TYPE_USER_RINGBUF,
x if x == BPF_MAP_TYPE_CGRP_STORAGE as u32 => BPF_MAP_TYPE_CGRP_STORAGE,
_ => return Err(InvalidMapTypeError { map_type }),
x if x == BPF_MAP_TYPE_ARENA as u32 => BPF_MAP_TYPE_ARENA,
_ => return Err(InvalidTypeBinding { value: map_type }),
})
}
}

@ -987,6 +987,12 @@ pub enum ParseError {
NoBTF,
}
/// Invalid bindings to the bpf type from the parsed/received value.
pub struct InvalidTypeBinding<T> {
/// The value parsed/received.
pub value: T,
}
/// The kind of an ELF section.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum EbpfSectionKind {

@ -3,6 +3,7 @@
pub mod cgroup_sock;
pub mod cgroup_sock_addr;
pub mod cgroup_sockopt;
mod types;
pub mod xdp;
pub use cgroup_sock::CgroupSockAttachType;

@ -0,0 +1,51 @@
//! Program type bindings.
use crate::{
generated::bpf_prog_type::{self, *},
InvalidTypeBinding,
};
impl TryFrom<u32> for bpf_prog_type {
type Error = InvalidTypeBinding<u32>;
fn try_from(prog_type: u32) -> Result<Self, Self::Error> {
Ok(match prog_type {
x if x == BPF_PROG_TYPE_UNSPEC as u32 => BPF_PROG_TYPE_UNSPEC,
x if x == BPF_PROG_TYPE_SOCKET_FILTER as u32 => BPF_PROG_TYPE_SOCKET_FILTER,
x if x == BPF_PROG_TYPE_KPROBE as u32 => BPF_PROG_TYPE_KPROBE,
x if x == BPF_PROG_TYPE_SCHED_CLS as u32 => BPF_PROG_TYPE_SCHED_CLS,
x if x == BPF_PROG_TYPE_SCHED_ACT as u32 => BPF_PROG_TYPE_SCHED_ACT,
x if x == BPF_PROG_TYPE_TRACEPOINT as u32 => BPF_PROG_TYPE_TRACEPOINT,
x if x == BPF_PROG_TYPE_XDP as u32 => BPF_PROG_TYPE_XDP,
x if x == BPF_PROG_TYPE_PERF_EVENT as u32 => BPF_PROG_TYPE_PERF_EVENT,
x if x == BPF_PROG_TYPE_CGROUP_SKB as u32 => BPF_PROG_TYPE_CGROUP_SKB,
x if x == BPF_PROG_TYPE_CGROUP_SOCK as u32 => BPF_PROG_TYPE_CGROUP_SOCK,
x if x == BPF_PROG_TYPE_LWT_IN as u32 => BPF_PROG_TYPE_LWT_IN,
x if x == BPF_PROG_TYPE_LWT_OUT as u32 => BPF_PROG_TYPE_LWT_OUT,
x if x == BPF_PROG_TYPE_LWT_XMIT as u32 => BPF_PROG_TYPE_LWT_XMIT,
x if x == BPF_PROG_TYPE_SOCK_OPS as u32 => BPF_PROG_TYPE_SOCK_OPS,
x if x == BPF_PROG_TYPE_SK_SKB as u32 => BPF_PROG_TYPE_SK_SKB,
x if x == BPF_PROG_TYPE_CGROUP_DEVICE as u32 => BPF_PROG_TYPE_CGROUP_DEVICE,
x if x == BPF_PROG_TYPE_SK_MSG as u32 => BPF_PROG_TYPE_SK_MSG,
x if x == BPF_PROG_TYPE_RAW_TRACEPOINT as u32 => BPF_PROG_TYPE_RAW_TRACEPOINT,
x if x == BPF_PROG_TYPE_CGROUP_SOCK_ADDR as u32 => BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
x if x == BPF_PROG_TYPE_LWT_SEG6LOCAL as u32 => BPF_PROG_TYPE_LWT_SEG6LOCAL,
x if x == BPF_PROG_TYPE_LIRC_MODE2 as u32 => BPF_PROG_TYPE_LIRC_MODE2,
x if x == BPF_PROG_TYPE_SK_REUSEPORT as u32 => BPF_PROG_TYPE_SK_REUSEPORT,
x if x == BPF_PROG_TYPE_FLOW_DISSECTOR as u32 => BPF_PROG_TYPE_FLOW_DISSECTOR,
x if x == BPF_PROG_TYPE_CGROUP_SYSCTL as u32 => BPF_PROG_TYPE_CGROUP_SYSCTL,
x if x == BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE as u32 => {
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
}
x if x == BPF_PROG_TYPE_CGROUP_SOCKOPT as u32 => BPF_PROG_TYPE_CGROUP_SOCKOPT,
x if x == BPF_PROG_TYPE_TRACING as u32 => BPF_PROG_TYPE_TRACING,
x if x == BPF_PROG_TYPE_STRUCT_OPS as u32 => BPF_PROG_TYPE_STRUCT_OPS,
x if x == BPF_PROG_TYPE_EXT as u32 => BPF_PROG_TYPE_EXT,
x if x == BPF_PROG_TYPE_LSM as u32 => BPF_PROG_TYPE_LSM,
x if x == BPF_PROG_TYPE_SK_LOOKUP as u32 => BPF_PROG_TYPE_SK_LOOKUP,
x if x == BPF_PROG_TYPE_SYSCALL as u32 => BPF_PROG_TYPE_SYSCALL,
x if x == BPF_PROG_TYPE_NETFILTER as u32 => BPF_PROG_TYPE_NETFILTER,
_ => return Err(InvalidTypeBinding { value: prog_type }),
})
}
}

@ -59,10 +59,9 @@ use std::{
ptr,
};
use aya_obj::generated::bpf_map_type;
use aya_obj::{generated::bpf_map_type, InvalidTypeBinding};
use libc::{getrlimit, rlim_t, rlimit, RLIMIT_MEMLOCK, RLIM_INFINITY};
use log::warn;
use obj::maps::InvalidMapTypeError;
use thiserror::Error;
use crate::{
@ -203,13 +202,10 @@ pub enum MapError {
},
}
// Note that this is not just derived using #[from] because InvalidMapTypeError cannot implement
// Error due the the fact that aya-obj is no_std and error_in_core is not stabilized
// (https://github.com/rust-lang/rust/issues/103765).
impl From<InvalidMapTypeError> for MapError {
fn from(e: InvalidMapTypeError) -> Self {
let InvalidMapTypeError { map_type } = e;
Self::InvalidMapType { map_type }
impl From<InvalidTypeBinding<u32>> for MapError {
fn from(e: InvalidTypeBinding<u32>) -> Self {
let InvalidTypeBinding { value } = e;
Self::InvalidMapType { map_type: value }
}
}

@ -1458,6 +1458,9 @@ impl core::convert::From<aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachT
pub fn aya_obj::generated::bpf_attach_type::from(s: aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachType) -> aya_obj::generated::bpf_attach_type
impl core::convert::From<aya_obj::programs::xdp::XdpAttachType> for aya_obj::generated::bpf_attach_type
pub fn aya_obj::generated::bpf_attach_type::from(value: aya_obj::programs::xdp::XdpAttachType) -> Self
impl core::convert::TryFrom<u32> for aya_obj::generated::bpf_attach_type
pub type aya_obj::generated::bpf_attach_type::Error = aya_obj::InvalidTypeBinding<u32>
pub fn aya_obj::generated::bpf_attach_type::try_from(attach_type: u32) -> core::result::Result<Self, Self::Error>
impl core::fmt::Debug for aya_obj::generated::bpf_attach_type
pub fn aya_obj::generated::bpf_attach_type::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::hash::Hash for aya_obj::generated::bpf_attach_type
@ -1593,6 +1596,9 @@ pub fn aya_obj::generated::bpf_link_type::clone(&self) -> aya_obj::generated::bp
impl core::cmp::Eq for aya_obj::generated::bpf_link_type
impl core::cmp::PartialEq for aya_obj::generated::bpf_link_type
pub fn aya_obj::generated::bpf_link_type::eq(&self, other: &aya_obj::generated::bpf_link_type) -> bool
impl core::convert::TryFrom<u32> for aya_obj::generated::bpf_link_type
pub type aya_obj::generated::bpf_link_type::Error = aya_obj::InvalidTypeBinding<u32>
pub fn aya_obj::generated::bpf_link_type::try_from(link_type: u32) -> core::result::Result<Self, Self::Error>
impl core::fmt::Debug for aya_obj::generated::bpf_link_type
pub fn aya_obj::generated::bpf_link_type::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::hash::Hash for aya_obj::generated::bpf_link_type
@ -1673,7 +1679,7 @@ impl core::cmp::Eq for aya_obj::generated::bpf_map_type
impl core::cmp::PartialEq for aya_obj::generated::bpf_map_type
pub fn aya_obj::generated::bpf_map_type::eq(&self, other: &aya_obj::generated::bpf_map_type) -> bool
impl core::convert::TryFrom<u32> for aya_obj::generated::bpf_map_type
pub type aya_obj::generated::bpf_map_type::Error = aya_obj::maps::InvalidMapTypeError
pub type aya_obj::generated::bpf_map_type::Error = aya_obj::InvalidTypeBinding<u32>
pub fn aya_obj::generated::bpf_map_type::try_from(map_type: u32) -> core::result::Result<Self, Self::Error>
impl core::fmt::Debug for aya_obj::generated::bpf_map_type
pub fn aya_obj::generated::bpf_map_type::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
@ -1749,6 +1755,9 @@ pub fn aya_obj::generated::bpf_prog_type::clone(&self) -> aya_obj::generated::bp
impl core::cmp::Eq for aya_obj::generated::bpf_prog_type
impl core::cmp::PartialEq for aya_obj::generated::bpf_prog_type
pub fn aya_obj::generated::bpf_prog_type::eq(&self, other: &aya_obj::generated::bpf_prog_type) -> bool
impl core::convert::TryFrom<u32> for aya_obj::generated::bpf_prog_type
pub type aya_obj::generated::bpf_prog_type::Error = aya_obj::InvalidTypeBinding<u32>
pub fn aya_obj::generated::bpf_prog_type::try_from(prog_type: u32) -> core::result::Result<Self, Self::Error>
impl core::fmt::Debug for aya_obj::generated::bpf_prog_type
pub fn aya_obj::generated::bpf_prog_type::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::hash::Hash for aya_obj::generated::bpf_prog_type
@ -6603,6 +6612,7 @@ pub type aya_obj::generated::_bindgen_ty_7 = core::ffi::c_uint
pub type aya_obj::generated::_bindgen_ty_8 = core::ffi::c_uint
pub type aya_obj::generated::_bindgen_ty_9 = core::ffi::c_uint
pub type aya_obj::generated::_bindgen_ty_92 = core::ffi::c_uint
pub mod aya_obj::links
pub mod aya_obj::maps
pub enum aya_obj::maps::Map
pub aya_obj::maps::Map::Btf(aya_obj::maps::BtfMap)
@ -6806,30 +6816,6 @@ impl<T> core::clone::CloneToUninit for aya_obj::maps::BtfMapDef where T: core::c
pub unsafe fn aya_obj::maps::BtfMapDef::clone_to_uninit(&self, dst: *mut T)
impl<T> core::convert::From<T> for aya_obj::maps::BtfMapDef
pub fn aya_obj::maps::BtfMapDef::from(t: T) -> T
pub struct aya_obj::maps::InvalidMapTypeError
pub aya_obj::maps::InvalidMapTypeError::map_type: u32
impl core::marker::Freeze for aya_obj::maps::InvalidMapTypeError
impl core::marker::Send for aya_obj::maps::InvalidMapTypeError
impl core::marker::Sync for aya_obj::maps::InvalidMapTypeError
impl core::marker::Unpin for aya_obj::maps::InvalidMapTypeError
impl core::panic::unwind_safe::RefUnwindSafe for aya_obj::maps::InvalidMapTypeError
impl core::panic::unwind_safe::UnwindSafe for aya_obj::maps::InvalidMapTypeError
impl<T, U> core::convert::Into<U> for aya_obj::maps::InvalidMapTypeError where U: core::convert::From<T>
pub fn aya_obj::maps::InvalidMapTypeError::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya_obj::maps::InvalidMapTypeError where U: core::convert::Into<T>
pub type aya_obj::maps::InvalidMapTypeError::Error = core::convert::Infallible
pub fn aya_obj::maps::InvalidMapTypeError::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya_obj::maps::InvalidMapTypeError where U: core::convert::TryFrom<T>
pub type aya_obj::maps::InvalidMapTypeError::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya_obj::maps::InvalidMapTypeError::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> core::any::Any for aya_obj::maps::InvalidMapTypeError where T: 'static + core::marker::Sized
pub fn aya_obj::maps::InvalidMapTypeError::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya_obj::maps::InvalidMapTypeError where T: core::marker::Sized
pub fn aya_obj::maps::InvalidMapTypeError::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya_obj::maps::InvalidMapTypeError where T: core::marker::Sized
pub fn aya_obj::maps::InvalidMapTypeError::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya_obj::maps::InvalidMapTypeError
pub fn aya_obj::maps::InvalidMapTypeError::from(t: T) -> T
pub struct aya_obj::maps::LegacyMap
pub aya_obj::maps::LegacyMap::data: alloc::vec::Vec<u8>
pub aya_obj::maps::LegacyMap::def: aya_obj::maps::bpf_map_def
@ -7191,6 +7177,30 @@ impl<T> core::clone::CloneToUninit for aya_obj::Function where T: core::clone::C
pub unsafe fn aya_obj::Function::clone_to_uninit(&self, dst: *mut T)
impl<T> core::convert::From<T> for aya_obj::Function
pub fn aya_obj::Function::from(t: T) -> T
pub struct aya_obj::obj::InvalidTypeBinding<T>
pub aya_obj::obj::InvalidTypeBinding::value: T
impl<T> core::marker::Freeze for aya_obj::InvalidTypeBinding<T> where T: core::marker::Freeze
impl<T> core::marker::Send for aya_obj::InvalidTypeBinding<T> where T: core::marker::Send
impl<T> core::marker::Sync for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sync
impl<T> core::marker::Unpin for aya_obj::InvalidTypeBinding<T> where T: core::marker::Unpin
impl<T> core::panic::unwind_safe::RefUnwindSafe for aya_obj::InvalidTypeBinding<T> where T: core::panic::unwind_safe::RefUnwindSafe
impl<T> core::panic::unwind_safe::UnwindSafe for aya_obj::InvalidTypeBinding<T> where T: core::panic::unwind_safe::UnwindSafe
impl<T, U> core::convert::Into<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::From<T>
pub fn aya_obj::InvalidTypeBinding<T>::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::Into<T>
pub type aya_obj::InvalidTypeBinding<T>::Error = core::convert::Infallible
pub fn aya_obj::InvalidTypeBinding<T>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::TryFrom<T>
pub type aya_obj::InvalidTypeBinding<T>::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya_obj::InvalidTypeBinding<T>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> core::any::Any for aya_obj::InvalidTypeBinding<T> where T: 'static + core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya_obj::InvalidTypeBinding<T>
pub fn aya_obj::InvalidTypeBinding<T>::from(t: T) -> T
pub struct aya_obj::obj::Object
pub aya_obj::obj::Object::btf: core::option::Option<aya_obj::btf::Btf>
pub aya_obj::obj::Object::btf_ext: core::option::Option<aya_obj::btf::BtfExt>
@ -8025,6 +8035,30 @@ impl<T> core::clone::CloneToUninit for aya_obj::Function where T: core::clone::C
pub unsafe fn aya_obj::Function::clone_to_uninit(&self, dst: *mut T)
impl<T> core::convert::From<T> for aya_obj::Function
pub fn aya_obj::Function::from(t: T) -> T
pub struct aya_obj::InvalidTypeBinding<T>
pub aya_obj::InvalidTypeBinding::value: T
impl<T> core::marker::Freeze for aya_obj::InvalidTypeBinding<T> where T: core::marker::Freeze
impl<T> core::marker::Send for aya_obj::InvalidTypeBinding<T> where T: core::marker::Send
impl<T> core::marker::Sync for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sync
impl<T> core::marker::Unpin for aya_obj::InvalidTypeBinding<T> where T: core::marker::Unpin
impl<T> core::panic::unwind_safe::RefUnwindSafe for aya_obj::InvalidTypeBinding<T> where T: core::panic::unwind_safe::RefUnwindSafe
impl<T> core::panic::unwind_safe::UnwindSafe for aya_obj::InvalidTypeBinding<T> where T: core::panic::unwind_safe::UnwindSafe
impl<T, U> core::convert::Into<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::From<T>
pub fn aya_obj::InvalidTypeBinding<T>::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::Into<T>
pub type aya_obj::InvalidTypeBinding<T>::Error = core::convert::Infallible
pub fn aya_obj::InvalidTypeBinding<T>::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya_obj::InvalidTypeBinding<T> where U: core::convert::TryFrom<T>
pub type aya_obj::InvalidTypeBinding<T>::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya_obj::InvalidTypeBinding<T>::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> core::any::Any for aya_obj::InvalidTypeBinding<T> where T: 'static + core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya_obj::InvalidTypeBinding<T> where T: core::marker::Sized
pub fn aya_obj::InvalidTypeBinding<T>::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya_obj::InvalidTypeBinding<T>
pub fn aya_obj::InvalidTypeBinding<T>::from(t: T) -> T
pub struct aya_obj::Object
pub aya_obj::Object::btf: core::option::Option<aya_obj::btf::Btf>
pub aya_obj::Object::btf_ext: core::option::Option<aya_obj::btf::BtfExt>

@ -1371,8 +1371,8 @@ impl core::convert::From<aya::maps::MapError> for aya::programs::ProgramError
pub fn aya::programs::ProgramError::from(source: aya::maps::MapError) -> Self
impl core::convert::From<aya::sys::SyscallError> for aya::maps::MapError
pub fn aya::maps::MapError::from(source: aya::sys::SyscallError) -> Self
impl core::convert::From<aya_obj::maps::InvalidMapTypeError> for aya::maps::MapError
pub fn aya::maps::MapError::from(e: aya_obj::maps::InvalidMapTypeError) -> Self
impl core::convert::From<aya_obj::obj::InvalidTypeBinding<u32>> for aya::maps::MapError
pub fn aya::maps::MapError::from(e: aya_obj::obj::InvalidTypeBinding<u32>) -> Self
impl core::convert::From<std::io::error::Error> for aya::maps::MapError
pub fn aya::maps::MapError::from(source: std::io::error::Error) -> Self
impl core::error::Error for aya::maps::MapError

Loading…
Cancel
Save