scirs2_core/resource/
network.rs1use crate::error::CoreResult;
6
7#[derive(Debug, Clone)]
9pub struct NetworkInfo {
10 pub interfaces: Vec<NetworkInterface>,
12 pub mtu: usize,
14 pub bandwidth_mbps: f64,
16 pub latency_ms: f64,
18}
19
20impl Default for NetworkInfo {
21 fn default() -> Self {
22 Self {
23 interfaces: vec![NetworkInterface::default()],
24 mtu: 1500,
25 bandwidth_mbps: 1000.0, latency_ms: 1.0,
27 }
28 }
29}
30
31impl NetworkInfo {
32 pub fn detect() -> CoreResult<Self> {
34 Ok(Self::default())
36 }
37}
38
39#[derive(Debug, Clone)]
41pub struct NetworkInterface {
42 pub name: String,
44 pub interface_type: NetworkInterfaceType,
46 pub mac_address: String,
48 pub ip_addresses: Vec<String>,
50 pub is_up: bool,
52}
53
54impl Default for NetworkInterface {
55 fn default() -> Self {
56 Self {
57 name: "eth0".to_string(),
58 interface_type: NetworkInterfaceType::Ethernet,
59 mac_address: "00:00:00:00:00:00".to_string(),
60 ip_addresses: vec!["127.0.0.1".to_string()],
61 is_up: true,
62 }
63 }
64}
65
66#[derive(Debug, Clone, Copy, PartialEq, Eq)]
68pub enum NetworkInterfaceType {
69 Ethernet,
71 WiFi,
73 Loopback,
75 Infiniband,
77 Unknown,
79}