seqknock-common 0.3.1

TCP Sequence number-based knocking; common sources
Documentation
pub use caps::errors::CapsError;
use caps::{CapSet, Capability};

pub fn drop_to_only_net_admin() -> Result<(), CapsError> {
    // Graceful exit to be able to show help in case of no caps
    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)
}