use serde::{Deserialize, Serialize};
use validator::ValidationError;
use crate::common::non_nul_string::NonNulString;
const MAX_NET_NAMESPACE_LENGTH: usize = 256;
#[derive(Clone, Eq, PartialEq, Debug, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Network {
#[serde(rename = "host")]
Host,
#[serde(rename = "namespace")]
Namespace(NonNulString),
}
pub(crate) fn validate(network: &Network) -> Result<(), ValidationError> {
match network {
Network::Host => Ok(()),
Network::Namespace(netns) if netns.len() <= MAX_NET_NAMESPACE_LENGTH => Ok(()),
Network::Namespace(_) => Err(ValidationError::new("network namespace exceeds max length")),
}
}