From 4ddf2600b4084d224d66810f8372f42354dc40e0 Mon Sep 17 00:00:00 2001 From: Andrew Stoycos Date: Wed, 19 Oct 2022 09:50:33 -0400 Subject: [PATCH] Fixups4 Remove From method and replace with internal helper function. Signed-off-by: Andrew Stoycos --- aya/src/maps/mod.rs | 65 ++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/aya/src/maps/mod.rs b/aya/src/maps/mod.rs index c5632808..f3841502 100644 --- a/aya/src/maps/mod.rs +++ b/aya/src/maps/mod.rs @@ -268,6 +268,27 @@ pub enum Map { Queue(MapData), } +impl Map { + /// Returns the low level map type. + fn map_type(&self) -> u32 { + match self { + Map::Array(map) => map.obj.map_type(), + Map::PerCpuArray(map) => map.obj.map_type(), + Map::ProgramArray(map) => map.obj.map_type(), + Map::HashMap(map) => map.obj.map_type(), + Map::PerCpuHashMap(map) => map.obj.map_type(), + Map::PerfEventArray(map) => map.obj.map_type(), + Map::SockHash(map) => map.obj.map_type(), + Map::SockMap(map) => map.obj.map_type(), + Map::BloomFilter(map) => map.obj.map_type(), + Map::LpmTrie(map) => map.obj.map_type(), + Map::Stack(map) => map.obj.map_type(), + Map::StackTraceMap(map) => map.obj.map_type(), + Map::Queue(map) => map.obj.map_type(), + } + } +} + macro_rules! impl_try_from_map { ($($tx:ident from Map::$ty:ident),+ $(,)?) => { $( @@ -279,7 +300,7 @@ macro_rules! impl_try_from_map { Map::$ty(m) => { $tx::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -292,7 +313,7 @@ macro_rules! impl_try_from_map { Map::$ty(m) => { $tx::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -305,7 +326,7 @@ macro_rules! impl_try_from_map { Map::$ty(m) => { $tx::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -337,7 +358,7 @@ macro_rules! impl_try_from_map_generic_key_or_value { Map::$ty(m) => { $ty::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -350,7 +371,7 @@ macro_rules! impl_try_from_map_generic_key_or_value { Map::$ty(m) => { $ty::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -363,7 +384,7 @@ macro_rules! impl_try_from_map_generic_key_or_value { Map::$ty(m) => { $ty::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -384,7 +405,7 @@ macro_rules! impl_try_from_map_generic_key_and_value { Map::$ty(m) => { $ty::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -397,7 +418,7 @@ macro_rules! impl_try_from_map_generic_key_and_value { Map::$ty(m) => { $ty::new(m) }, - _ => Err(MapError::InvalidMapType{ map_type: map.into()}), + _ => Err(MapError::InvalidMapType{ map_type: map.map_type()}), } } } @@ -758,34 +779,6 @@ impl TryFrom for bpf_map_type { } } -macro_rules! impl_try_from_map_generic_key_or_value { - ($($typ:ty),+ $(,)?) => { - $( - impl From<$typ> for u32 { - fn from(map_type: $typ) -> u32 { - match map_type { - Map::Array(map) => map.obj.map_type(), - Map::PerCpuArray(map) => map.obj.map_type(), - Map::ProgramArray(map) => map.obj.map_type(), - Map::HashMap(map) => map.obj.map_type(), - Map::PerCpuHashMap(map) => map.obj.map_type(), - Map::PerfEventArray(map) => map.obj.map_type(), - Map::SockHash(map) => map.obj.map_type(), - Map::SockMap(map) => map.obj.map_type(), - Map::BloomFilter(map) => map.obj.map_type(), - Map::LpmTrie(map) => map.obj.map_type(), - Map::Stack(map) => map.obj.map_type(), - Map::StackTraceMap(map) => map.obj.map_type(), - Map::Queue(map) => map.obj.map_type(), - } - } - } - )+ - } -} - -impl_try_from_map_generic_key_or_value!(&Map, &mut Map, Map); - pub(crate) struct PerCpuKernelMem { bytes: Vec, }