containerization-framework 0.5.0

Rust bindings for Apple's Containerization framework: Linux containers in lightweight VMs, in-process and without a daemon.
use super::address;

/// `InterfaceAddress`, the addresses
/// [`crate::containerization::vm::Vminitd::address_add`] gives an interface.
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct InterfaceAddress {
  pub ipv4_address: address::CIDRv4,
  pub ipv6_address: Option<address::CIDRv6>,
}

/// `LinkRoute`, which [`crate::containerization::vm::Vminitd::route_add_link`]
/// installs. Its `Default` is Swift's `LinkRoute()`.
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
pub struct LinkRoute {
  pub ipv4_destination: Option<address::IPv4Address>,
  pub ipv4_source: Option<address::IPv4Address>,
  pub ipv6_destination: Option<address::IPv6Address>,
  pub ipv6_source: Option<address::IPv6Address>,
}

/// `DefaultRoute`, which
/// [`crate::containerization::vm::Vminitd::route_add_default`] installs. Its
/// `Default` is Swift's `DefaultRoute()`.
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
pub struct DefaultRoute {
  pub ipv4_gateway: Option<address::IPv4Address>,
  pub ipv6_gateway: Option<address::IPv6Address>,
}