From d280b856bd738edb47c57ef8e2bb92146d813dfc Mon Sep 17 00:00:00 2001 From: Thia Wyrod Date: Sat, 20 Nov 2021 08:19:59 -0800 Subject: [PATCH] aya-bpf: expose xdp_md of XdpContext and add metadata functions. --- bpf/aya-bpf/src/programs/xdp.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 {