aya: impl From<obj::InvalidMapTypeError> for MapTypeError

reviewable/pr629/r34
Andrew Werner 2 years ago
parent af54a819a3
commit 279dd0d668

@ -704,12 +704,8 @@ impl<'a> BpfLoader<'a> {
}
fn parse_map(data: (String, MapData)) -> Result<(String, Map), BpfError> {
let name = data.0;
let map = data.1;
let map_type =
bpf_map_type::try_from(map.obj.map_type()).map_err(|e| MapError::InvalidMapType {
map_type: e.map_type,
})?;
let (name, map) = data;
let map_type = bpf_map_type::try_from(map.obj.map_type()).map_err(MapError::from)?;
let map = match map_type {
BPF_MAP_TYPE_ARRAY => Map::Array(map),
BPF_MAP_TYPE_PERCPU_ARRAY => Map::PerCpuArray(map),

@ -50,6 +50,7 @@ use std::{
use crate::util::KernelVersion;
use libc::{getrlimit, rlimit, RLIMIT_MEMLOCK, RLIM_INFINITY};
use log::warn;
use obj::maps::InvalidMapTypeError;
use thiserror::Error;
use crate::{
@ -192,6 +193,16 @@ pub enum MapError {
},
}
// Note that this is not just derived using #[from] because InvalidMapTypeError cannot implement
// Error due the the fact that aya-obj is nostd and error_in_core is not stabilized
// (https://github.com/rust-lang/rust/issues/103765).
impl From<InvalidMapTypeError> for MapError {
fn from(e: InvalidMapTypeError) -> Self {
let InvalidMapTypeError { map_type } = e;
MapError::InvalidMapType { map_type }
}
}
/// A map file descriptor.
pub struct MapFd(RawFd);

Loading…
Cancel
Save