diff --git a/bpf/aya-bpf/src/maps/xdp/dev_map.rs b/bpf/aya-bpf/src/maps/xdp/dev_map.rs index 85064141..ca54da42 100644 --- a/bpf/aya-bpf/src/maps/xdp/dev_map.rs +++ b/bpf/aya-bpf/src/maps/xdp/dev_map.rs @@ -46,13 +46,13 @@ impl DevMap { } #[inline(always)] - pub fn get(&self, index: u32) -> Option { + pub fn get(&self, index: u32) -> Option { unsafe { let value = bpf_map_lookup_elem( self.def.get() as *mut _, &index as *const _ as *const c_void, ); - NonNull::new(value as *mut u32).map(|p| *p.as_ref()) + NonNull::new(value as *mut bpf_devmap_val).map(|p| *p.as_ref()) } } diff --git a/bpf/aya-bpf/src/maps/xdp/dev_map_hash.rs b/bpf/aya-bpf/src/maps/xdp/dev_map_hash.rs index 6560bfc8..87a61299 100644 --- a/bpf/aya-bpf/src/maps/xdp/dev_map_hash.rs +++ b/bpf/aya-bpf/src/maps/xdp/dev_map_hash.rs @@ -46,21 +46,21 @@ impl DevMapHash { } #[inline(always)] - pub unsafe fn get(&self, index: u32) -> Option<&bpf_devmap_val> { - let value = bpf_map_lookup_elem( - self.def.get() as *mut _, - &index as *const _ as *const c_void, - ); - NonNull::new(value as *mut bpf_devmap_val).map(|p| p.as_ref()) + pub fn get(&self, key: u32) -> Option { + unsafe { + let value = + bpf_map_lookup_elem(self.def.get() as *mut _, &key as *const _ as *const c_void); + NonNull::new(value as *mut bpf_devmap_val).map(|p| *p.as_ref()) + } } #[inline(always)] - pub fn redirect(&self, index: u32, flags: u64) -> u32 { + pub fn redirect(&self, key: u32, flags: u64) -> u32 { unsafe { // Return XDP_REDIRECT on success, or the value of the two lower bits of the flags // argument on error. Thus I have no idea why it returns a long (i64) instead of // something saner, hence the unsigned_abs. - bpf_redirect_map(self.def.get() as *mut _, index.into(), flags).unsigned_abs() as u32 + bpf_redirect_map(self.def.get() as *mut _, key.into(), flags).unsigned_abs() as u32 } } } diff --git a/bpf/aya-bpf/src/maps/xdp/xsk_map.rs b/bpf/aya-bpf/src/maps/xdp/xsk_map.rs index 362f258e..a5e12767 100644 --- a/bpf/aya-bpf/src/maps/xdp/xsk_map.rs +++ b/bpf/aya-bpf/src/maps/xdp/xsk_map.rs @@ -46,13 +46,14 @@ impl XskMap { } #[inline(always)] - pub unsafe fn get(&self, index: u32) -> Option<&bpf_xdp_sock> { - let value = bpf_map_lookup_elem( - self.def.get() as *mut _, - &index as *const _ as *const c_void, - ); - // FIXME: alignment - NonNull::new(value as *mut bpf_xdp_sock).map(|p| p.as_ref()) + pub fn get(&self, index: u32) -> Option { + unsafe { + let value = bpf_map_lookup_elem( + self.def.get() as *mut _, + &index as *const _ as *const c_void, + ); + NonNull::new(value as *mut bpf_xdp_sock).map(|p| p.as_ref().queue_id) + } } #[inline(always)]