From ab8d512b601379838c8f721a3cee4530a76f45fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=C2=A0Decina?= Date: Fri, 7 May 2021 01:02:25 +0000 Subject: [PATCH] bpf: add HashMap::insert --- bpf/aya-bpf/src/maps/hash_map.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bpf/aya-bpf/src/maps/hash_map.rs b/bpf/aya-bpf/src/maps/hash_map.rs index 412ca0b7..3f4835f7 100644 --- a/bpf/aya-bpf/src/maps/hash_map.rs +++ b/bpf/aya-bpf/src/maps/hash_map.rs @@ -1,10 +1,10 @@ use core::{marker::PhantomData, mem}; -use aya_bpf_cty::c_void; +use aya_bpf_cty::{c_long, c_void}; use crate::{ bindings::{bpf_map_def, bpf_map_type::BPF_MAP_TYPE_HASH}, - helpers::bpf_map_lookup_elem, + helpers::{bpf_map_lookup_elem, bpf_map_update_elem}, }; #[repr(transparent)] @@ -41,4 +41,18 @@ impl HashMap { Some(&*(value as *const V)) } } + + pub unsafe fn insert(&mut self, key: &K, value: &V, flags: u64) -> Result<(), c_long> { + let ret = bpf_map_update_elem( + &mut self.def as *mut _ as *mut _, + key as *const _ as *const _, + value as *const _ as *const _, + flags, + ); + if ret < 0 { + return Err(ret); + } + + Ok(()) + } }