use crate::error::CoreResult;
#[derive(Debug, Clone)]
pub struct NetworkInfo {
pub interfaces: Vec<NetworkInterface>,
pub mtu: usize,
pub bandwidth_mbps: f64,
pub latency_ms: f64,
}
impl Default for NetworkInfo {
fn default() -> Self {
Self {
interfaces: vec![NetworkInterface::default()],
mtu: 1500,
bandwidth_mbps: 1000.0, latency_ms: 1.0,
}
}
}
impl NetworkInfo {
pub fn detect() -> CoreResult<Self> {
Ok(Self::default())
}
}
#[derive(Debug, Clone)]
pub struct NetworkInterface {
pub name: String,
pub interface_type: NetworkInterfaceType,
pub mac_address: String,
pub ip_addresses: Vec<String>,
pub is_up: bool,
}
impl Default for NetworkInterface {
fn default() -> Self {
Self {
name: "eth0".to_string(),
interface_type: NetworkInterfaceType::Ethernet,
mac_address: "00:00:00:00:00:00".to_string(),
ip_addresses: vec!["127.0.0.1".to_string()],
is_up: true,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NetworkInterfaceType {
Ethernet,
WiFi,
Loopback,
Infiniband,
Unknown,
}