From cb3d71429caf26f35af8df709b817366aa21778a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=C2=A0Decina?= Date: Mon, 17 May 2021 09:51:04 +0000 Subject: [PATCH] bpf: improve SkMsgContext API --- bpf/aya-bpf/src/programs/sk_msg.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/bpf/aya-bpf/src/programs/sk_msg.rs b/bpf/aya-bpf/src/programs/sk_msg.rs index 8a1a9201..44dbb3f8 100644 --- a/bpf/aya-bpf/src/programs/sk_msg.rs +++ b/bpf/aya-bpf/src/programs/sk_msg.rs @@ -15,6 +15,10 @@ impl SkMsgContext { SkMsgContext { msg } } + pub fn size(&self) -> u32 { + unsafe { (*self.msg).size } + } + pub fn data(&self) -> usize { unsafe { (*self.msg).__bindgen_anon_1.data as usize } } @@ -23,12 +27,22 @@ impl SkMsgContext { unsafe { (*self.msg).__bindgen_anon_2.data_end as usize } } - pub fn push_data(&self, start: u32, len: u32, flags: u64) -> i64 { - unsafe { bpf_msg_push_data(self.msg, start, len as u32, flags) } + pub fn push_data(&self, start: u32, len: u32, flags: u64) -> Result<(), i64> { + let ret = unsafe { bpf_msg_push_data(self.msg, start, len as u32, flags) }; + if ret == 0 { + Ok(()) + } else { + Err(ret) + } } - pub fn pop_data(&self, start: u32, len: u32, flags: u64) -> i64 { - unsafe { bpf_msg_pop_data(self.msg, start, len as u32, flags) } + pub fn pop_data(&self, start: u32, len: u32, flags: u64) -> Result<(), i64> { + let ret = unsafe { bpf_msg_pop_data(self.msg, start, len as u32, flags) }; + if ret == 0 { + Ok(()) + } else { + Err(ret) + } } }