hakoniwa 1.7.0

Process isolation for Linux using namespaces, resource limits, cgroups, landlock and seccomp.
Documentation
mod network;
mod pasta;

use crate::{Container, error::*};
use nix::unistd::Pid;
use std::os::fd::RawFd;

pub use network::Network;
pub use pasta::Pasta;

#[cfg(feature = "rustslirp")]
pub(crate) mod rustslirp;

pub(crate) enum SetupStatus {
    None,
    #[cfg(feature = "rustslirp")]
    RustSlirpTapFd(RawFd),
}

pub(crate) fn mainp_setup(container: &Container, child: Pid) -> Result<SetupStatus> {
    let network = &container
        .network
        .clone()
        .expect("Container#network is some");
    let status = match network {
        Network::Pasta(pasta) => Pasta::mainp_setup(pasta, child)?,
        #[cfg(feature = "rustslirp")]
        Network::RustSlirp(rustslirp) => rustslirp::RustSlirp::mainp_setup(rustslirp, child)?,
    };

    log::debug!("================================");
    Ok(status)
}