use aya_ebpf_cty::c_long;
use crate::{
bindings::bpf_map_type::BPF_MAP_TYPE_CGROUP_ARRAY,
helpers::bpf_current_task_under_cgroup,
maps::{MapDef, PinningType},
};
#[repr(transparent)]
pub struct CgroupArray {
def: MapDef,
}
impl CgroupArray {
map_constructors!(u32, u32, BPF_MAP_TYPE_CGROUP_ARRAY);
pub fn current_task_under_cgroup(&self, index: u32) -> Result<bool, c_long> {
let ret = unsafe { bpf_current_task_under_cgroup(self.def.as_ptr(), index) };
match ret {
1 => Ok(true),
0 => Ok(false),
ret => Err(ret),
}
}
}
impl crate::programs::tc::sealed::CgroupArrayMap for CgroupArray {
fn as_ptr(&self) -> *mut core::ffi::c_void {
self.def.as_ptr().cast()
}
}