diff --git a/bpf/aya-bpf/src/programs/xdp.rs b/bpf/aya-bpf/src/programs/xdp.rs index cc5157c7..3b13c257 100644 --- a/bpf/aya-bpf/src/programs/xdp.rs +++ b/bpf/aya-bpf/src/programs/xdp.rs @@ -3,7 +3,7 @@ use core::ffi::c_void; use crate::{bindings::xdp_md, BpfContext}; pub struct XdpContext { - ctx: *mut xdp_md, + pub ctx: *mut xdp_md, } impl XdpContext { @@ -18,6 +18,18 @@ impl XdpContext { pub fn data_end(&self) -> usize { unsafe { (*self.ctx).data_end as usize } } + + /// Return the raw address of the XdpContext metadata. + #[inline(always)] + pub fn metadata(&self) -> usize { + unsafe { (*self.ctx).data_meta as usize } + } + + /// Return the raw address immediately after the XdpContext's metadata. + #[inline(always)] + pub fn metadata_end(&self) -> usize { + self.data() + } } impl BpfContext for XdpContext {