pub use caps::errors::CapsError;
use caps::{CapSet, Capability};
pub fn drop_to_only_net_admin() -> Result<(), CapsError> {
if caps::read(None, CapSet::Permitted)?.is_empty() {
return Ok(());
}
let mut keep = caps::CapsHashSet::new();
keep.insert(Capability::CAP_NET_ADMIN);
caps::set(None, CapSet::Effective, &keep)?;
caps::set(None, CapSet::Inheritable, &keep)?;
caps::set(None, CapSet::Permitted, &keep)?;
Ok(())
}
pub fn has_net_admin() -> Result<bool, CapsError> {
caps::has_cap(None, CapSet::Effective, Capability::CAP_NET_ADMIN)
}