Răsfoiți Sursa

aya, aya-bpf-bindings: regenerate bindings

Alessandro Decina 3 ani în urmă
părinte
comite
122a5306e7

+ 128 - 51
aya/src/generated/linux_bindings_aarch64.rs

@@ -94,7 +94,9 @@ pub const BPF_ALU64: u32 = 7;
 pub const BPF_DW: u32 = 24;
 pub const BPF_CALL: u32 = 128;
 pub const BPF_PSEUDO_MAP_FD: u32 = 1;
+pub const BPF_PSEUDO_MAP_IDX: u32 = 5;
 pub const BPF_PSEUDO_MAP_VALUE: u32 = 2;
+pub const BPF_PSEUDO_MAP_IDX_VALUE: u32 = 6;
 pub const BPF_PSEUDO_BTF_ID: u32 = 3;
 pub const BPF_PSEUDO_FUNC: u32 = 4;
 pub const BPF_PSEUDO_CALL: u32 = 1;
@@ -199,6 +201,9 @@ impl bpf_insn {
         __bindgen_bitfield_unit
     }
 }
+impl bpf_cmd {
+    pub const BPF_PROG_RUN: bpf_cmd = bpf_cmd::BPF_PROG_TEST_RUN;
+}
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
 pub enum bpf_cmd {
@@ -307,6 +312,7 @@ pub enum bpf_prog_type {
     BPF_PROG_TYPE_EXT = 28,
     BPF_PROG_TYPE_LSM = 29,
     BPF_PROG_TYPE_SK_LOOKUP = 30,
+    BPF_PROG_TYPE_SYSCALL = 31,
 }
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -350,7 +356,9 @@ pub enum bpf_attach_type {
     BPF_SK_LOOKUP = 36,
     BPF_XDP = 37,
     BPF_SK_SKB_VERDICT = 38,
-    __MAX_BPF_ATTACH_TYPE = 39,
+    BPF_SK_REUSEPORT_SELECT = 39,
+    BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40,
+    __MAX_BPF_ATTACH_TYPE = 41,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -374,7 +382,7 @@ pub union bpf_attr {
     pub enable_stats: bpf_attr__bindgen_ty_17,
     pub iter_create: bpf_attr__bindgen_ty_18,
     pub prog_bind_map: bpf_attr__bindgen_ty_19,
-    _bindgen_union_align: [u64; 15usize],
+    _bindgen_union_align: [u64; 16usize],
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -444,6 +452,9 @@ pub struct bpf_attr__bindgen_ty_4 {
     pub line_info_cnt: __u32,
     pub attach_btf_id: __u32,
     pub __bindgen_anon_1: bpf_attr__bindgen_ty_4__bindgen_ty_1,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
+    pub fd_array: __u64,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -452,6 +463,13 @@ pub union bpf_attr__bindgen_ty_4__bindgen_ty_1 {
     pub attach_btf_obj_fd: __u32,
     _bindgen_union_align: u32,
 }
+impl bpf_attr__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_attr__bindgen_ty_5 {
@@ -761,7 +779,7 @@ pub enum perf_sw_ids {
     PERF_COUNT_SW_BPF_OUTPUT = 10,
     PERF_COUNT_SW_MAX = 11,
 }
-#[repr(u32)]
+#[repr(u64)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
 pub enum perf_event_sample_format {
     PERF_SAMPLE_IP = 1,
@@ -785,6 +803,7 @@ pub enum perf_event_sample_format {
     PERF_SAMPLE_REGS_INTR = 262144,
     PERF_SAMPLE_PHYS_ADDR = 524288,
     PERF_SAMPLE_MAX = 1048576,
+    __PERF_SAMPLE_CALLCHAIN_EARLY = 9223372036854775808,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -795,7 +814,7 @@ pub struct perf_event_attr {
     pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
     pub sample_type: __u64,
     pub read_format: __u64,
-    pub _bitfield_align_1: [u64; 0],
+    pub _bitfield_align_1: [u32; 0],
     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
     pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2,
     pub bp_type: __u32,
@@ -828,6 +847,8 @@ pub union perf_event_attr__bindgen_ty_2 {
 #[derive(Copy, Clone)]
 pub union perf_event_attr__bindgen_ty_3 {
     pub bp_addr: __u64,
+    pub kprobe_func: __u64,
+    pub uprobe_path: __u64,
     pub config1: __u64,
     _bindgen_union_align: u64,
 }
@@ -835,6 +856,8 @@ pub union perf_event_attr__bindgen_ty_3 {
 #[derive(Copy, Clone)]
 pub union perf_event_attr__bindgen_ty_4 {
     pub bp_len: __u64,
+    pub kprobe_addr: __u64,
+    pub probe_offset: __u64,
     pub config2: __u64,
     _bindgen_union_align: u64,
 }
@@ -1148,14 +1171,47 @@ impl perf_event_attr {
         }
     }
     #[inline]
+    pub fn ksymbol(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_ksymbol(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(29usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn bpf_event(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_bpf_event(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(30usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn aux_output(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_aux_output(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(31usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn __reserved_1(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 35u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u64) }
     }
     #[inline]
     pub fn set___reserved_1(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(29usize, 35u8, val as u64)
+            self._bitfield_1.set(32usize, 32u8, val as u64)
         }
     }
     #[inline]
@@ -1188,6 +1244,9 @@ impl perf_event_attr {
         context_switch: __u64,
         write_backward: __u64,
         namespaces: __u64,
+        ksymbol: __u64,
+        bpf_event: __u64,
+        aux_output: __u64,
         __reserved_1: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1305,7 +1364,19 @@ impl perf_event_attr {
             let namespaces: u64 = unsafe { ::std::mem::transmute(namespaces) };
             namespaces as u64
         });
-        __bindgen_bitfield_unit.set(29usize, 35u8, {
+        __bindgen_bitfield_unit.set(29usize, 1u8, {
+            let ksymbol: u64 = unsafe { ::std::mem::transmute(ksymbol) };
+            ksymbol as u64
+        });
+        __bindgen_bitfield_unit.set(30usize, 1u8, {
+            let bpf_event: u64 = unsafe { ::std::mem::transmute(bpf_event) };
+            bpf_event as u64
+        });
+        __bindgen_bitfield_unit.set(31usize, 1u8, {
+            let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
+            aux_output as u64
+        });
+        __bindgen_bitfield_unit.set(32usize, 32u8, {
             let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
             __reserved_1 as u64
         });
@@ -1484,21 +1555,23 @@ pub enum perf_event_type {
     PERF_RECORD_SWITCH = 14,
     PERF_RECORD_SWITCH_CPU_WIDE = 15,
     PERF_RECORD_NAMESPACES = 16,
-    PERF_RECORD_MAX = 17,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_79 = _bindgen_ty_79::__IFLA_XDP_MAX;
+    PERF_RECORD_KSYMBOL = 17,
+    PERF_RECORD_BPF_EVENT = 18,
+    PERF_RECORD_MAX = 19,
+}
+pub const IFLA_XDP_UNSPEC: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_UNSPEC;
+pub const IFLA_XDP_FD: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_FD;
+pub const IFLA_XDP_ATTACHED: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_ATTACHED;
+pub const IFLA_XDP_FLAGS: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_FLAGS;
+pub const IFLA_XDP_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_PROG_ID;
+pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_DRV_PROG_ID;
+pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_SKB_PROG_ID;
+pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_HW_PROG_ID;
+pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_EXPECTED_FD;
+pub const __IFLA_XDP_MAX: _bindgen_ty_80 = _bindgen_ty_80::__IFLA_XDP_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_79 {
+pub enum _bindgen_ty_80 {
     IFLA_XDP_UNSPEC = 0,
     IFLA_XDP_FD = 1,
     IFLA_XDP_ATTACHED = 2,
@@ -1531,23 +1604,25 @@ pub struct tcmsg {
     pub tcm_parent: __u32,
     pub tcm_info: __u32,
 }
-pub const TCA_UNSPEC: _bindgen_ty_91 = _bindgen_ty_91::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_91 = _bindgen_ty_91::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_91 = _bindgen_ty_91::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_91 = _bindgen_ty_91::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_91 = _bindgen_ty_91::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_91 = _bindgen_ty_91::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_91 = _bindgen_ty_91::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_91 = _bindgen_ty_91::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_91 = _bindgen_ty_91::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_91 = _bindgen_ty_91::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_91 = _bindgen_ty_91::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_91 = _bindgen_ty_91::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_91 = _bindgen_ty_91::TCA_HW_OFFLOAD;
-pub const __TCA_MAX: _bindgen_ty_91 = _bindgen_ty_91::__TCA_MAX;
+pub const TCA_UNSPEC: _bindgen_ty_92 = _bindgen_ty_92::TCA_UNSPEC;
+pub const TCA_KIND: _bindgen_ty_92 = _bindgen_ty_92::TCA_KIND;
+pub const TCA_OPTIONS: _bindgen_ty_92 = _bindgen_ty_92::TCA_OPTIONS;
+pub const TCA_STATS: _bindgen_ty_92 = _bindgen_ty_92::TCA_STATS;
+pub const TCA_XSTATS: _bindgen_ty_92 = _bindgen_ty_92::TCA_XSTATS;
+pub const TCA_RATE: _bindgen_ty_92 = _bindgen_ty_92::TCA_RATE;
+pub const TCA_FCNT: _bindgen_ty_92 = _bindgen_ty_92::TCA_FCNT;
+pub const TCA_STATS2: _bindgen_ty_92 = _bindgen_ty_92::TCA_STATS2;
+pub const TCA_STAB: _bindgen_ty_92 = _bindgen_ty_92::TCA_STAB;
+pub const TCA_PAD: _bindgen_ty_92 = _bindgen_ty_92::TCA_PAD;
+pub const TCA_DUMP_INVISIBLE: _bindgen_ty_92 = _bindgen_ty_92::TCA_DUMP_INVISIBLE;
+pub const TCA_CHAIN: _bindgen_ty_92 = _bindgen_ty_92::TCA_CHAIN;
+pub const TCA_HW_OFFLOAD: _bindgen_ty_92 = _bindgen_ty_92::TCA_HW_OFFLOAD;
+pub const TCA_INGRESS_BLOCK: _bindgen_ty_92 = _bindgen_ty_92::TCA_INGRESS_BLOCK;
+pub const TCA_EGRESS_BLOCK: _bindgen_ty_92 = _bindgen_ty_92::TCA_EGRESS_BLOCK;
+pub const __TCA_MAX: _bindgen_ty_92 = _bindgen_ty_92::__TCA_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_91 {
+pub enum _bindgen_ty_92 {
     TCA_UNSPEC = 0,
     TCA_KIND = 1,
     TCA_OPTIONS = 2,
@@ -1561,24 +1636,26 @@ pub enum _bindgen_ty_91 {
     TCA_DUMP_INVISIBLE = 10,
     TCA_CHAIN = 11,
     TCA_HW_OFFLOAD = 12,
-    __TCA_MAX = 13,
-}
-pub const TCA_BPF_UNSPEC: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_UNSPEC;
-pub const TCA_BPF_ACT: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_ACT;
-pub const TCA_BPF_POLICE: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_POLICE;
-pub const TCA_BPF_CLASSID: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_CLASSID;
-pub const TCA_BPF_OPS_LEN: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_OPS_LEN;
-pub const TCA_BPF_OPS: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_OPS;
-pub const TCA_BPF_FD: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FD;
-pub const TCA_BPF_NAME: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_NAME;
-pub const TCA_BPF_FLAGS: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FLAGS;
-pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FLAGS_GEN;
-pub const TCA_BPF_TAG: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_TAG;
-pub const TCA_BPF_ID: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_ID;
-pub const __TCA_BPF_MAX: _bindgen_ty_133 = _bindgen_ty_133::__TCA_BPF_MAX;
+    TCA_INGRESS_BLOCK = 13,
+    TCA_EGRESS_BLOCK = 14,
+    __TCA_MAX = 15,
+}
+pub const TCA_BPF_UNSPEC: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_UNSPEC;
+pub const TCA_BPF_ACT: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_ACT;
+pub const TCA_BPF_POLICE: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_POLICE;
+pub const TCA_BPF_CLASSID: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_CLASSID;
+pub const TCA_BPF_OPS_LEN: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_OPS_LEN;
+pub const TCA_BPF_OPS: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_OPS;
+pub const TCA_BPF_FD: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FD;
+pub const TCA_BPF_NAME: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_NAME;
+pub const TCA_BPF_FLAGS: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FLAGS;
+pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FLAGS_GEN;
+pub const TCA_BPF_TAG: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_TAG;
+pub const TCA_BPF_ID: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_ID;
+pub const __TCA_BPF_MAX: _bindgen_ty_147 = _bindgen_ty_147::__TCA_BPF_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_133 {
+pub enum _bindgen_ty_147 {
     TCA_BPF_UNSPEC = 0,
     TCA_BPF_ACT = 1,
     TCA_BPF_POLICE = 2,

+ 128 - 51
aya/src/generated/linux_bindings_x86_64.rs

@@ -94,7 +94,9 @@ pub const BPF_ALU64: u32 = 7;
 pub const BPF_DW: u32 = 24;
 pub const BPF_CALL: u32 = 128;
 pub const BPF_PSEUDO_MAP_FD: u32 = 1;
+pub const BPF_PSEUDO_MAP_IDX: u32 = 5;
 pub const BPF_PSEUDO_MAP_VALUE: u32 = 2;
+pub const BPF_PSEUDO_MAP_IDX_VALUE: u32 = 6;
 pub const BPF_PSEUDO_BTF_ID: u32 = 3;
 pub const BPF_PSEUDO_FUNC: u32 = 4;
 pub const BPF_PSEUDO_CALL: u32 = 1;
@@ -199,6 +201,9 @@ impl bpf_insn {
         __bindgen_bitfield_unit
     }
 }
+impl bpf_cmd {
+    pub const BPF_PROG_RUN: bpf_cmd = bpf_cmd::BPF_PROG_TEST_RUN;
+}
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
 pub enum bpf_cmd {
@@ -307,6 +312,7 @@ pub enum bpf_prog_type {
     BPF_PROG_TYPE_EXT = 28,
     BPF_PROG_TYPE_LSM = 29,
     BPF_PROG_TYPE_SK_LOOKUP = 30,
+    BPF_PROG_TYPE_SYSCALL = 31,
 }
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -350,7 +356,9 @@ pub enum bpf_attach_type {
     BPF_SK_LOOKUP = 36,
     BPF_XDP = 37,
     BPF_SK_SKB_VERDICT = 38,
-    __MAX_BPF_ATTACH_TYPE = 39,
+    BPF_SK_REUSEPORT_SELECT = 39,
+    BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40,
+    __MAX_BPF_ATTACH_TYPE = 41,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -374,7 +382,7 @@ pub union bpf_attr {
     pub enable_stats: bpf_attr__bindgen_ty_17,
     pub iter_create: bpf_attr__bindgen_ty_18,
     pub prog_bind_map: bpf_attr__bindgen_ty_19,
-    _bindgen_union_align: [u64; 15usize],
+    _bindgen_union_align: [u64; 16usize],
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -444,6 +452,9 @@ pub struct bpf_attr__bindgen_ty_4 {
     pub line_info_cnt: __u32,
     pub attach_btf_id: __u32,
     pub __bindgen_anon_1: bpf_attr__bindgen_ty_4__bindgen_ty_1,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
+    pub fd_array: __u64,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -452,6 +463,13 @@ pub union bpf_attr__bindgen_ty_4__bindgen_ty_1 {
     pub attach_btf_obj_fd: __u32,
     _bindgen_union_align: u32,
 }
+impl bpf_attr__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_attr__bindgen_ty_5 {
@@ -761,7 +779,7 @@ pub enum perf_sw_ids {
     PERF_COUNT_SW_BPF_OUTPUT = 10,
     PERF_COUNT_SW_MAX = 11,
 }
-#[repr(u32)]
+#[repr(u64)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
 pub enum perf_event_sample_format {
     PERF_SAMPLE_IP = 1,
@@ -785,6 +803,7 @@ pub enum perf_event_sample_format {
     PERF_SAMPLE_REGS_INTR = 262144,
     PERF_SAMPLE_PHYS_ADDR = 524288,
     PERF_SAMPLE_MAX = 1048576,
+    __PERF_SAMPLE_CALLCHAIN_EARLY = 9223372036854775808,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -795,7 +814,7 @@ pub struct perf_event_attr {
     pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
     pub sample_type: __u64,
     pub read_format: __u64,
-    pub _bitfield_align_1: [u64; 0],
+    pub _bitfield_align_1: [u32; 0],
     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
     pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2,
     pub bp_type: __u32,
@@ -828,6 +847,8 @@ pub union perf_event_attr__bindgen_ty_2 {
 #[derive(Copy, Clone)]
 pub union perf_event_attr__bindgen_ty_3 {
     pub bp_addr: __u64,
+    pub kprobe_func: __u64,
+    pub uprobe_path: __u64,
     pub config1: __u64,
     _bindgen_union_align: u64,
 }
@@ -835,6 +856,8 @@ pub union perf_event_attr__bindgen_ty_3 {
 #[derive(Copy, Clone)]
 pub union perf_event_attr__bindgen_ty_4 {
     pub bp_len: __u64,
+    pub kprobe_addr: __u64,
+    pub probe_offset: __u64,
     pub config2: __u64,
     _bindgen_union_align: u64,
 }
@@ -1148,14 +1171,47 @@ impl perf_event_attr {
         }
     }
     #[inline]
+    pub fn ksymbol(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_ksymbol(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(29usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn bpf_event(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_bpf_event(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(30usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn aux_output(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_aux_output(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(31usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn __reserved_1(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 35u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u64) }
     }
     #[inline]
     pub fn set___reserved_1(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(29usize, 35u8, val as u64)
+            self._bitfield_1.set(32usize, 32u8, val as u64)
         }
     }
     #[inline]
@@ -1188,6 +1244,9 @@ impl perf_event_attr {
         context_switch: __u64,
         write_backward: __u64,
         namespaces: __u64,
+        ksymbol: __u64,
+        bpf_event: __u64,
+        aux_output: __u64,
         __reserved_1: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1305,7 +1364,19 @@ impl perf_event_attr {
             let namespaces: u64 = unsafe { ::std::mem::transmute(namespaces) };
             namespaces as u64
         });
-        __bindgen_bitfield_unit.set(29usize, 35u8, {
+        __bindgen_bitfield_unit.set(29usize, 1u8, {
+            let ksymbol: u64 = unsafe { ::std::mem::transmute(ksymbol) };
+            ksymbol as u64
+        });
+        __bindgen_bitfield_unit.set(30usize, 1u8, {
+            let bpf_event: u64 = unsafe { ::std::mem::transmute(bpf_event) };
+            bpf_event as u64
+        });
+        __bindgen_bitfield_unit.set(31usize, 1u8, {
+            let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
+            aux_output as u64
+        });
+        __bindgen_bitfield_unit.set(32usize, 32u8, {
             let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
             __reserved_1 as u64
         });
@@ -1484,21 +1555,23 @@ pub enum perf_event_type {
     PERF_RECORD_SWITCH = 14,
     PERF_RECORD_SWITCH_CPU_WIDE = 15,
     PERF_RECORD_NAMESPACES = 16,
-    PERF_RECORD_MAX = 17,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_79 = _bindgen_ty_79::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_79 = _bindgen_ty_79::__IFLA_XDP_MAX;
+    PERF_RECORD_KSYMBOL = 17,
+    PERF_RECORD_BPF_EVENT = 18,
+    PERF_RECORD_MAX = 19,
+}
+pub const IFLA_XDP_UNSPEC: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_UNSPEC;
+pub const IFLA_XDP_FD: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_FD;
+pub const IFLA_XDP_ATTACHED: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_ATTACHED;
+pub const IFLA_XDP_FLAGS: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_FLAGS;
+pub const IFLA_XDP_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_PROG_ID;
+pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_DRV_PROG_ID;
+pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_SKB_PROG_ID;
+pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_HW_PROG_ID;
+pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_80 = _bindgen_ty_80::IFLA_XDP_EXPECTED_FD;
+pub const __IFLA_XDP_MAX: _bindgen_ty_80 = _bindgen_ty_80::__IFLA_XDP_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_79 {
+pub enum _bindgen_ty_80 {
     IFLA_XDP_UNSPEC = 0,
     IFLA_XDP_FD = 1,
     IFLA_XDP_ATTACHED = 2,
@@ -1531,23 +1604,25 @@ pub struct tcmsg {
     pub tcm_parent: __u32,
     pub tcm_info: __u32,
 }
-pub const TCA_UNSPEC: _bindgen_ty_91 = _bindgen_ty_91::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_91 = _bindgen_ty_91::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_91 = _bindgen_ty_91::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_91 = _bindgen_ty_91::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_91 = _bindgen_ty_91::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_91 = _bindgen_ty_91::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_91 = _bindgen_ty_91::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_91 = _bindgen_ty_91::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_91 = _bindgen_ty_91::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_91 = _bindgen_ty_91::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_91 = _bindgen_ty_91::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_91 = _bindgen_ty_91::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_91 = _bindgen_ty_91::TCA_HW_OFFLOAD;
-pub const __TCA_MAX: _bindgen_ty_91 = _bindgen_ty_91::__TCA_MAX;
+pub const TCA_UNSPEC: _bindgen_ty_92 = _bindgen_ty_92::TCA_UNSPEC;
+pub const TCA_KIND: _bindgen_ty_92 = _bindgen_ty_92::TCA_KIND;
+pub const TCA_OPTIONS: _bindgen_ty_92 = _bindgen_ty_92::TCA_OPTIONS;
+pub const TCA_STATS: _bindgen_ty_92 = _bindgen_ty_92::TCA_STATS;
+pub const TCA_XSTATS: _bindgen_ty_92 = _bindgen_ty_92::TCA_XSTATS;
+pub const TCA_RATE: _bindgen_ty_92 = _bindgen_ty_92::TCA_RATE;
+pub const TCA_FCNT: _bindgen_ty_92 = _bindgen_ty_92::TCA_FCNT;
+pub const TCA_STATS2: _bindgen_ty_92 = _bindgen_ty_92::TCA_STATS2;
+pub const TCA_STAB: _bindgen_ty_92 = _bindgen_ty_92::TCA_STAB;
+pub const TCA_PAD: _bindgen_ty_92 = _bindgen_ty_92::TCA_PAD;
+pub const TCA_DUMP_INVISIBLE: _bindgen_ty_92 = _bindgen_ty_92::TCA_DUMP_INVISIBLE;
+pub const TCA_CHAIN: _bindgen_ty_92 = _bindgen_ty_92::TCA_CHAIN;
+pub const TCA_HW_OFFLOAD: _bindgen_ty_92 = _bindgen_ty_92::TCA_HW_OFFLOAD;
+pub const TCA_INGRESS_BLOCK: _bindgen_ty_92 = _bindgen_ty_92::TCA_INGRESS_BLOCK;
+pub const TCA_EGRESS_BLOCK: _bindgen_ty_92 = _bindgen_ty_92::TCA_EGRESS_BLOCK;
+pub const __TCA_MAX: _bindgen_ty_92 = _bindgen_ty_92::__TCA_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_91 {
+pub enum _bindgen_ty_92 {
     TCA_UNSPEC = 0,
     TCA_KIND = 1,
     TCA_OPTIONS = 2,
@@ -1561,24 +1636,26 @@ pub enum _bindgen_ty_91 {
     TCA_DUMP_INVISIBLE = 10,
     TCA_CHAIN = 11,
     TCA_HW_OFFLOAD = 12,
-    __TCA_MAX = 13,
-}
-pub const TCA_BPF_UNSPEC: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_UNSPEC;
-pub const TCA_BPF_ACT: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_ACT;
-pub const TCA_BPF_POLICE: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_POLICE;
-pub const TCA_BPF_CLASSID: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_CLASSID;
-pub const TCA_BPF_OPS_LEN: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_OPS_LEN;
-pub const TCA_BPF_OPS: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_OPS;
-pub const TCA_BPF_FD: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FD;
-pub const TCA_BPF_NAME: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_NAME;
-pub const TCA_BPF_FLAGS: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FLAGS;
-pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_FLAGS_GEN;
-pub const TCA_BPF_TAG: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_TAG;
-pub const TCA_BPF_ID: _bindgen_ty_133 = _bindgen_ty_133::TCA_BPF_ID;
-pub const __TCA_BPF_MAX: _bindgen_ty_133 = _bindgen_ty_133::__TCA_BPF_MAX;
+    TCA_INGRESS_BLOCK = 13,
+    TCA_EGRESS_BLOCK = 14,
+    __TCA_MAX = 15,
+}
+pub const TCA_BPF_UNSPEC: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_UNSPEC;
+pub const TCA_BPF_ACT: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_ACT;
+pub const TCA_BPF_POLICE: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_POLICE;
+pub const TCA_BPF_CLASSID: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_CLASSID;
+pub const TCA_BPF_OPS_LEN: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_OPS_LEN;
+pub const TCA_BPF_OPS: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_OPS;
+pub const TCA_BPF_FD: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FD;
+pub const TCA_BPF_NAME: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_NAME;
+pub const TCA_BPF_FLAGS: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FLAGS;
+pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_FLAGS_GEN;
+pub const TCA_BPF_TAG: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_TAG;
+pub const TCA_BPF_ID: _bindgen_ty_147 = _bindgen_ty_147::TCA_BPF_ID;
+pub const __TCA_BPF_MAX: _bindgen_ty_147 = _bindgen_ty_147::__TCA_BPF_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_133 {
+pub enum _bindgen_ty_147 {
     TCA_BPF_UNSPEC = 0,
     TCA_BPF_ACT = 1,
     TCA_BPF_POLICE = 2,

+ 3 - 5
aya/src/sys/netlink.rs

@@ -10,11 +10,9 @@ use libc::{
 
 use crate::{
     generated::{
-        _bindgen_ty_133::{TCA_BPF_FD, TCA_BPF_FLAGS, TCA_BPF_NAME},
-        _bindgen_ty_79::{IFLA_XDP_EXPECTED_FD, IFLA_XDP_FD, IFLA_XDP_FLAGS},
-        _bindgen_ty_91::{TCA_KIND, TCA_OPTIONS},
-        ifinfomsg, tcmsg, NLMSG_ALIGNTO, TCA_BPF_FLAG_ACT_DIRECT, TC_H_CLSACT, TC_H_INGRESS,
-        TC_H_MAJ_MASK, TC_H_UNSPEC, XDP_FLAGS_REPLACE,
+        ifinfomsg, tcmsg, IFLA_XDP_EXPECTED_FD, IFLA_XDP_FD, IFLA_XDP_FLAGS, NLMSG_ALIGNTO,
+        TCA_BPF_FD, TCA_BPF_FLAGS, TCA_BPF_FLAG_ACT_DIRECT, TCA_BPF_NAME, TCA_KIND, TCA_OPTIONS,
+        TC_H_CLSACT, TC_H_INGRESS, TC_H_MAJ_MASK, TC_H_UNSPEC, XDP_FLAGS_REPLACE,
     },
     programs::TcAttachType,
     util::tc_handler_make,

+ 275 - 91
bpf/aya-bpf-bindings/src/aarch64/bindings.rs

@@ -117,6 +117,7 @@ pub const BPF_MAXINSNS: u32 = 4096;
 pub const BPF_JMP32: u32 = 6;
 pub const BPF_ALU64: u32 = 7;
 pub const BPF_DW: u32 = 24;
+pub const BPF_ATOMIC: u32 = 192;
 pub const BPF_XADD: u32 = 192;
 pub const BPF_MOV: u32 = 176;
 pub const BPF_ARSH: u32 = 192;
@@ -134,77 +135,30 @@ pub const BPF_JSLT: u32 = 192;
 pub const BPF_JSLE: u32 = 208;
 pub const BPF_CALL: u32 = 128;
 pub const BPF_EXIT: u32 = 144;
+pub const BPF_FETCH: u32 = 1;
+pub const BPF_XCHG: u32 = 225;
+pub const BPF_CMPXCHG: u32 = 241;
 pub const BPF_F_ALLOW_OVERRIDE: u32 = 1;
 pub const BPF_F_ALLOW_MULTI: u32 = 2;
+pub const BPF_F_REPLACE: u32 = 4;
 pub const BPF_F_STRICT_ALIGNMENT: u32 = 1;
 pub const BPF_F_ANY_ALIGNMENT: u32 = 2;
 pub const BPF_F_TEST_RND_HI32: u32 = 4;
 pub const BPF_F_TEST_STATE_FREQ: u32 = 8;
+pub const BPF_F_SLEEPABLE: u32 = 16;
 pub const BPF_PSEUDO_MAP_FD: u32 = 1;
+pub const BPF_PSEUDO_MAP_IDX: u32 = 5;
 pub const BPF_PSEUDO_MAP_VALUE: u32 = 2;
+pub const BPF_PSEUDO_MAP_IDX_VALUE: u32 = 6;
+pub const BPF_PSEUDO_BTF_ID: u32 = 3;
+pub const BPF_PSEUDO_FUNC: u32 = 4;
 pub const BPF_PSEUDO_CALL: u32 = 1;
-pub const BPF_ANY: u32 = 0;
-pub const BPF_NOEXIST: u32 = 1;
-pub const BPF_EXIST: u32 = 2;
-pub const BPF_F_LOCK: u32 = 4;
-pub const BPF_F_NO_PREALLOC: u32 = 1;
-pub const BPF_F_NO_COMMON_LRU: u32 = 2;
-pub const BPF_F_NUMA_NODE: u32 = 4;
-pub const BPF_OBJ_NAME_LEN: u32 = 16;
-pub const BPF_F_RDONLY: u32 = 8;
-pub const BPF_F_WRONLY: u32 = 16;
-pub const BPF_F_STACK_BUILD_ID: u32 = 32;
-pub const BPF_F_ZERO_SEED: u32 = 64;
-pub const BPF_F_RDONLY_PROG: u32 = 128;
-pub const BPF_F_WRONLY_PROG: u32 = 256;
-pub const BPF_F_CLONE: u32 = 512;
+pub const BPF_PSEUDO_KFUNC_CALL: u32 = 2;
 pub const BPF_F_QUERY_EFFECTIVE: u32 = 1;
+pub const BPF_F_TEST_RUN_ON_CPU: u32 = 1;
 pub const BPF_BUILD_ID_SIZE: u32 = 20;
-pub const BPF_F_RECOMPUTE_CSUM: u32 = 1;
-pub const BPF_F_INVALIDATE_HASH: u32 = 2;
-pub const BPF_F_HDR_FIELD_MASK: u32 = 15;
-pub const BPF_F_PSEUDO_HDR: u32 = 16;
-pub const BPF_F_MARK_MANGLED_0: u32 = 32;
-pub const BPF_F_MARK_ENFORCE: u32 = 64;
-pub const BPF_F_INGRESS: u32 = 1;
-pub const BPF_F_TUNINFO_IPV6: u32 = 1;
-pub const BPF_F_SKIP_FIELD_MASK: u32 = 255;
-pub const BPF_F_USER_STACK: u32 = 256;
-pub const BPF_F_FAST_STACK_CMP: u32 = 512;
-pub const BPF_F_REUSE_STACKID: u32 = 1024;
-pub const BPF_F_USER_BUILD_ID: u32 = 2048;
-pub const BPF_F_ZERO_CSUM_TX: u32 = 2;
-pub const BPF_F_DONT_FRAGMENT: u32 = 4;
-pub const BPF_F_SEQ_NUMBER: u32 = 8;
-pub const BPF_F_INDEX_MASK: u32 = 4294967295;
-pub const BPF_F_CURRENT_CPU: u32 = 4294967295;
-pub const BPF_F_CTXLEN_MASK: u64 = 4503595332403200;
-pub const BPF_F_CURRENT_NETNS: i32 = -1;
-pub const BPF_F_ADJ_ROOM_FIXED_GSO: u32 = 1;
-pub const BPF_ADJ_ROOM_ENCAP_L2_MASK: u32 = 255;
-pub const BPF_ADJ_ROOM_ENCAP_L2_SHIFT: u32 = 56;
-pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV4: u32 = 2;
-pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: u32 = 4;
-pub const BPF_F_ADJ_ROOM_ENCAP_L4_GRE: u32 = 8;
-pub const BPF_F_ADJ_ROOM_ENCAP_L4_UDP: u32 = 16;
-pub const BPF_F_SYSCTL_BASE_NAME: u32 = 1;
-pub const BPF_SK_STORAGE_GET_F_CREATE: u32 = 1;
+pub const BPF_OBJ_NAME_LEN: u32 = 16;
 pub const BPF_TAG_SIZE: u32 = 8;
-pub const BPF_SOCK_OPS_RTO_CB_FLAG: u32 = 1;
-pub const BPF_SOCK_OPS_RETRANS_CB_FLAG: u32 = 2;
-pub const BPF_SOCK_OPS_STATE_CB_FLAG: u32 = 4;
-pub const BPF_SOCK_OPS_RTT_CB_FLAG: u32 = 8;
-pub const BPF_SOCK_OPS_ALL_CB_FLAGS: u32 = 15;
-pub const BPF_DEVCG_ACC_MKNOD: u32 = 1;
-pub const BPF_DEVCG_ACC_READ: u32 = 2;
-pub const BPF_DEVCG_ACC_WRITE: u32 = 4;
-pub const BPF_DEVCG_DEV_BLOCK: u32 = 1;
-pub const BPF_DEVCG_DEV_CHAR: u32 = 2;
-pub const BPF_FIB_LOOKUP_DIRECT: u32 = 1;
-pub const BPF_FIB_LOOKUP_OUTPUT: u32 = 2;
-pub const BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG: u32 = 1;
-pub const BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL: u32 = 2;
-pub const BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP: u32 = 4;
 pub const SOL_SOCKET: u32 = 1;
 pub const SO_DEBUG: u32 = 1;
 pub const SO_REUSEADDR: u32 = 2;
@@ -341,7 +295,107 @@ pub mod bpf_map_type {
     pub const BPF_MAP_TYPE_STACK: Type = 23;
     pub const BPF_MAP_TYPE_SK_STORAGE: Type = 24;
     pub const BPF_MAP_TYPE_DEVMAP_HASH: Type = 25;
-}
+    pub const BPF_MAP_TYPE_STRUCT_OPS: Type = 26;
+    pub const BPF_MAP_TYPE_RINGBUF: Type = 27;
+    pub const BPF_MAP_TYPE_INODE_STORAGE: Type = 28;
+    pub const BPF_MAP_TYPE_TASK_STORAGE: Type = 29;
+}
+pub const BPF_ANY: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_NOEXIST: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_EXIST: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_LOCK: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_2 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_NO_PREALLOC: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_NO_COMMON_LRU: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_NUMA_NODE: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_RDONLY: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_WRONLY: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_STACK_BUILD_ID: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_ZERO_SEED: ::aya_bpf_cty::c_uint = 64;
+pub const BPF_F_RDONLY_PROG: ::aya_bpf_cty::c_uint = 128;
+pub const BPF_F_WRONLY_PROG: ::aya_bpf_cty::c_uint = 256;
+pub const BPF_F_CLONE: ::aya_bpf_cty::c_uint = 512;
+pub const BPF_F_MMAPABLE: ::aya_bpf_cty::c_uint = 1024;
+pub const BPF_F_PRESERVE_ELEMS: ::aya_bpf_cty::c_uint = 2048;
+pub const BPF_F_INNER_MAP: ::aya_bpf_cty::c_uint = 4096;
+pub type _bindgen_ty_3 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_RECOMPUTE_CSUM: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_INVALIDATE_HASH: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_4 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_HDR_FIELD_MASK: ::aya_bpf_cty::c_uint = 15;
+pub type _bindgen_ty_5 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_PSEUDO_HDR: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_MARK_MANGLED_0: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_MARK_ENFORCE: ::aya_bpf_cty::c_uint = 64;
+pub type _bindgen_ty_6 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_INGRESS: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_7 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_TUNINFO_IPV6: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_8 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_SKIP_FIELD_MASK: ::aya_bpf_cty::c_uint = 255;
+pub const BPF_F_USER_STACK: ::aya_bpf_cty::c_uint = 256;
+pub const BPF_F_FAST_STACK_CMP: ::aya_bpf_cty::c_uint = 512;
+pub const BPF_F_REUSE_STACKID: ::aya_bpf_cty::c_uint = 1024;
+pub const BPF_F_USER_BUILD_ID: ::aya_bpf_cty::c_uint = 2048;
+pub type _bindgen_ty_9 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_ZERO_CSUM_TX: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_DONT_FRAGMENT: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_SEQ_NUMBER: ::aya_bpf_cty::c_uint = 8;
+pub type _bindgen_ty_10 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_INDEX_MASK: ::aya_bpf_cty::c_ulong = 4294967295;
+pub const BPF_F_CURRENT_CPU: ::aya_bpf_cty::c_ulong = 4294967295;
+pub const BPF_F_CTXLEN_MASK: ::aya_bpf_cty::c_ulong = 4503595332403200;
+pub type _bindgen_ty_11 = ::aya_bpf_cty::c_ulong;
+pub const BPF_F_CURRENT_NETNS: ::aya_bpf_cty::c_int = -1;
+pub type _bindgen_ty_12 = ::aya_bpf_cty::c_int;
+pub const BPF_CSUM_LEVEL_QUERY: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_CSUM_LEVEL_INC: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_CSUM_LEVEL_DEC: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_CSUM_LEVEL_RESET: ::aya_bpf_cty::c_uint = 3;
+pub type _bindgen_ty_13 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_ADJ_ROOM_FIXED_GSO: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV4: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_ADJ_ROOM_ENCAP_L4_GRE: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_ADJ_ROOM_ENCAP_L4_UDP: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_ADJ_ROOM_NO_CSUM_RESET: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_ADJ_ROOM_ENCAP_L2_ETH: ::aya_bpf_cty::c_uint = 64;
+pub type _bindgen_ty_14 = ::aya_bpf_cty::c_uint;
+pub const BPF_ADJ_ROOM_ENCAP_L2_MASK: ::aya_bpf_cty::c_uint = 255;
+pub const BPF_ADJ_ROOM_ENCAP_L2_SHIFT: ::aya_bpf_cty::c_uint = 56;
+pub type _bindgen_ty_15 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_SYSCTL_BASE_NAME: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_16 = ::aya_bpf_cty::c_uint;
+pub const BPF_LOCAL_STORAGE_GET_F_CREATE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SK_STORAGE_GET_F_CREATE: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_17 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_GET_BRANCH_RECORDS_SIZE: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_18 = ::aya_bpf_cty::c_uint;
+pub const BPF_RB_NO_WAKEUP: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_RB_FORCE_WAKEUP: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_19 = ::aya_bpf_cty::c_uint;
+pub const BPF_RB_AVAIL_DATA: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_RB_RING_SIZE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_RB_CONS_POS: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_RB_PROD_POS: ::aya_bpf_cty::c_uint = 3;
+pub type _bindgen_ty_20 = ::aya_bpf_cty::c_uint;
+pub const BPF_RINGBUF_BUSY_BIT: ::aya_bpf_cty::c_uint = 2147483648;
+pub const BPF_RINGBUF_DISCARD_BIT: ::aya_bpf_cty::c_uint = 1073741824;
+pub const BPF_RINGBUF_HDR_SZ: ::aya_bpf_cty::c_uint = 8;
+pub type _bindgen_ty_21 = ::aya_bpf_cty::c_uint;
+pub const BPF_SK_LOOKUP_F_REPLACE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SK_LOOKUP_F_NO_REUSEPORT: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_22 = ::aya_bpf_cty::c_uint;
+pub mod bpf_adj_room_mode {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_ADJ_ROOM_NET: Type = 0;
+    pub const BPF_ADJ_ROOM_MAC: Type = 1;
+}
+pub const BPF_F_BPRM_SECUREEXEC: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_23 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_BROADCAST: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_EXCLUDE_INGRESS: ::aya_bpf_cty::c_uint = 16;
+pub type _bindgen_ty_24 = ::aya_bpf_cty::c_uint;
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct __sk_buff {
@@ -376,6 +430,7 @@ pub struct __sk_buff {
     pub wire_len: __u32,
     pub gso_segs: __u32,
     pub __bindgen_anon_2: __sk_buff__bindgen_ty_2,
+    pub gso_size: __u32,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -456,6 +511,7 @@ pub struct bpf_sock {
     pub dst_ip4: __u32,
     pub dst_ip6: [__u32; 4usize],
     pub state: __u32,
+    pub rx_queue_mapping: __s32,
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -531,6 +587,7 @@ pub struct xdp_md {
     pub data_meta: __u32,
     pub ingress_ifindex: __u32,
     pub rx_queue_index: __u32,
+    pub egress_ifindex: __u32,
 }
 pub mod sk_action {
     pub type Type = ::aya_bpf_cty::c_uint;
@@ -550,6 +607,7 @@ pub struct sk_msg_md {
     pub remote_port: __u32,
     pub local_port: __u32,
     pub size: __u32,
+    pub __bindgen_anon_3: sk_msg_md__bindgen_ty_3,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -583,6 +641,21 @@ impl sk_msg_md__bindgen_ty_2 {
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
+pub union sk_msg_md__bindgen_ty_3 {
+    pub sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_msg_md__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
 pub struct sk_reuseport_md {
     pub __bindgen_anon_1: sk_reuseport_md__bindgen_ty_1,
     pub __bindgen_anon_2: sk_reuseport_md__bindgen_ty_2,
@@ -591,6 +664,8 @@ pub struct sk_reuseport_md {
     pub ip_protocol: __u32,
     pub bind_inany: __u32,
     pub hash: __u32,
+    pub __bindgen_anon_3: sk_reuseport_md__bindgen_ty_3,
+    pub __bindgen_anon_4: sk_reuseport_md__bindgen_ty_4,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -623,6 +698,36 @@ impl sk_reuseport_md__bindgen_ty_2 {
     }
 }
 #[repr(C)]
+#[derive(Copy, Clone)]
+pub union sk_reuseport_md__bindgen_ty_3 {
+    pub sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_reuseport_md__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sk_reuseport_md__bindgen_ty_4 {
+    pub migrating_sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_reuseport_md__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_map_info {
     pub type_: __u32,
@@ -633,21 +738,13 @@ pub struct bpf_map_info {
     pub map_flags: __u32,
     pub name: [::aya_bpf_cty::c_char; 16usize],
     pub ifindex: __u32,
-    pub _bitfield_align_1: [u8; 0],
-    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
+    pub btf_vmlinux_value_type_id: __u32,
     pub netns_dev: __u64,
     pub netns_ino: __u64,
     pub btf_id: __u32,
     pub btf_key_type_id: __u32,
     pub btf_value_type_id: __u32,
 }
-impl bpf_map_info {
-    #[inline]
-    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
-        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
-        __bindgen_bitfield_unit
-    }
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct bpf_sock_addr {
@@ -716,6 +813,10 @@ pub struct bpf_sock_ops {
     pub bytes_received: __u64,
     pub bytes_acked: __u64,
     pub __bindgen_anon_2: bpf_sock_ops__bindgen_ty_2,
+    pub __bindgen_anon_3: bpf_sock_ops__bindgen_ty_3,
+    pub __bindgen_anon_4: bpf_sock_ops__bindgen_ty_4,
+    pub skb_len: __u32,
+    pub skb_tcp_flags: __u32,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -740,6 +841,45 @@ impl bpf_sock_ops__bindgen_ty_2 {
         __bindgen_bitfield_unit
     }
 }
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_sock_ops__bindgen_ty_3 {
+    pub skb_data: *mut ::aya_bpf_cty::c_void,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl bpf_sock_ops__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_sock_ops__bindgen_ty_4 {
+    pub skb_data_end: *mut ::aya_bpf_cty::c_void,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl bpf_sock_ops__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+pub const BPF_SOCK_OPS_RTO_CB_FLAG: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SOCK_OPS_RETRANS_CB_FLAG: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_SOCK_OPS_STATE_CB_FLAG: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_SOCK_OPS_RTT_CB_FLAG: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 64;
+pub const BPF_SOCK_OPS_ALL_CB_FLAGS: ::aya_bpf_cty::c_uint = 127;
+pub type _bindgen_ty_25 = ::aya_bpf_cty::c_uint;
 pub const BPF_SOCK_OPS_VOID: ::aya_bpf_cty::c_uint = 0;
 pub const BPF_SOCK_OPS_TIMEOUT_INIT: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_SOCK_OPS_RWND_INIT: ::aya_bpf_cty::c_uint = 2;
@@ -753,7 +893,10 @@ pub const BPF_SOCK_OPS_RETRANS_CB: ::aya_bpf_cty::c_uint = 9;
 pub const BPF_SOCK_OPS_STATE_CB: ::aya_bpf_cty::c_uint = 10;
 pub const BPF_SOCK_OPS_TCP_LISTEN_CB: ::aya_bpf_cty::c_uint = 11;
 pub const BPF_SOCK_OPS_RTT_CB: ::aya_bpf_cty::c_uint = 12;
-pub type _bindgen_ty_2 = ::aya_bpf_cty::c_uint;
+pub const BPF_SOCK_OPS_PARSE_HDR_OPT_CB: ::aya_bpf_cty::c_uint = 13;
+pub const BPF_SOCK_OPS_HDR_OPT_LEN_CB: ::aya_bpf_cty::c_uint = 14;
+pub const BPF_SOCK_OPS_WRITE_HDR_OPT_CB: ::aya_bpf_cty::c_uint = 15;
+pub type _bindgen_ty_26 = ::aya_bpf_cty::c_uint;
 pub const BPF_TCP_ESTABLISHED: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_TCP_SYN_SENT: ::aya_bpf_cty::c_uint = 2;
 pub const BPF_TCP_SYN_RECV: ::aya_bpf_cty::c_uint = 3;
@@ -767,7 +910,16 @@ pub const BPF_TCP_LISTEN: ::aya_bpf_cty::c_uint = 10;
 pub const BPF_TCP_CLOSING: ::aya_bpf_cty::c_uint = 11;
 pub const BPF_TCP_NEW_SYN_RECV: ::aya_bpf_cty::c_uint = 12;
 pub const BPF_TCP_MAX_STATES: ::aya_bpf_cty::c_uint = 13;
-pub type _bindgen_ty_3 = ::aya_bpf_cty::c_uint;
+pub type _bindgen_ty_27 = ::aya_bpf_cty::c_uint;
+pub mod _bindgen_ty_29 {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_LOAD_HDR_OPT_TCP_SYN: Type = 1;
+}
+pub mod _bindgen_ty_30 {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_WRITE_HDR_TCP_CURRENT_MSS: Type = 1;
+    pub const BPF_WRITE_HDR_TCP_SYNACK_COOKIE: Type = 2;
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_perf_event_value {
@@ -775,6 +927,16 @@ pub struct bpf_perf_event_value {
     pub enabled: __u64,
     pub running: __u64,
 }
+pub const BPF_DEVCG_ACC_MKNOD: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_DEVCG_ACC_READ: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_DEVCG_ACC_WRITE: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_31 = ::aya_bpf_cty::c_uint;
+pub const BPF_DEVCG_DEV_BLOCK: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_DEVCG_DEV_CHAR: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_32 = ::aya_bpf_cty::c_uint;
+pub const BPF_FIB_LOOKUP_DIRECT: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_FIB_LOOKUP_OUTPUT: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_33 = ::aya_bpf_cty::c_uint;
 pub const BPF_FIB_LKUP_RET_SUCCESS: ::aya_bpf_cty::c_uint = 0;
 pub const BPF_FIB_LKUP_RET_BLACKHOLE: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_FIB_LKUP_RET_UNREACHABLE: ::aya_bpf_cty::c_uint = 2;
@@ -784,7 +946,7 @@ pub const BPF_FIB_LKUP_RET_FWD_DISABLED: ::aya_bpf_cty::c_uint = 5;
 pub const BPF_FIB_LKUP_RET_UNSUPP_LWT: ::aya_bpf_cty::c_uint = 6;
 pub const BPF_FIB_LKUP_RET_NO_NEIGH: ::aya_bpf_cty::c_uint = 7;
 pub const BPF_FIB_LKUP_RET_FRAG_NEEDED: ::aya_bpf_cty::c_uint = 8;
-pub type _bindgen_ty_4 = ::aya_bpf_cty::c_uint;
+pub type _bindgen_ty_34 = ::aya_bpf_cty::c_uint;
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct bpf_fib_lookup {
@@ -792,11 +954,11 @@ pub struct bpf_fib_lookup {
     pub l4_protocol: __u8,
     pub sport: __be16,
     pub dport: __be16,
-    pub tot_len: __u16,
-    pub ifindex: __u32,
     pub __bindgen_anon_1: bpf_fib_lookup__bindgen_ty_1,
+    pub ifindex: __u32,
     pub __bindgen_anon_2: bpf_fib_lookup__bindgen_ty_2,
     pub __bindgen_anon_3: bpf_fib_lookup__bindgen_ty_3,
+    pub __bindgen_anon_4: bpf_fib_lookup__bindgen_ty_4,
     pub h_vlan_proto: __be16,
     pub h_vlan_TCI: __be16,
     pub smac: [__u8; 6usize],
@@ -805,6 +967,13 @@ pub struct bpf_fib_lookup {
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub union bpf_fib_lookup__bindgen_ty_1 {
+    pub tot_len: __u16,
+    pub mtu_result: __u16,
+    _bindgen_union_align: u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_fib_lookup__bindgen_ty_2 {
     pub tos: __u8,
     pub flowinfo: __be32,
     pub rt_metric: __u32,
@@ -812,20 +981,37 @@ pub union bpf_fib_lookup__bindgen_ty_1 {
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
-pub union bpf_fib_lookup__bindgen_ty_2 {
+pub union bpf_fib_lookup__bindgen_ty_3 {
     pub ipv4_src: __be32,
     pub ipv6_src: [__u32; 4usize],
     _bindgen_union_align: [u32; 4usize],
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
-pub union bpf_fib_lookup__bindgen_ty_3 {
+pub union bpf_fib_lookup__bindgen_ty_4 {
     pub ipv4_dst: __be32,
     pub ipv6_dst: [__u32; 4usize],
     _bindgen_union_align: [u32; 4usize],
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
+pub struct bpf_redir_neigh {
+    pub nh_family: __u32,
+    pub __bindgen_anon_1: bpf_redir_neigh__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_redir_neigh__bindgen_ty_1 {
+    pub ipv4_nh: __be32,
+    pub ipv6_nh: [__u32; 4usize],
+    _bindgen_union_align: [u32; 4usize],
+}
+pub const BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_35 = ::aya_bpf_cty::c_uint;
+#[repr(C)]
+#[derive(Copy, Clone)]
 pub struct bpf_flow_keys {
     pub nhoff: __u16,
     pub thoff: __u16,
@@ -873,6 +1059,19 @@ pub struct bpf_sysctl {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
+pub struct bpf_pidns_info {
+    pub pid: __u32,
+    pub tgid: __u32,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct btf_ptr {
+    pub ptr: *mut ::aya_bpf_cty::c_void,
+    pub type_id: __u32,
+    pub flags: __u32,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
 pub struct pt_regs {
     pub r15: ::aya_bpf_cty::c_ulong,
     pub r14: ::aya_bpf_cty::c_ulong,
@@ -910,16 +1109,6 @@ pub struct bpf_perf_event_data {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct bpf_pidns_info {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct bpf_redir_neigh {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
 pub struct linux_binprm {
     _unused: [u8; 0],
 }
@@ -970,11 +1159,6 @@ pub struct path {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct btf_ptr {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
 pub struct inode {
     _unused: [u8; 0],
 }

+ 172 - 13
bpf/aya-bpf-bindings/src/aarch64/getters.rs

@@ -104,6 +104,9 @@ impl __sk_buff {
             Some(v)
         }
     }
+    pub fn gso_size(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.gso_size) }.ok()
+    }
 }
 impl __sk_buff__bindgen_ty_1 {
     pub fn flow_keys(&self) -> Option<*mut bpf_flow_keys> {
@@ -224,6 +227,9 @@ impl bpf_sock {
     pub fn state(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.state) }.ok()
     }
+    pub fn rx_queue_mapping(&self) -> Option<__s32> {
+        unsafe { crate::bpf_probe_read(&self.rx_queue_mapping) }.ok()
+    }
 }
 impl bpf_tcp_sock {
     pub fn snd_cwnd(&self) -> Option<__u32> {
@@ -365,6 +371,9 @@ impl xdp_md {
     pub fn rx_queue_index(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.rx_queue_index) }.ok()
     }
+    pub fn egress_ifindex(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.egress_ifindex) }.ok()
+    }
 }
 impl sk_msg_md {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -407,6 +416,14 @@ impl sk_msg_md {
     pub fn size(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.size) }.ok()
     }
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
 }
 impl sk_msg_md__bindgen_ty_1 {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -428,6 +445,16 @@ impl sk_msg_md__bindgen_ty_2 {
         }
     }
 }
+impl sk_msg_md__bindgen_ty_3 {
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl sk_reuseport_md {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
         let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.data) }.ok()?;
@@ -460,6 +487,22 @@ impl sk_reuseport_md {
     pub fn hash(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.hash) }.ok()
     }
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn migrating_sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.migrating_sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
 }
 impl sk_reuseport_md__bindgen_ty_1 {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -481,6 +524,26 @@ impl sk_reuseport_md__bindgen_ty_2 {
         }
     }
 }
+impl sk_reuseport_md__bindgen_ty_3 {
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
+impl sk_reuseport_md__bindgen_ty_4 {
+    pub fn migrating_sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.migrating_sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl bpf_map_info {
     pub fn type_(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.type_) }.ok()
@@ -506,6 +569,9 @@ impl bpf_map_info {
     pub fn ifindex(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.ifindex) }.ok()
     }
+    pub fn btf_vmlinux_value_type_id(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.btf_vmlinux_value_type_id) }.ok()
+    }
     pub fn netns_dev(&self) -> Option<__u64> {
         unsafe { crate::bpf_probe_read(&self.netns_dev) }.ok()
     }
@@ -689,6 +755,28 @@ impl bpf_sock_ops {
             Some(v)
         }
     }
+    pub fn skb_data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.skb_data) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn skb_data_end(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.skb_data_end) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn skb_len(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.skb_len) }.ok()
+    }
+    pub fn skb_tcp_flags(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.skb_tcp_flags) }.ok()
+    }
 }
 impl bpf_sock_ops__bindgen_ty_1 {
     pub fn args(&self) -> Option<[__u32; 4usize]> {
@@ -711,6 +799,26 @@ impl bpf_sock_ops__bindgen_ty_2 {
         }
     }
 }
+impl bpf_sock_ops__bindgen_ty_3 {
+    pub fn skb_data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.skb_data) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
+impl bpf_sock_ops__bindgen_ty_4 {
+    pub fn skb_data_end(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.skb_data_end) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl bpf_perf_event_value {
     pub fn counter(&self) -> Option<__u64> {
         unsafe { crate::bpf_probe_read(&self.counter) }.ok()
@@ -736,31 +844,34 @@ impl bpf_fib_lookup {
         unsafe { crate::bpf_probe_read(&self.dport) }.ok()
     }
     pub fn tot_len(&self) -> Option<__u16> {
-        unsafe { crate::bpf_probe_read(&self.tot_len) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.tot_len) }.ok()
+    }
+    pub fn mtu_result(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.mtu_result) }.ok()
     }
     pub fn ifindex(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.ifindex) }.ok()
     }
     pub fn tos(&self) -> Option<__u8> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.tos) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.tos) }.ok()
     }
     pub fn flowinfo(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.flowinfo) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.flowinfo) }.ok()
     }
     pub fn rt_metric(&self) -> Option<__u32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.rt_metric) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.rt_metric) }.ok()
     }
     pub fn ipv4_src(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.ipv4_src) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv4_src) }.ok()
     }
     pub fn ipv6_src(&self) -> Option<[__u32; 4usize]> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.ipv6_src) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv6_src) }.ok()
     }
     pub fn ipv4_dst(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv4_dst) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.ipv4_dst) }.ok()
     }
     pub fn ipv6_dst(&self) -> Option<[__u32; 4usize]> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv6_dst) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.ipv6_dst) }.ok()
     }
     pub fn h_vlan_proto(&self) -> Option<__be16> {
         unsafe { crate::bpf_probe_read(&self.h_vlan_proto) }.ok()
@@ -776,6 +887,14 @@ impl bpf_fib_lookup {
     }
 }
 impl bpf_fib_lookup__bindgen_ty_1 {
+    pub fn tot_len(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.tot_len) }.ok()
+    }
+    pub fn mtu_result(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.mtu_result) }.ok()
+    }
+}
+impl bpf_fib_lookup__bindgen_ty_2 {
     pub fn tos(&self) -> Option<__u8> {
         unsafe { crate::bpf_probe_read(&self.tos) }.ok()
     }
@@ -786,7 +905,7 @@ impl bpf_fib_lookup__bindgen_ty_1 {
         unsafe { crate::bpf_probe_read(&self.rt_metric) }.ok()
     }
 }
-impl bpf_fib_lookup__bindgen_ty_2 {
+impl bpf_fib_lookup__bindgen_ty_3 {
     pub fn ipv4_src(&self) -> Option<__be32> {
         unsafe { crate::bpf_probe_read(&self.ipv4_src) }.ok()
     }
@@ -794,7 +913,7 @@ impl bpf_fib_lookup__bindgen_ty_2 {
         unsafe { crate::bpf_probe_read(&self.ipv6_src) }.ok()
     }
 }
-impl bpf_fib_lookup__bindgen_ty_3 {
+impl bpf_fib_lookup__bindgen_ty_4 {
     pub fn ipv4_dst(&self) -> Option<__be32> {
         unsafe { crate::bpf_probe_read(&self.ipv4_dst) }.ok()
     }
@@ -802,6 +921,25 @@ impl bpf_fib_lookup__bindgen_ty_3 {
         unsafe { crate::bpf_probe_read(&self.ipv6_dst) }.ok()
     }
 }
+impl bpf_redir_neigh {
+    pub fn nh_family(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.nh_family) }.ok()
+    }
+    pub fn ipv4_nh(&self) -> Option<__be32> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.ipv4_nh) }.ok()
+    }
+    pub fn ipv6_nh(&self) -> Option<[__u32; 4usize]> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.ipv6_nh) }.ok()
+    }
+}
+impl bpf_redir_neigh__bindgen_ty_1 {
+    pub fn ipv4_nh(&self) -> Option<__be32> {
+        unsafe { crate::bpf_probe_read(&self.ipv4_nh) }.ok()
+    }
+    pub fn ipv6_nh(&self) -> Option<[__u32; 4usize]> {
+        unsafe { crate::bpf_probe_read(&self.ipv6_nh) }.ok()
+    }
+}
 impl bpf_flow_keys {
     pub fn nhoff(&self) -> Option<__u16> {
         unsafe { crate::bpf_probe_read(&self.nhoff) }.ok()
@@ -895,6 +1033,30 @@ impl bpf_sysctl {
         unsafe { crate::bpf_probe_read(&self.file_pos) }.ok()
     }
 }
+impl bpf_pidns_info {
+    pub fn pid(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.pid) }.ok()
+    }
+    pub fn tgid(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.tgid) }.ok()
+    }
+}
+impl btf_ptr {
+    pub fn ptr(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.ptr) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn type_id(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.type_id) }.ok()
+    }
+    pub fn flags(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.flags) }.ok()
+    }
+}
 impl pt_regs {
     pub fn r15(&self) -> Option<::aya_bpf_cty::c_ulong> {
         unsafe { crate::bpf_probe_read(&self.r15) }.ok()
@@ -969,8 +1131,6 @@ impl sockaddr {
     }
 }
 impl bpf_perf_event_data {}
-impl bpf_pidns_info {}
-impl bpf_redir_neigh {}
 impl linux_binprm {}
 impl tcphdr {}
 impl seq_file {}
@@ -981,7 +1141,6 @@ impl tcp_request_sock {}
 impl udp6_sock {}
 impl task_struct {}
 impl path {}
-impl btf_ptr {}
 impl inode {}
 impl socket {}
 impl file {}

+ 31 - 0
bpf/aya-bpf-bindings/src/aarch64/helpers.rs

@@ -1679,3 +1679,34 @@ pub unsafe fn bpf_snprintf(
     ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(165usize);
     fun(str_, str_size, fmt, data, data_len)
 }
+pub unsafe fn bpf_sys_bpf(
+    cmd: __u32,
+    attr: *mut ::aya_bpf_cty::c_void,
+    attr_size: __u32,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        cmd: __u32,
+        attr: *mut ::aya_bpf_cty::c_void,
+        attr_size: __u32,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(166usize);
+    fun(cmd, attr, attr_size)
+}
+pub unsafe fn bpf_btf_find_by_name_kind(
+    name: *mut ::aya_bpf_cty::c_char,
+    name_sz: ::aya_bpf_cty::c_int,
+    kind: __u32,
+    flags: ::aya_bpf_cty::c_int,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        name: *mut ::aya_bpf_cty::c_char,
+        name_sz: ::aya_bpf_cty::c_int,
+        kind: __u32,
+        flags: ::aya_bpf_cty::c_int,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(167usize);
+    fun(name, name_sz, kind, flags)
+}
+pub unsafe fn bpf_sys_close(fd: __u32) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(fd: __u32) -> ::aya_bpf_cty::c_long =
+        ::core::mem::transmute(168usize);
+    fun(fd)
+}

+ 275 - 93
bpf/aya-bpf-bindings/src/x86_64/bindings.rs

@@ -117,6 +117,7 @@ pub const BPF_MAXINSNS: u32 = 4096;
 pub const BPF_JMP32: u32 = 6;
 pub const BPF_ALU64: u32 = 7;
 pub const BPF_DW: u32 = 24;
+pub const BPF_ATOMIC: u32 = 192;
 pub const BPF_XADD: u32 = 192;
 pub const BPF_MOV: u32 = 176;
 pub const BPF_ARSH: u32 = 192;
@@ -134,77 +135,30 @@ pub const BPF_JSLT: u32 = 192;
 pub const BPF_JSLE: u32 = 208;
 pub const BPF_CALL: u32 = 128;
 pub const BPF_EXIT: u32 = 144;
+pub const BPF_FETCH: u32 = 1;
+pub const BPF_XCHG: u32 = 225;
+pub const BPF_CMPXCHG: u32 = 241;
 pub const BPF_F_ALLOW_OVERRIDE: u32 = 1;
 pub const BPF_F_ALLOW_MULTI: u32 = 2;
+pub const BPF_F_REPLACE: u32 = 4;
 pub const BPF_F_STRICT_ALIGNMENT: u32 = 1;
 pub const BPF_F_ANY_ALIGNMENT: u32 = 2;
 pub const BPF_F_TEST_RND_HI32: u32 = 4;
 pub const BPF_F_TEST_STATE_FREQ: u32 = 8;
+pub const BPF_F_SLEEPABLE: u32 = 16;
 pub const BPF_PSEUDO_MAP_FD: u32 = 1;
+pub const BPF_PSEUDO_MAP_IDX: u32 = 5;
 pub const BPF_PSEUDO_MAP_VALUE: u32 = 2;
+pub const BPF_PSEUDO_MAP_IDX_VALUE: u32 = 6;
+pub const BPF_PSEUDO_BTF_ID: u32 = 3;
+pub const BPF_PSEUDO_FUNC: u32 = 4;
 pub const BPF_PSEUDO_CALL: u32 = 1;
-pub const BPF_ANY: u32 = 0;
-pub const BPF_NOEXIST: u32 = 1;
-pub const BPF_EXIST: u32 = 2;
-pub const BPF_F_LOCK: u32 = 4;
-pub const BPF_F_NO_PREALLOC: u32 = 1;
-pub const BPF_F_NO_COMMON_LRU: u32 = 2;
-pub const BPF_F_NUMA_NODE: u32 = 4;
-pub const BPF_OBJ_NAME_LEN: u32 = 16;
-pub const BPF_F_RDONLY: u32 = 8;
-pub const BPF_F_WRONLY: u32 = 16;
-pub const BPF_F_STACK_BUILD_ID: u32 = 32;
-pub const BPF_F_ZERO_SEED: u32 = 64;
-pub const BPF_F_RDONLY_PROG: u32 = 128;
-pub const BPF_F_WRONLY_PROG: u32 = 256;
-pub const BPF_F_CLONE: u32 = 512;
+pub const BPF_PSEUDO_KFUNC_CALL: u32 = 2;
 pub const BPF_F_QUERY_EFFECTIVE: u32 = 1;
+pub const BPF_F_TEST_RUN_ON_CPU: u32 = 1;
 pub const BPF_BUILD_ID_SIZE: u32 = 20;
-pub const BPF_F_RECOMPUTE_CSUM: u32 = 1;
-pub const BPF_F_INVALIDATE_HASH: u32 = 2;
-pub const BPF_F_HDR_FIELD_MASK: u32 = 15;
-pub const BPF_F_PSEUDO_HDR: u32 = 16;
-pub const BPF_F_MARK_MANGLED_0: u32 = 32;
-pub const BPF_F_MARK_ENFORCE: u32 = 64;
-pub const BPF_F_INGRESS: u32 = 1;
-pub const BPF_F_TUNINFO_IPV6: u32 = 1;
-pub const BPF_F_SKIP_FIELD_MASK: u32 = 255;
-pub const BPF_F_USER_STACK: u32 = 256;
-pub const BPF_F_FAST_STACK_CMP: u32 = 512;
-pub const BPF_F_REUSE_STACKID: u32 = 1024;
-pub const BPF_F_USER_BUILD_ID: u32 = 2048;
-pub const BPF_F_ZERO_CSUM_TX: u32 = 2;
-pub const BPF_F_DONT_FRAGMENT: u32 = 4;
-pub const BPF_F_SEQ_NUMBER: u32 = 8;
-pub const BPF_F_INDEX_MASK: u32 = 4294967295;
-pub const BPF_F_CURRENT_CPU: u32 = 4294967295;
-pub const BPF_F_CTXLEN_MASK: u64 = 4503595332403200;
-pub const BPF_F_CURRENT_NETNS: i32 = -1;
-pub const BPF_F_ADJ_ROOM_FIXED_GSO: u32 = 1;
-pub const BPF_ADJ_ROOM_ENCAP_L2_MASK: u32 = 255;
-pub const BPF_ADJ_ROOM_ENCAP_L2_SHIFT: u32 = 56;
-pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV4: u32 = 2;
-pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: u32 = 4;
-pub const BPF_F_ADJ_ROOM_ENCAP_L4_GRE: u32 = 8;
-pub const BPF_F_ADJ_ROOM_ENCAP_L4_UDP: u32 = 16;
-pub const BPF_F_SYSCTL_BASE_NAME: u32 = 1;
-pub const BPF_SK_STORAGE_GET_F_CREATE: u32 = 1;
+pub const BPF_OBJ_NAME_LEN: u32 = 16;
 pub const BPF_TAG_SIZE: u32 = 8;
-pub const BPF_SOCK_OPS_RTO_CB_FLAG: u32 = 1;
-pub const BPF_SOCK_OPS_RETRANS_CB_FLAG: u32 = 2;
-pub const BPF_SOCK_OPS_STATE_CB_FLAG: u32 = 4;
-pub const BPF_SOCK_OPS_RTT_CB_FLAG: u32 = 8;
-pub const BPF_SOCK_OPS_ALL_CB_FLAGS: u32 = 15;
-pub const BPF_DEVCG_ACC_MKNOD: u32 = 1;
-pub const BPF_DEVCG_ACC_READ: u32 = 2;
-pub const BPF_DEVCG_ACC_WRITE: u32 = 4;
-pub const BPF_DEVCG_DEV_BLOCK: u32 = 1;
-pub const BPF_DEVCG_DEV_CHAR: u32 = 2;
-pub const BPF_FIB_LOOKUP_DIRECT: u32 = 1;
-pub const BPF_FIB_LOOKUP_OUTPUT: u32 = 2;
-pub const BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG: u32 = 1;
-pub const BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL: u32 = 2;
-pub const BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP: u32 = 4;
 pub const SOL_SOCKET: u32 = 1;
 pub const SO_DEBUG: u32 = 1;
 pub const SO_REUSEADDR: u32 = 2;
@@ -341,7 +295,107 @@ pub mod bpf_map_type {
     pub const BPF_MAP_TYPE_STACK: Type = 23;
     pub const BPF_MAP_TYPE_SK_STORAGE: Type = 24;
     pub const BPF_MAP_TYPE_DEVMAP_HASH: Type = 25;
-}
+    pub const BPF_MAP_TYPE_STRUCT_OPS: Type = 26;
+    pub const BPF_MAP_TYPE_RINGBUF: Type = 27;
+    pub const BPF_MAP_TYPE_INODE_STORAGE: Type = 28;
+    pub const BPF_MAP_TYPE_TASK_STORAGE: Type = 29;
+}
+pub const BPF_ANY: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_NOEXIST: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_EXIST: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_LOCK: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_2 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_NO_PREALLOC: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_NO_COMMON_LRU: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_NUMA_NODE: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_RDONLY: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_WRONLY: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_STACK_BUILD_ID: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_ZERO_SEED: ::aya_bpf_cty::c_uint = 64;
+pub const BPF_F_RDONLY_PROG: ::aya_bpf_cty::c_uint = 128;
+pub const BPF_F_WRONLY_PROG: ::aya_bpf_cty::c_uint = 256;
+pub const BPF_F_CLONE: ::aya_bpf_cty::c_uint = 512;
+pub const BPF_F_MMAPABLE: ::aya_bpf_cty::c_uint = 1024;
+pub const BPF_F_PRESERVE_ELEMS: ::aya_bpf_cty::c_uint = 2048;
+pub const BPF_F_INNER_MAP: ::aya_bpf_cty::c_uint = 4096;
+pub type _bindgen_ty_3 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_RECOMPUTE_CSUM: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_INVALIDATE_HASH: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_4 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_HDR_FIELD_MASK: ::aya_bpf_cty::c_uint = 15;
+pub type _bindgen_ty_5 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_PSEUDO_HDR: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_MARK_MANGLED_0: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_MARK_ENFORCE: ::aya_bpf_cty::c_uint = 64;
+pub type _bindgen_ty_6 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_INGRESS: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_7 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_TUNINFO_IPV6: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_8 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_SKIP_FIELD_MASK: ::aya_bpf_cty::c_uint = 255;
+pub const BPF_F_USER_STACK: ::aya_bpf_cty::c_uint = 256;
+pub const BPF_F_FAST_STACK_CMP: ::aya_bpf_cty::c_uint = 512;
+pub const BPF_F_REUSE_STACKID: ::aya_bpf_cty::c_uint = 1024;
+pub const BPF_F_USER_BUILD_ID: ::aya_bpf_cty::c_uint = 2048;
+pub type _bindgen_ty_9 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_ZERO_CSUM_TX: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_DONT_FRAGMENT: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_SEQ_NUMBER: ::aya_bpf_cty::c_uint = 8;
+pub type _bindgen_ty_10 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_INDEX_MASK: ::aya_bpf_cty::c_ulong = 4294967295;
+pub const BPF_F_CURRENT_CPU: ::aya_bpf_cty::c_ulong = 4294967295;
+pub const BPF_F_CTXLEN_MASK: ::aya_bpf_cty::c_ulong = 4503595332403200;
+pub type _bindgen_ty_11 = ::aya_bpf_cty::c_ulong;
+pub const BPF_F_CURRENT_NETNS: ::aya_bpf_cty::c_int = -1;
+pub type _bindgen_ty_12 = ::aya_bpf_cty::c_int;
+pub const BPF_CSUM_LEVEL_QUERY: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_CSUM_LEVEL_INC: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_CSUM_LEVEL_DEC: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_CSUM_LEVEL_RESET: ::aya_bpf_cty::c_uint = 3;
+pub type _bindgen_ty_13 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_ADJ_ROOM_FIXED_GSO: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV4: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_F_ADJ_ROOM_ENCAP_L4_GRE: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_ADJ_ROOM_ENCAP_L4_UDP: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_F_ADJ_ROOM_NO_CSUM_RESET: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_F_ADJ_ROOM_ENCAP_L2_ETH: ::aya_bpf_cty::c_uint = 64;
+pub type _bindgen_ty_14 = ::aya_bpf_cty::c_uint;
+pub const BPF_ADJ_ROOM_ENCAP_L2_MASK: ::aya_bpf_cty::c_uint = 255;
+pub const BPF_ADJ_ROOM_ENCAP_L2_SHIFT: ::aya_bpf_cty::c_uint = 56;
+pub type _bindgen_ty_15 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_SYSCTL_BASE_NAME: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_16 = ::aya_bpf_cty::c_uint;
+pub const BPF_LOCAL_STORAGE_GET_F_CREATE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SK_STORAGE_GET_F_CREATE: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_17 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_GET_BRANCH_RECORDS_SIZE: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_18 = ::aya_bpf_cty::c_uint;
+pub const BPF_RB_NO_WAKEUP: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_RB_FORCE_WAKEUP: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_19 = ::aya_bpf_cty::c_uint;
+pub const BPF_RB_AVAIL_DATA: ::aya_bpf_cty::c_uint = 0;
+pub const BPF_RB_RING_SIZE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_RB_CONS_POS: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_RB_PROD_POS: ::aya_bpf_cty::c_uint = 3;
+pub type _bindgen_ty_20 = ::aya_bpf_cty::c_uint;
+pub const BPF_RINGBUF_BUSY_BIT: ::aya_bpf_cty::c_uint = 2147483648;
+pub const BPF_RINGBUF_DISCARD_BIT: ::aya_bpf_cty::c_uint = 1073741824;
+pub const BPF_RINGBUF_HDR_SZ: ::aya_bpf_cty::c_uint = 8;
+pub type _bindgen_ty_21 = ::aya_bpf_cty::c_uint;
+pub const BPF_SK_LOOKUP_F_REPLACE: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SK_LOOKUP_F_NO_REUSEPORT: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_22 = ::aya_bpf_cty::c_uint;
+pub mod bpf_adj_room_mode {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_ADJ_ROOM_NET: Type = 0;
+    pub const BPF_ADJ_ROOM_MAC: Type = 1;
+}
+pub const BPF_F_BPRM_SECUREEXEC: ::aya_bpf_cty::c_uint = 1;
+pub type _bindgen_ty_23 = ::aya_bpf_cty::c_uint;
+pub const BPF_F_BROADCAST: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_F_EXCLUDE_INGRESS: ::aya_bpf_cty::c_uint = 16;
+pub type _bindgen_ty_24 = ::aya_bpf_cty::c_uint;
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct __sk_buff {
@@ -376,6 +430,7 @@ pub struct __sk_buff {
     pub wire_len: __u32,
     pub gso_segs: __u32,
     pub __bindgen_anon_2: __sk_buff__bindgen_ty_2,
+    pub gso_size: __u32,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -456,6 +511,7 @@ pub struct bpf_sock {
     pub dst_ip4: __u32,
     pub dst_ip6: [__u32; 4usize],
     pub state: __u32,
+    pub rx_queue_mapping: __s32,
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -531,6 +587,7 @@ pub struct xdp_md {
     pub data_meta: __u32,
     pub ingress_ifindex: __u32,
     pub rx_queue_index: __u32,
+    pub egress_ifindex: __u32,
 }
 pub mod sk_action {
     pub type Type = ::aya_bpf_cty::c_uint;
@@ -550,6 +607,7 @@ pub struct sk_msg_md {
     pub remote_port: __u32,
     pub local_port: __u32,
     pub size: __u32,
+    pub __bindgen_anon_3: sk_msg_md__bindgen_ty_3,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -583,6 +641,21 @@ impl sk_msg_md__bindgen_ty_2 {
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
+pub union sk_msg_md__bindgen_ty_3 {
+    pub sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_msg_md__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
 pub struct sk_reuseport_md {
     pub __bindgen_anon_1: sk_reuseport_md__bindgen_ty_1,
     pub __bindgen_anon_2: sk_reuseport_md__bindgen_ty_2,
@@ -591,6 +664,8 @@ pub struct sk_reuseport_md {
     pub ip_protocol: __u32,
     pub bind_inany: __u32,
     pub hash: __u32,
+    pub __bindgen_anon_3: sk_reuseport_md__bindgen_ty_3,
+    pub __bindgen_anon_4: sk_reuseport_md__bindgen_ty_4,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -623,6 +698,36 @@ impl sk_reuseport_md__bindgen_ty_2 {
     }
 }
 #[repr(C)]
+#[derive(Copy, Clone)]
+pub union sk_reuseport_md__bindgen_ty_3 {
+    pub sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_reuseport_md__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sk_reuseport_md__bindgen_ty_4 {
+    pub migrating_sk: *mut bpf_sock,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl sk_reuseport_md__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_map_info {
     pub type_: __u32,
@@ -633,21 +738,13 @@ pub struct bpf_map_info {
     pub map_flags: __u32,
     pub name: [::aya_bpf_cty::c_char; 16usize],
     pub ifindex: __u32,
-    pub _bitfield_align_1: [u8; 0],
-    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
+    pub btf_vmlinux_value_type_id: __u32,
     pub netns_dev: __u64,
     pub netns_ino: __u64,
     pub btf_id: __u32,
     pub btf_key_type_id: __u32,
     pub btf_value_type_id: __u32,
 }
-impl bpf_map_info {
-    #[inline]
-    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
-        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
-        __bindgen_bitfield_unit
-    }
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct bpf_sock_addr {
@@ -716,6 +813,10 @@ pub struct bpf_sock_ops {
     pub bytes_received: __u64,
     pub bytes_acked: __u64,
     pub __bindgen_anon_2: bpf_sock_ops__bindgen_ty_2,
+    pub __bindgen_anon_3: bpf_sock_ops__bindgen_ty_3,
+    pub __bindgen_anon_4: bpf_sock_ops__bindgen_ty_4,
+    pub skb_len: __u32,
+    pub skb_tcp_flags: __u32,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -740,6 +841,45 @@ impl bpf_sock_ops__bindgen_ty_2 {
         __bindgen_bitfield_unit
     }
 }
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_sock_ops__bindgen_ty_3 {
+    pub skb_data: *mut ::aya_bpf_cty::c_void,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl bpf_sock_ops__bindgen_ty_3 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_sock_ops__bindgen_ty_4 {
+    pub skb_data_end: *mut ::aya_bpf_cty::c_void,
+    pub _bitfield_align_1: [u8; 0],
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
+    _bindgen_union_align: u64,
+}
+impl bpf_sock_ops__bindgen_ty_4 {
+    #[inline]
+    pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 8usize]> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
+        __bindgen_bitfield_unit
+    }
+}
+pub const BPF_SOCK_OPS_RTO_CB_FLAG: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_SOCK_OPS_RETRANS_CB_FLAG: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_SOCK_OPS_STATE_CB_FLAG: ::aya_bpf_cty::c_uint = 4;
+pub const BPF_SOCK_OPS_RTT_CB_FLAG: ::aya_bpf_cty::c_uint = 8;
+pub const BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 16;
+pub const BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 32;
+pub const BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG: ::aya_bpf_cty::c_uint = 64;
+pub const BPF_SOCK_OPS_ALL_CB_FLAGS: ::aya_bpf_cty::c_uint = 127;
+pub type _bindgen_ty_25 = ::aya_bpf_cty::c_uint;
 pub const BPF_SOCK_OPS_VOID: ::aya_bpf_cty::c_uint = 0;
 pub const BPF_SOCK_OPS_TIMEOUT_INIT: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_SOCK_OPS_RWND_INIT: ::aya_bpf_cty::c_uint = 2;
@@ -753,7 +893,10 @@ pub const BPF_SOCK_OPS_RETRANS_CB: ::aya_bpf_cty::c_uint = 9;
 pub const BPF_SOCK_OPS_STATE_CB: ::aya_bpf_cty::c_uint = 10;
 pub const BPF_SOCK_OPS_TCP_LISTEN_CB: ::aya_bpf_cty::c_uint = 11;
 pub const BPF_SOCK_OPS_RTT_CB: ::aya_bpf_cty::c_uint = 12;
-pub type _bindgen_ty_2 = ::aya_bpf_cty::c_uint;
+pub const BPF_SOCK_OPS_PARSE_HDR_OPT_CB: ::aya_bpf_cty::c_uint = 13;
+pub const BPF_SOCK_OPS_HDR_OPT_LEN_CB: ::aya_bpf_cty::c_uint = 14;
+pub const BPF_SOCK_OPS_WRITE_HDR_OPT_CB: ::aya_bpf_cty::c_uint = 15;
+pub type _bindgen_ty_26 = ::aya_bpf_cty::c_uint;
 pub const BPF_TCP_ESTABLISHED: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_TCP_SYN_SENT: ::aya_bpf_cty::c_uint = 2;
 pub const BPF_TCP_SYN_RECV: ::aya_bpf_cty::c_uint = 3;
@@ -767,7 +910,16 @@ pub const BPF_TCP_LISTEN: ::aya_bpf_cty::c_uint = 10;
 pub const BPF_TCP_CLOSING: ::aya_bpf_cty::c_uint = 11;
 pub const BPF_TCP_NEW_SYN_RECV: ::aya_bpf_cty::c_uint = 12;
 pub const BPF_TCP_MAX_STATES: ::aya_bpf_cty::c_uint = 13;
-pub type _bindgen_ty_3 = ::aya_bpf_cty::c_uint;
+pub type _bindgen_ty_27 = ::aya_bpf_cty::c_uint;
+pub mod _bindgen_ty_29 {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_LOAD_HDR_OPT_TCP_SYN: Type = 1;
+}
+pub mod _bindgen_ty_30 {
+    pub type Type = ::aya_bpf_cty::c_uint;
+    pub const BPF_WRITE_HDR_TCP_CURRENT_MSS: Type = 1;
+    pub const BPF_WRITE_HDR_TCP_SYNACK_COOKIE: Type = 2;
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct bpf_perf_event_value {
@@ -775,6 +927,16 @@ pub struct bpf_perf_event_value {
     pub enabled: __u64,
     pub running: __u64,
 }
+pub const BPF_DEVCG_ACC_MKNOD: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_DEVCG_ACC_READ: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_DEVCG_ACC_WRITE: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_31 = ::aya_bpf_cty::c_uint;
+pub const BPF_DEVCG_DEV_BLOCK: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_DEVCG_DEV_CHAR: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_32 = ::aya_bpf_cty::c_uint;
+pub const BPF_FIB_LOOKUP_DIRECT: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_FIB_LOOKUP_OUTPUT: ::aya_bpf_cty::c_uint = 2;
+pub type _bindgen_ty_33 = ::aya_bpf_cty::c_uint;
 pub const BPF_FIB_LKUP_RET_SUCCESS: ::aya_bpf_cty::c_uint = 0;
 pub const BPF_FIB_LKUP_RET_BLACKHOLE: ::aya_bpf_cty::c_uint = 1;
 pub const BPF_FIB_LKUP_RET_UNREACHABLE: ::aya_bpf_cty::c_uint = 2;
@@ -784,7 +946,7 @@ pub const BPF_FIB_LKUP_RET_FWD_DISABLED: ::aya_bpf_cty::c_uint = 5;
 pub const BPF_FIB_LKUP_RET_UNSUPP_LWT: ::aya_bpf_cty::c_uint = 6;
 pub const BPF_FIB_LKUP_RET_NO_NEIGH: ::aya_bpf_cty::c_uint = 7;
 pub const BPF_FIB_LKUP_RET_FRAG_NEEDED: ::aya_bpf_cty::c_uint = 8;
-pub type _bindgen_ty_4 = ::aya_bpf_cty::c_uint;
+pub type _bindgen_ty_34 = ::aya_bpf_cty::c_uint;
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct bpf_fib_lookup {
@@ -792,11 +954,11 @@ pub struct bpf_fib_lookup {
     pub l4_protocol: __u8,
     pub sport: __be16,
     pub dport: __be16,
-    pub tot_len: __u16,
-    pub ifindex: __u32,
     pub __bindgen_anon_1: bpf_fib_lookup__bindgen_ty_1,
+    pub ifindex: __u32,
     pub __bindgen_anon_2: bpf_fib_lookup__bindgen_ty_2,
     pub __bindgen_anon_3: bpf_fib_lookup__bindgen_ty_3,
+    pub __bindgen_anon_4: bpf_fib_lookup__bindgen_ty_4,
     pub h_vlan_proto: __be16,
     pub h_vlan_TCI: __be16,
     pub smac: [__u8; 6usize],
@@ -805,6 +967,13 @@ pub struct bpf_fib_lookup {
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub union bpf_fib_lookup__bindgen_ty_1 {
+    pub tot_len: __u16,
+    pub mtu_result: __u16,
+    _bindgen_union_align: u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_fib_lookup__bindgen_ty_2 {
     pub tos: __u8,
     pub flowinfo: __be32,
     pub rt_metric: __u32,
@@ -812,20 +981,37 @@ pub union bpf_fib_lookup__bindgen_ty_1 {
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
-pub union bpf_fib_lookup__bindgen_ty_2 {
+pub union bpf_fib_lookup__bindgen_ty_3 {
     pub ipv4_src: __be32,
     pub ipv6_src: [__u32; 4usize],
     _bindgen_union_align: [u32; 4usize],
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
-pub union bpf_fib_lookup__bindgen_ty_3 {
+pub union bpf_fib_lookup__bindgen_ty_4 {
     pub ipv4_dst: __be32,
     pub ipv6_dst: [__u32; 4usize],
     _bindgen_union_align: [u32; 4usize],
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
+pub struct bpf_redir_neigh {
+    pub nh_family: __u32,
+    pub __bindgen_anon_1: bpf_redir_neigh__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union bpf_redir_neigh__bindgen_ty_1 {
+    pub ipv4_nh: __be32,
+    pub ipv6_nh: [__u32; 4usize],
+    _bindgen_union_align: [u32; 4usize],
+}
+pub const BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG: ::aya_bpf_cty::c_uint = 1;
+pub const BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL: ::aya_bpf_cty::c_uint = 2;
+pub const BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP: ::aya_bpf_cty::c_uint = 4;
+pub type _bindgen_ty_35 = ::aya_bpf_cty::c_uint;
+#[repr(C)]
+#[derive(Copy, Clone)]
 pub struct bpf_flow_keys {
     pub nhoff: __u16,
     pub thoff: __u16,
@@ -873,6 +1059,19 @@ pub struct bpf_sysctl {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
+pub struct bpf_pidns_info {
+    pub pid: __u32,
+    pub tgid: __u32,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct btf_ptr {
+    pub ptr: *mut ::aya_bpf_cty::c_void,
+    pub type_id: __u32,
+    pub flags: __u32,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
 pub struct pt_regs {
     pub r15: ::aya_bpf_cty::c_ulong,
     pub r14: ::aya_bpf_cty::c_ulong,
@@ -910,16 +1109,6 @@ pub struct bpf_perf_event_data {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct bpf_pidns_info {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct bpf_redir_neigh {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
 pub struct linux_binprm {
     _unused: [u8; 0],
 }
@@ -970,11 +1159,6 @@ pub struct path {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct btf_ptr {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
 pub struct inode {
     _unused: [u8; 0],
 }
@@ -996,6 +1180,4 @@ pub struct bpf_map_def {
     pub value_size: ::aya_bpf_cty::c_uint,
     pub max_entries: ::aya_bpf_cty::c_uint,
     pub map_flags: ::aya_bpf_cty::c_uint,
-    pub id: ::aya_bpf_cty::c_uint,
-    pub pinning: ::aya_bpf_cty::c_uint,
 }

+ 172 - 13
bpf/aya-bpf-bindings/src/x86_64/getters.rs

@@ -104,6 +104,9 @@ impl __sk_buff {
             Some(v)
         }
     }
+    pub fn gso_size(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.gso_size) }.ok()
+    }
 }
 impl __sk_buff__bindgen_ty_1 {
     pub fn flow_keys(&self) -> Option<*mut bpf_flow_keys> {
@@ -224,6 +227,9 @@ impl bpf_sock {
     pub fn state(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.state) }.ok()
     }
+    pub fn rx_queue_mapping(&self) -> Option<__s32> {
+        unsafe { crate::bpf_probe_read(&self.rx_queue_mapping) }.ok()
+    }
 }
 impl bpf_tcp_sock {
     pub fn snd_cwnd(&self) -> Option<__u32> {
@@ -365,6 +371,9 @@ impl xdp_md {
     pub fn rx_queue_index(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.rx_queue_index) }.ok()
     }
+    pub fn egress_ifindex(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.egress_ifindex) }.ok()
+    }
 }
 impl sk_msg_md {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -407,6 +416,14 @@ impl sk_msg_md {
     pub fn size(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.size) }.ok()
     }
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
 }
 impl sk_msg_md__bindgen_ty_1 {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -428,6 +445,16 @@ impl sk_msg_md__bindgen_ty_2 {
         }
     }
 }
+impl sk_msg_md__bindgen_ty_3 {
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl sk_reuseport_md {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
         let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.data) }.ok()?;
@@ -460,6 +487,22 @@ impl sk_reuseport_md {
     pub fn hash(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.hash) }.ok()
     }
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn migrating_sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.migrating_sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
 }
 impl sk_reuseport_md__bindgen_ty_1 {
     pub fn data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
@@ -481,6 +524,26 @@ impl sk_reuseport_md__bindgen_ty_2 {
         }
     }
 }
+impl sk_reuseport_md__bindgen_ty_3 {
+    pub fn sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
+impl sk_reuseport_md__bindgen_ty_4 {
+    pub fn migrating_sk(&self) -> Option<*mut bpf_sock> {
+        let v = unsafe { crate::bpf_probe_read(&self.migrating_sk) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl bpf_map_info {
     pub fn type_(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.type_) }.ok()
@@ -506,6 +569,9 @@ impl bpf_map_info {
     pub fn ifindex(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.ifindex) }.ok()
     }
+    pub fn btf_vmlinux_value_type_id(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.btf_vmlinux_value_type_id) }.ok()
+    }
     pub fn netns_dev(&self) -> Option<__u64> {
         unsafe { crate::bpf_probe_read(&self.netns_dev) }.ok()
     }
@@ -689,6 +755,28 @@ impl bpf_sock_ops {
             Some(v)
         }
     }
+    pub fn skb_data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.skb_data) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn skb_data_end(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.skb_data_end) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn skb_len(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.skb_len) }.ok()
+    }
+    pub fn skb_tcp_flags(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.skb_tcp_flags) }.ok()
+    }
 }
 impl bpf_sock_ops__bindgen_ty_1 {
     pub fn args(&self) -> Option<[__u32; 4usize]> {
@@ -711,6 +799,26 @@ impl bpf_sock_ops__bindgen_ty_2 {
         }
     }
 }
+impl bpf_sock_ops__bindgen_ty_3 {
+    pub fn skb_data(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.skb_data) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
+impl bpf_sock_ops__bindgen_ty_4 {
+    pub fn skb_data_end(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.skb_data_end) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+}
 impl bpf_perf_event_value {
     pub fn counter(&self) -> Option<__u64> {
         unsafe { crate::bpf_probe_read(&self.counter) }.ok()
@@ -736,31 +844,34 @@ impl bpf_fib_lookup {
         unsafe { crate::bpf_probe_read(&self.dport) }.ok()
     }
     pub fn tot_len(&self) -> Option<__u16> {
-        unsafe { crate::bpf_probe_read(&self.tot_len) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.tot_len) }.ok()
+    }
+    pub fn mtu_result(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.mtu_result) }.ok()
     }
     pub fn ifindex(&self) -> Option<__u32> {
         unsafe { crate::bpf_probe_read(&self.ifindex) }.ok()
     }
     pub fn tos(&self) -> Option<__u8> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.tos) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.tos) }.ok()
     }
     pub fn flowinfo(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.flowinfo) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.flowinfo) }.ok()
     }
     pub fn rt_metric(&self) -> Option<__u32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.rt_metric) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.rt_metric) }.ok()
     }
     pub fn ipv4_src(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.ipv4_src) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv4_src) }.ok()
     }
     pub fn ipv6_src(&self) -> Option<[__u32; 4usize]> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_2.ipv6_src) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv6_src) }.ok()
     }
     pub fn ipv4_dst(&self) -> Option<__be32> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv4_dst) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.ipv4_dst) }.ok()
     }
     pub fn ipv6_dst(&self) -> Option<[__u32; 4usize]> {
-        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_3.ipv6_dst) }.ok()
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_4.ipv6_dst) }.ok()
     }
     pub fn h_vlan_proto(&self) -> Option<__be16> {
         unsafe { crate::bpf_probe_read(&self.h_vlan_proto) }.ok()
@@ -776,6 +887,14 @@ impl bpf_fib_lookup {
     }
 }
 impl bpf_fib_lookup__bindgen_ty_1 {
+    pub fn tot_len(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.tot_len) }.ok()
+    }
+    pub fn mtu_result(&self) -> Option<__u16> {
+        unsafe { crate::bpf_probe_read(&self.mtu_result) }.ok()
+    }
+}
+impl bpf_fib_lookup__bindgen_ty_2 {
     pub fn tos(&self) -> Option<__u8> {
         unsafe { crate::bpf_probe_read(&self.tos) }.ok()
     }
@@ -786,7 +905,7 @@ impl bpf_fib_lookup__bindgen_ty_1 {
         unsafe { crate::bpf_probe_read(&self.rt_metric) }.ok()
     }
 }
-impl bpf_fib_lookup__bindgen_ty_2 {
+impl bpf_fib_lookup__bindgen_ty_3 {
     pub fn ipv4_src(&self) -> Option<__be32> {
         unsafe { crate::bpf_probe_read(&self.ipv4_src) }.ok()
     }
@@ -794,7 +913,7 @@ impl bpf_fib_lookup__bindgen_ty_2 {
         unsafe { crate::bpf_probe_read(&self.ipv6_src) }.ok()
     }
 }
-impl bpf_fib_lookup__bindgen_ty_3 {
+impl bpf_fib_lookup__bindgen_ty_4 {
     pub fn ipv4_dst(&self) -> Option<__be32> {
         unsafe { crate::bpf_probe_read(&self.ipv4_dst) }.ok()
     }
@@ -802,6 +921,25 @@ impl bpf_fib_lookup__bindgen_ty_3 {
         unsafe { crate::bpf_probe_read(&self.ipv6_dst) }.ok()
     }
 }
+impl bpf_redir_neigh {
+    pub fn nh_family(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.nh_family) }.ok()
+    }
+    pub fn ipv4_nh(&self) -> Option<__be32> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.ipv4_nh) }.ok()
+    }
+    pub fn ipv6_nh(&self) -> Option<[__u32; 4usize]> {
+        unsafe { crate::bpf_probe_read(&self.__bindgen_anon_1.ipv6_nh) }.ok()
+    }
+}
+impl bpf_redir_neigh__bindgen_ty_1 {
+    pub fn ipv4_nh(&self) -> Option<__be32> {
+        unsafe { crate::bpf_probe_read(&self.ipv4_nh) }.ok()
+    }
+    pub fn ipv6_nh(&self) -> Option<[__u32; 4usize]> {
+        unsafe { crate::bpf_probe_read(&self.ipv6_nh) }.ok()
+    }
+}
 impl bpf_flow_keys {
     pub fn nhoff(&self) -> Option<__u16> {
         unsafe { crate::bpf_probe_read(&self.nhoff) }.ok()
@@ -895,6 +1033,30 @@ impl bpf_sysctl {
         unsafe { crate::bpf_probe_read(&self.file_pos) }.ok()
     }
 }
+impl bpf_pidns_info {
+    pub fn pid(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.pid) }.ok()
+    }
+    pub fn tgid(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.tgid) }.ok()
+    }
+}
+impl btf_ptr {
+    pub fn ptr(&self) -> Option<*mut ::aya_bpf_cty::c_void> {
+        let v = unsafe { crate::bpf_probe_read(&self.ptr) }.ok()?;
+        if v.is_null() {
+            None
+        } else {
+            Some(v)
+        }
+    }
+    pub fn type_id(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.type_id) }.ok()
+    }
+    pub fn flags(&self) -> Option<__u32> {
+        unsafe { crate::bpf_probe_read(&self.flags) }.ok()
+    }
+}
 impl pt_regs {
     pub fn r15(&self) -> Option<::aya_bpf_cty::c_ulong> {
         unsafe { crate::bpf_probe_read(&self.r15) }.ok()
@@ -969,8 +1131,6 @@ impl sockaddr {
     }
 }
 impl bpf_perf_event_data {}
-impl bpf_pidns_info {}
-impl bpf_redir_neigh {}
 impl linux_binprm {}
 impl tcphdr {}
 impl seq_file {}
@@ -981,7 +1141,6 @@ impl tcp_request_sock {}
 impl udp6_sock {}
 impl task_struct {}
 impl path {}
-impl btf_ptr {}
 impl inode {}
 impl socket {}
 impl file {}

+ 31 - 0
bpf/aya-bpf-bindings/src/x86_64/helpers.rs

@@ -1679,3 +1679,34 @@ pub unsafe fn bpf_snprintf(
     ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(165usize);
     fun(str_, str_size, fmt, data, data_len)
 }
+pub unsafe fn bpf_sys_bpf(
+    cmd: __u32,
+    attr: *mut ::aya_bpf_cty::c_void,
+    attr_size: __u32,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        cmd: __u32,
+        attr: *mut ::aya_bpf_cty::c_void,
+        attr_size: __u32,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(166usize);
+    fun(cmd, attr, attr_size)
+}
+pub unsafe fn bpf_btf_find_by_name_kind(
+    name: *mut ::aya_bpf_cty::c_char,
+    name_sz: ::aya_bpf_cty::c_int,
+    kind: __u32,
+    flags: ::aya_bpf_cty::c_int,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        name: *mut ::aya_bpf_cty::c_char,
+        name_sz: ::aya_bpf_cty::c_int,
+        kind: __u32,
+        flags: ::aya_bpf_cty::c_int,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(167usize);
+    fun(name, name_sz, kind, flags)
+}
+pub unsafe fn bpf_sys_close(fd: __u32) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(fd: __u32) -> ::aya_bpf_cty::c_long =
+        ::core::mem::transmute(168usize);
+    fun(fd)
+}

+ 1 - 1
bpf/aya-bpf/src/maps/perf_map.rs

@@ -43,7 +43,7 @@ impl<T> PerfMap<T> {
         data: &T,
         flags: u32,
     ) {
-        let index = index.unwrap_or(BPF_F_CURRENT_CPU.into()) as u64;
+        let index = index.unwrap_or(BPF_F_CURRENT_CPU as u32) as u64;
         let flags = (flags as u64) << 32 | index;
         unsafe {
             bpf_perf_event_output(