Browse Source

aya-bpf: expose xdp_md of XdpContext and add metadata functions.

Thia Wyrod 3 years ago
parent
commit
d280b856bd
1 changed files with 13 additions and 1 deletions
  1. 13 1
      bpf/aya-bpf/src/programs/xdp.rs

+ 13 - 1
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 {