aya_obj/programs/
types.rs1use crate::{InvalidTypeBinding, generated::bpf_prog_type};
4
5impl TryFrom<u32> for bpf_prog_type {
6 type Error = InvalidTypeBinding<u32>;
7
8 fn try_from(prog_type: u32) -> Result<Self, Self::Error> {
9 Ok(match prog_type {
10 x if x == Self::BPF_PROG_TYPE_UNSPEC as u32 => Self::BPF_PROG_TYPE_UNSPEC,
11 x if x == Self::BPF_PROG_TYPE_SOCKET_FILTER as u32 => Self::BPF_PROG_TYPE_SOCKET_FILTER,
12 x if x == Self::BPF_PROG_TYPE_KPROBE as u32 => Self::BPF_PROG_TYPE_KPROBE,
13 x if x == Self::BPF_PROG_TYPE_SCHED_CLS as u32 => Self::BPF_PROG_TYPE_SCHED_CLS,
14 x if x == Self::BPF_PROG_TYPE_SCHED_ACT as u32 => Self::BPF_PROG_TYPE_SCHED_ACT,
15 x if x == Self::BPF_PROG_TYPE_TRACEPOINT as u32 => Self::BPF_PROG_TYPE_TRACEPOINT,
16 x if x == Self::BPF_PROG_TYPE_XDP as u32 => Self::BPF_PROG_TYPE_XDP,
17 x if x == Self::BPF_PROG_TYPE_PERF_EVENT as u32 => Self::BPF_PROG_TYPE_PERF_EVENT,
18 x if x == Self::BPF_PROG_TYPE_CGROUP_SKB as u32 => Self::BPF_PROG_TYPE_CGROUP_SKB,
19 x if x == Self::BPF_PROG_TYPE_CGROUP_SOCK as u32 => Self::BPF_PROG_TYPE_CGROUP_SOCK,
20 x if x == Self::BPF_PROG_TYPE_LWT_IN as u32 => Self::BPF_PROG_TYPE_LWT_IN,
21 x if x == Self::BPF_PROG_TYPE_LWT_OUT as u32 => Self::BPF_PROG_TYPE_LWT_OUT,
22 x if x == Self::BPF_PROG_TYPE_LWT_XMIT as u32 => Self::BPF_PROG_TYPE_LWT_XMIT,
23 x if x == Self::BPF_PROG_TYPE_SOCK_OPS as u32 => Self::BPF_PROG_TYPE_SOCK_OPS,
24 x if x == Self::BPF_PROG_TYPE_SK_SKB as u32 => Self::BPF_PROG_TYPE_SK_SKB,
25 x if x == Self::BPF_PROG_TYPE_CGROUP_DEVICE as u32 => Self::BPF_PROG_TYPE_CGROUP_DEVICE,
26 x if x == Self::BPF_PROG_TYPE_SK_MSG as u32 => Self::BPF_PROG_TYPE_SK_MSG,
27 x if x == Self::BPF_PROG_TYPE_RAW_TRACEPOINT as u32 => {
28 Self::BPF_PROG_TYPE_RAW_TRACEPOINT
29 }
30 x if x == Self::BPF_PROG_TYPE_CGROUP_SOCK_ADDR as u32 => {
31 Self::BPF_PROG_TYPE_CGROUP_SOCK_ADDR
32 }
33 x if x == Self::BPF_PROG_TYPE_LWT_SEG6LOCAL as u32 => Self::BPF_PROG_TYPE_LWT_SEG6LOCAL,
34 x if x == Self::BPF_PROG_TYPE_LIRC_MODE2 as u32 => Self::BPF_PROG_TYPE_LIRC_MODE2,
35 x if x == Self::BPF_PROG_TYPE_SK_REUSEPORT as u32 => Self::BPF_PROG_TYPE_SK_REUSEPORT,
36 x if x == Self::BPF_PROG_TYPE_FLOW_DISSECTOR as u32 => {
37 Self::BPF_PROG_TYPE_FLOW_DISSECTOR
38 }
39 x if x == Self::BPF_PROG_TYPE_CGROUP_SYSCTL as u32 => Self::BPF_PROG_TYPE_CGROUP_SYSCTL,
40 x if x == Self::BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE as u32 => {
41 Self::BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
42 }
43 x if x == Self::BPF_PROG_TYPE_CGROUP_SOCKOPT as u32 => {
44 Self::BPF_PROG_TYPE_CGROUP_SOCKOPT
45 }
46 x if x == Self::BPF_PROG_TYPE_TRACING as u32 => Self::BPF_PROG_TYPE_TRACING,
47 x if x == Self::BPF_PROG_TYPE_STRUCT_OPS as u32 => Self::BPF_PROG_TYPE_STRUCT_OPS,
48 x if x == Self::BPF_PROG_TYPE_EXT as u32 => Self::BPF_PROG_TYPE_EXT,
49 x if x == Self::BPF_PROG_TYPE_LSM as u32 => Self::BPF_PROG_TYPE_LSM,
50 x if x == Self::BPF_PROG_TYPE_SK_LOOKUP as u32 => Self::BPF_PROG_TYPE_SK_LOOKUP,
51 x if x == Self::BPF_PROG_TYPE_SYSCALL as u32 => Self::BPF_PROG_TYPE_SYSCALL,
52 x if x == Self::BPF_PROG_TYPE_NETFILTER as u32 => Self::BPF_PROG_TYPE_NETFILTER,
53 _ => return Err(InvalidTypeBinding { value: prog_type }),
54 })
55 }
56}