From 122a5306e72c7560629bcef160e7f676b84eabd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=C2=A0Decina?= Date: Mon, 28 Jun 2021 08:41:55 +0000 Subject: [PATCH] aya, aya-bpf-bindings: regenerate bindings --- aya/src/generated/linux_bindings_aarch64.rs | 179 ++++++--- aya/src/generated/linux_bindings_x86_64.rs | 179 ++++++--- aya/src/sys/netlink.rs | 8 +- bpf/aya-bpf-bindings/src/aarch64/bindings.rs | 366 +++++++++++++----- bpf/aya-bpf-bindings/src/aarch64/getters.rs | 185 +++++++++- bpf/aya-bpf-bindings/src/aarch64/helpers.rs | 31 ++ bpf/aya-bpf-bindings/src/x86_64/bindings.rs | 368 ++++++++++++++----- bpf/aya-bpf-bindings/src/x86_64/getters.rs | 185 +++++++++- bpf/aya-bpf-bindings/src/x86_64/helpers.rs | 31 ++ bpf/aya-bpf/src/maps/perf_map.rs | 2 +- 10 files changed, 1216 insertions(+), 318 deletions(-) diff --git a/aya/src/generated/linux_bindings_aarch64.rs b/aya/src/generated/linux_bindings_aarch64.rs index fa1d2f76..f7135f80 100644 --- a/aya/src/generated/linux_bindings_aarch64.rs +++ b/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, diff --git a/aya/src/generated/linux_bindings_x86_64.rs b/aya/src/generated/linux_bindings_x86_64.rs index fa1d2f76..f7135f80 100644 --- a/aya/src/generated/linux_bindings_x86_64.rs +++ b/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, diff --git a/aya/src/sys/netlink.rs b/aya/src/sys/netlink.rs index cde36884..23af030d 100644 --- a/aya/src/sys/netlink.rs +++ b/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, diff --git a/bpf/aya-bpf-bindings/src/aarch64/bindings.rs b/bpf/aya-bpf-bindings/src/aarch64/bindings.rs index d8c10afb..24ebf983 100644 --- a/bpf/aya-bpf-bindings/src/aarch64/bindings.rs +++ b/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], } diff --git a/bpf/aya-bpf-bindings/src/aarch64/getters.rs b/bpf/aya-bpf-bindings/src/aarch64/getters.rs index a9d5730b..2d7f4006 100644 --- a/bpf/aya-bpf-bindings/src/aarch64/getters.rs +++ b/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 {} diff --git a/bpf/aya-bpf-bindings/src/aarch64/helpers.rs b/bpf/aya-bpf-bindings/src/aarch64/helpers.rs index f3b185a4..01c5600e 100644 --- a/bpf/aya-bpf-bindings/src/aarch64/helpers.rs +++ b/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) +} diff --git a/bpf/aya-bpf-bindings/src/x86_64/bindings.rs b/bpf/aya-bpf-bindings/src/x86_64/bindings.rs index aead4b38..24ebf983 100644 --- a/bpf/aya-bpf-bindings/src/x86_64/bindings.rs +++ b/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, } diff --git a/bpf/aya-bpf-bindings/src/x86_64/getters.rs b/bpf/aya-bpf-bindings/src/x86_64/getters.rs index a9d5730b..2d7f4006 100644 --- a/bpf/aya-bpf-bindings/src/x86_64/getters.rs +++ b/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 {} diff --git a/bpf/aya-bpf-bindings/src/x86_64/helpers.rs b/bpf/aya-bpf-bindings/src/x86_64/helpers.rs index f3b185a4..01c5600e 100644 --- a/bpf/aya-bpf-bindings/src/x86_64/helpers.rs +++ b/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) +} diff --git a/bpf/aya-bpf/src/maps/perf_map.rs b/bpf/aya-bpf/src/maps/perf_map.rs index 212e2433..3776f2f2 100644 --- a/bpf/aya-bpf/src/maps/perf_map.rs +++ b/bpf/aya-bpf/src/maps/perf_map.rs @@ -43,7 +43,7 @@ impl PerfMap { 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(