use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug)]
pub enum NetworkAdapterPromiscModePolicy {
Deny,
AllowNetwork,
AllowAll,
}
impl From<u32> for NetworkAdapterPromiscModePolicy {
fn from(value: u32) -> Self {
match value {
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_Deny => {
NetworkAdapterPromiscModePolicy::Deny
}
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_AllowNetwork => {
NetworkAdapterPromiscModePolicy::AllowNetwork
}
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_AllowAll => {
NetworkAdapterPromiscModePolicy::AllowAll
}
_ => {
error!(
"Unknown NetworkAdapterPromiscModePolicy. ModePolicy: {}",
value
);
NetworkAdapterPromiscModePolicy::Deny
}
}
}
}
impl Into<u32> for NetworkAdapterPromiscModePolicy {
fn into(self) -> u32 {
match self {
NetworkAdapterPromiscModePolicy::Deny => {
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_Deny
}
NetworkAdapterPromiscModePolicy::AllowNetwork => {
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_AllowNetwork
}
NetworkAdapterPromiscModePolicy::AllowAll => {
raw::NetworkAdapterPromiscModePolicy_NetworkAdapterPromiscModePolicy_AllowAll
}
}
}
}
impl Display for NetworkAdapterPromiscModePolicy {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}