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