Remove From method and replace with internal
helper function.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
pull/397/head
Andrew Stoycos 2 years ago
parent 440097d7bc
commit 4ddf2600b4

@ -268,6 +268,27 @@ pub enum Map {
Queue(MapData), 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 { macro_rules! impl_try_from_map {
($($tx:ident from Map::$ty:ident),+ $(,)?) => { ($($tx:ident from Map::$ty:ident),+ $(,)?) => {
$( $(
@ -279,7 +300,7 @@ macro_rules! impl_try_from_map {
Map::$ty(m) => { Map::$ty(m) => {
$tx::new(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) => { Map::$ty(m) => {
$tx::new(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) => { Map::$ty(m) => {
$tx::new(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) => { Map::$ty(m) => {
$ty::new(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) => { Map::$ty(m) => {
$ty::new(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) => { Map::$ty(m) => {
$ty::new(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) => { Map::$ty(m) => {
$ty::new(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) => { Map::$ty(m) => {
$ty::new(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<u32> 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 { pub(crate) struct PerCpuKernelMem {
bytes: Vec<u8>, bytes: Vec<u8>,
} }

Loading…
Cancel
Save