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
//! implement the [Pod] trait.
use std::{
convert::TryFrom, ffi::CString, io, marker::PhantomData, mem, ops::Deref, os::unix::io::RawFd,
path::Path, ptr,
convert::TryFrom,
ffi::CString,
io,
marker::PhantomData,
mem,
ops::Deref,
os::unix::{io::RawFd, prelude::AsRawFd},
path::Path,
ptr,
};
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.
///
/// You should never need to use this unless you're implementing a new map type.
@ -295,6 +311,13 @@ impl Map {
self.pinned = true;
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 {

Loading…
Cancel
Save