aya: Add Map::fd() function to return a MapFd

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
pull/327/head
Dave Tucker 2 years ago committed by Alessandro Decina
parent 24597b15b7
commit 623579a47f

@ -33,8 +33,15 @@
//! versa. Because of that, all map values must be plain old data and therefore //! versa. Because of that, all map values must be plain old data and therefore
//! implement the [Pod] trait. //! implement the [Pod] trait.
use std::{ use std::{
convert::TryFrom, ffi::CString, io, marker::PhantomData, mem, ops::Deref, os::unix::io::RawFd, convert::TryFrom,
path::Path, ptr, ffi::CString,
io,
marker::PhantomData,
mem,
ops::Deref,
os::unix::{io::RawFd, prelude::AsRawFd},
path::Path,
ptr,
}; };
use thiserror::Error; use thiserror::Error;
@ -206,6 +213,15 @@ pub enum MapError {
}, },
} }
/// A map file descriptor.
pub struct MapFd(RawFd);
impl AsRawFd for MapFd {
fn as_raw_fd(&self) -> RawFd {
self.0
}
}
/// A generic handle to a BPF map. /// A generic handle to a BPF map.
/// ///
/// You should never need to use this unless you're implementing a new map type. /// You should never need to use this unless you're implementing a new map type.
@ -295,6 +311,13 @@ impl Map {
self.pinned = true; self.pinned = true;
Ok(()) Ok(())
} }
/// Returns the file descriptor of the map.
///
/// Can be converted to [`RawFd`] using [`AsRawFd`].
pub fn fd(&self) -> Option<MapFd> {
self.fd.map(MapFd)
}
} }
impl Drop for Map { impl Drop for Map {

Loading…
Cancel
Save