Skip to main content

aya_obj/
links.rs

1//! Link type bindings.
2
3use crate::{
4    InvalidTypeBinding,
5    generated::{bpf_attach_type, bpf_link_type},
6};
7
8impl TryFrom<u32> for bpf_link_type {
9    type Error = InvalidTypeBinding<u32>;
10
11    fn try_from(link_type: u32) -> Result<Self, Self::Error> {
12        Ok(match link_type {
13            x if x == Self::BPF_LINK_TYPE_UNSPEC as u32 => Self::BPF_LINK_TYPE_UNSPEC,
14            x if x == Self::BPF_LINK_TYPE_RAW_TRACEPOINT as u32 => {
15                Self::BPF_LINK_TYPE_RAW_TRACEPOINT
16            }
17            x if x == Self::BPF_LINK_TYPE_TRACING as u32 => Self::BPF_LINK_TYPE_TRACING,
18            x if x == Self::BPF_LINK_TYPE_CGROUP as u32 => Self::BPF_LINK_TYPE_CGROUP,
19            x if x == Self::BPF_LINK_TYPE_ITER as u32 => Self::BPF_LINK_TYPE_ITER,
20            x if x == Self::BPF_LINK_TYPE_NETNS as u32 => Self::BPF_LINK_TYPE_NETNS,
21            x if x == Self::BPF_LINK_TYPE_XDP as u32 => Self::BPF_LINK_TYPE_XDP,
22            x if x == Self::BPF_LINK_TYPE_PERF_EVENT as u32 => Self::BPF_LINK_TYPE_PERF_EVENT,
23            x if x == Self::BPF_LINK_TYPE_KPROBE_MULTI as u32 => Self::BPF_LINK_TYPE_KPROBE_MULTI,
24            x if x == Self::BPF_LINK_TYPE_STRUCT_OPS as u32 => Self::BPF_LINK_TYPE_STRUCT_OPS,
25            x if x == Self::BPF_LINK_TYPE_NETFILTER as u32 => Self::BPF_LINK_TYPE_NETFILTER,
26            x if x == Self::BPF_LINK_TYPE_TCX as u32 => Self::BPF_LINK_TYPE_TCX,
27            x if x == Self::BPF_LINK_TYPE_UPROBE_MULTI as u32 => Self::BPF_LINK_TYPE_UPROBE_MULTI,
28            x if x == Self::BPF_LINK_TYPE_NETKIT as u32 => Self::BPF_LINK_TYPE_NETKIT,
29            _ => return Err(InvalidTypeBinding { value: link_type }),
30        })
31    }
32}
33
34impl TryFrom<u32> for bpf_attach_type {
35    type Error = InvalidTypeBinding<u32>;
36
37    fn try_from(attach_type: u32) -> Result<Self, Self::Error> {
38        Ok(match attach_type {
39            x if x == Self::BPF_CGROUP_INET_INGRESS as u32 => Self::BPF_CGROUP_INET_INGRESS,
40            x if x == Self::BPF_CGROUP_INET_EGRESS as u32 => Self::BPF_CGROUP_INET_EGRESS,
41            x if x == Self::BPF_CGROUP_INET_SOCK_CREATE as u32 => Self::BPF_CGROUP_INET_SOCK_CREATE,
42            x if x == Self::BPF_CGROUP_SOCK_OPS as u32 => Self::BPF_CGROUP_SOCK_OPS,
43            x if x == Self::BPF_SK_SKB_STREAM_PARSER as u32 => Self::BPF_SK_SKB_STREAM_PARSER,
44            x if x == Self::BPF_SK_SKB_STREAM_VERDICT as u32 => Self::BPF_SK_SKB_STREAM_VERDICT,
45            x if x == Self::BPF_CGROUP_DEVICE as u32 => Self::BPF_CGROUP_DEVICE,
46            x if x == Self::BPF_SK_MSG_VERDICT as u32 => Self::BPF_SK_MSG_VERDICT,
47            x if x == Self::BPF_CGROUP_INET4_BIND as u32 => Self::BPF_CGROUP_INET4_BIND,
48            x if x == Self::BPF_CGROUP_INET6_BIND as u32 => Self::BPF_CGROUP_INET6_BIND,
49            x if x == Self::BPF_CGROUP_INET4_CONNECT as u32 => Self::BPF_CGROUP_INET4_CONNECT,
50            x if x == Self::BPF_CGROUP_INET6_CONNECT as u32 => Self::BPF_CGROUP_INET6_CONNECT,
51            x if x == Self::BPF_CGROUP_INET4_POST_BIND as u32 => Self::BPF_CGROUP_INET4_POST_BIND,
52            x if x == Self::BPF_CGROUP_INET6_POST_BIND as u32 => Self::BPF_CGROUP_INET6_POST_BIND,
53            x if x == Self::BPF_CGROUP_UDP4_SENDMSG as u32 => Self::BPF_CGROUP_UDP4_SENDMSG,
54            x if x == Self::BPF_CGROUP_UDP6_SENDMSG as u32 => Self::BPF_CGROUP_UDP6_SENDMSG,
55            x if x == Self::BPF_LIRC_MODE2 as u32 => Self::BPF_LIRC_MODE2,
56            x if x == Self::BPF_FLOW_DISSECTOR as u32 => Self::BPF_FLOW_DISSECTOR,
57            x if x == Self::BPF_CGROUP_SYSCTL as u32 => Self::BPF_CGROUP_SYSCTL,
58            x if x == Self::BPF_CGROUP_UDP4_RECVMSG as u32 => Self::BPF_CGROUP_UDP4_RECVMSG,
59            x if x == Self::BPF_CGROUP_UDP6_RECVMSG as u32 => Self::BPF_CGROUP_UDP6_RECVMSG,
60            x if x == Self::BPF_CGROUP_GETSOCKOPT as u32 => Self::BPF_CGROUP_GETSOCKOPT,
61            x if x == Self::BPF_CGROUP_SETSOCKOPT as u32 => Self::BPF_CGROUP_SETSOCKOPT,
62            x if x == Self::BPF_TRACE_RAW_TP as u32 => Self::BPF_TRACE_RAW_TP,
63            x if x == Self::BPF_TRACE_FENTRY as u32 => Self::BPF_TRACE_FENTRY,
64            x if x == Self::BPF_TRACE_FEXIT as u32 => Self::BPF_TRACE_FEXIT,
65            x if x == Self::BPF_MODIFY_RETURN as u32 => Self::BPF_MODIFY_RETURN,
66            x if x == Self::BPF_LSM_MAC as u32 => Self::BPF_LSM_MAC,
67            x if x == Self::BPF_TRACE_ITER as u32 => Self::BPF_TRACE_ITER,
68            x if x == Self::BPF_CGROUP_INET4_GETPEERNAME as u32 => {
69                Self::BPF_CGROUP_INET4_GETPEERNAME
70            }
71            x if x == Self::BPF_CGROUP_INET6_GETPEERNAME as u32 => {
72                Self::BPF_CGROUP_INET6_GETPEERNAME
73            }
74            x if x == Self::BPF_CGROUP_INET4_GETSOCKNAME as u32 => {
75                Self::BPF_CGROUP_INET4_GETSOCKNAME
76            }
77            x if x == Self::BPF_CGROUP_INET6_GETSOCKNAME as u32 => {
78                Self::BPF_CGROUP_INET6_GETSOCKNAME
79            }
80            x if x == Self::BPF_XDP_DEVMAP as u32 => Self::BPF_XDP_DEVMAP,
81            x if x == Self::BPF_CGROUP_INET_SOCK_RELEASE as u32 => {
82                Self::BPF_CGROUP_INET_SOCK_RELEASE
83            }
84            x if x == Self::BPF_XDP_CPUMAP as u32 => Self::BPF_XDP_CPUMAP,
85            x if x == Self::BPF_SK_LOOKUP as u32 => Self::BPF_SK_LOOKUP,
86            x if x == Self::BPF_XDP as u32 => Self::BPF_XDP,
87            x if x == Self::BPF_SK_SKB_VERDICT as u32 => Self::BPF_SK_SKB_VERDICT,
88            x if x == Self::BPF_SK_REUSEPORT_SELECT as u32 => Self::BPF_SK_REUSEPORT_SELECT,
89            x if x == Self::BPF_SK_REUSEPORT_SELECT_OR_MIGRATE as u32 => {
90                Self::BPF_SK_REUSEPORT_SELECT_OR_MIGRATE
91            }
92            x if x == Self::BPF_PERF_EVENT as u32 => Self::BPF_PERF_EVENT,
93            x if x == Self::BPF_TRACE_KPROBE_MULTI as u32 => Self::BPF_TRACE_KPROBE_MULTI,
94            x if x == Self::BPF_LSM_CGROUP as u32 => Self::BPF_LSM_CGROUP,
95            x if x == Self::BPF_STRUCT_OPS as u32 => Self::BPF_STRUCT_OPS,
96            x if x == Self::BPF_NETFILTER as u32 => Self::BPF_NETFILTER,
97            x if x == Self::BPF_TCX_INGRESS as u32 => Self::BPF_TCX_INGRESS,
98            x if x == Self::BPF_TCX_EGRESS as u32 => Self::BPF_TCX_EGRESS,
99            x if x == Self::BPF_TRACE_UPROBE_MULTI as u32 => Self::BPF_TRACE_UPROBE_MULTI,
100            x if x == Self::BPF_CGROUP_UNIX_CONNECT as u32 => Self::BPF_CGROUP_UNIX_CONNECT,
101            x if x == Self::BPF_CGROUP_UNIX_SENDMSG as u32 => Self::BPF_CGROUP_UNIX_SENDMSG,
102            x if x == Self::BPF_CGROUP_UNIX_RECVMSG as u32 => Self::BPF_CGROUP_UNIX_RECVMSG,
103            x if x == Self::BPF_CGROUP_UNIX_GETPEERNAME as u32 => Self::BPF_CGROUP_UNIX_GETPEERNAME,
104            x if x == Self::BPF_CGROUP_UNIX_GETSOCKNAME as u32 => Self::BPF_CGROUP_UNIX_GETSOCKNAME,
105            x if x == Self::BPF_NETKIT_PRIMARY as u32 => Self::BPF_NETKIT_PRIMARY,
106            x if x == Self::BPF_NETKIT_PEER as u32 => Self::BPF_NETKIT_PEER,
107            _ => return Err(InvalidTypeBinding { value: attach_type }),
108        })
109    }
110}