#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LinkStatus {
Down,
Up,
}
impl LinkStatus {
pub fn status_bits(self) -> u16 {
match self {
Self::Down => 0,
Self::Up => crate::constants::VIRTIO_NET_S_LINK_UP,
}
}
}
#[derive(Debug, Clone)]
pub struct VirtioNetConfig {
pub mac: [u8; 6],
pub link: LinkStatus,
pub mtu: Option<u16>,
}
impl VirtioNetConfig {
pub fn new(mac: [u8; 6]) -> Self {
Self {
mac,
link: LinkStatus::Up,
mtu: None,
}
}
}
impl Default for VirtioNetConfig {
fn default() -> Self {
Self {
mac: [0x52, 0x54, 0x00, 0x12, 0x34, 0x56],
link: LinkStatus::Up,
mtu: None,
}
}
}