commit
dab7f43370
@ -0,0 +1,155 @@ |
||||
use std::convert::TryFrom; |
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq)] |
||||
pub enum InterfaceType { |
||||
Unknown, |
||||
Ethernet, |
||||
TokenRing, |
||||
Fddi, |
||||
BasicIsdn, |
||||
PrimaryIsdn, |
||||
Ppp, |
||||
Loopback, |
||||
Ethernet3Megabit, |
||||
Slip, |
||||
Atm, |
||||
GenericModem, |
||||
FastEthernetT, |
||||
Isdn, |
||||
FastEthernetFx, |
||||
Wireless80211, |
||||
AsymmetricDsl, |
||||
RateAdaptDsl, |
||||
SymmetricDsl, |
||||
VeryHighSpeedDsl, |
||||
IPOverAtm, |
||||
GigabitEthernet, |
||||
Tunnel, |
||||
MultiRateSymmetricDsl, |
||||
HighPerformanceSerialBus, |
||||
Wman, |
||||
Wwanpp, |
||||
Wwanpp2, |
||||
} |
||||
|
||||
impl InterfaceType { |
||||
#[cfg(target_os = "windows")] |
||||
pub fn value(&self) -> u32 { |
||||
match *self { |
||||
InterfaceType::Unknown => 1, |
||||
InterfaceType::Ethernet => 6, |
||||
InterfaceType::TokenRing => 9, |
||||
InterfaceType::Fddi => 15, |
||||
InterfaceType::BasicIsdn => 20, |
||||
InterfaceType::PrimaryIsdn => 21, |
||||
InterfaceType::Ppp => 23, |
||||
InterfaceType::Loopback => 24, |
||||
InterfaceType::Ethernet3Megabit => 26, |
||||
InterfaceType::Slip => 28, |
||||
InterfaceType::Atm => 37, |
||||
InterfaceType::GenericModem => 48, |
||||
InterfaceType::FastEthernetT => 62, |
||||
InterfaceType::Isdn => 63, |
||||
InterfaceType::FastEthernetFx => 69, |
||||
InterfaceType::Wireless80211 => 71, |
||||
InterfaceType::AsymmetricDsl => 94, |
||||
InterfaceType::RateAdaptDsl => 95, |
||||
InterfaceType::SymmetricDsl => 96, |
||||
InterfaceType::VeryHighSpeedDsl => 97, |
||||
InterfaceType::IPOverAtm => 114, |
||||
InterfaceType::GigabitEthernet => 117, |
||||
InterfaceType::Tunnel => 131, |
||||
InterfaceType::MultiRateSymmetricDsl => 143, |
||||
InterfaceType::HighPerformanceSerialBus => 144, |
||||
InterfaceType::Wman => 237, |
||||
InterfaceType::Wwanpp => 243, |
||||
InterfaceType::Wwanpp2 => 244, |
||||
} |
||||
} |
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))] |
||||
pub fn value(&self) -> u32 { |
||||
// TODO
|
||||
match *self { |
||||
_ => 0, |
||||
} |
||||
} |
||||
|
||||
#[cfg(any(target_os = "macos", target_os = "openbsd", target_os = "freebsd", target_os = "netbsd", target_os = "ios"))] |
||||
pub fn value(&self) -> u32 { |
||||
// TODO
|
||||
match *self { |
||||
_ => 0, |
||||
} |
||||
} |
||||
|
||||
pub fn name(&self) -> String { |
||||
match *self { |
||||
InterfaceType::Unknown => String::from("Unknown"), |
||||
InterfaceType::Ethernet => String::from("Ethernet"), |
||||
InterfaceType::TokenRing => String::from("Token Ring"), |
||||
InterfaceType::Fddi => String::from("FDDI"), |
||||
InterfaceType::BasicIsdn => String::from("Basic ISDN"), |
||||
InterfaceType::PrimaryIsdn => String::from("Primary ISDN"), |
||||
InterfaceType::Ppp => String::from("PPP"), |
||||
InterfaceType::Loopback => String::from("Loopback"), |
||||
InterfaceType::Ethernet3Megabit => String::from("Ethernet 3 megabit"), |
||||
InterfaceType::Slip => String::from("SLIP"), |
||||
InterfaceType::Atm => String::from("ATM"), |
||||
InterfaceType::GenericModem => String::from("Generic Modem"), |
||||
InterfaceType::FastEthernetT => String::from("Fast Ethernet T"), |
||||
InterfaceType::Isdn => String::from("ISDN"), |
||||
InterfaceType::FastEthernetFx => String::from("Fast Ethernet FX"), |
||||
InterfaceType::Wireless80211 => String::from("Wireless IEEE 802.11"), |
||||
InterfaceType::AsymmetricDsl => String::from("Asymmetric DSL"), |
||||
InterfaceType::RateAdaptDsl => String::from("Rate Adaptive DSL"), |
||||
InterfaceType::SymmetricDsl => String::from("Symmetric DSL"), |
||||
InterfaceType::VeryHighSpeedDsl => String::from("Very High Data Rate DSL"), |
||||
InterfaceType::IPOverAtm => String::from("IP over ATM"), |
||||
InterfaceType::GigabitEthernet => String::from("Gigabit Ethernet"), |
||||
InterfaceType::Tunnel => String::from("Tunnel"), |
||||
InterfaceType::MultiRateSymmetricDsl => String::from("Multi-Rate Symmetric DSL"), |
||||
InterfaceType::HighPerformanceSerialBus => String::from("High Performance Serial Bus"), |
||||
InterfaceType::Wman => String::from("WMAN"), |
||||
InterfaceType::Wwanpp => String::from("WWANPP"), |
||||
InterfaceType::Wwanpp2 => String::from("WWANPP2"), |
||||
} |
||||
} |
||||
} |
||||
|
||||
impl TryFrom<u32> for InterfaceType { |
||||
type Error = (); |
||||
fn try_from(v: u32) -> Result<Self, Self::Error> { |
||||
match v { |
||||
x if x == InterfaceType::Unknown.value() => Ok(InterfaceType::Unknown), |
||||
x if x == InterfaceType::Ethernet.value() => Ok(InterfaceType::Ethernet), |
||||
x if x == InterfaceType::TokenRing.value() => Ok(InterfaceType::TokenRing), |
||||
x if x == InterfaceType::Fddi.value() => Ok(InterfaceType::Fddi), |
||||
x if x == InterfaceType::BasicIsdn.value() => Ok(InterfaceType::BasicIsdn), |
||||
x if x == InterfaceType::PrimaryIsdn.value() => Ok(InterfaceType::PrimaryIsdn), |
||||
x if x == InterfaceType::Ppp.value() => Ok(InterfaceType::Ppp), |
||||
x if x == InterfaceType::Loopback.value() => Ok(InterfaceType::Loopback), |
||||
x if x == InterfaceType::Ethernet3Megabit.value() => Ok(InterfaceType::Ethernet3Megabit), |
||||
x if x == InterfaceType::Slip.value() => Ok(InterfaceType::Slip), |
||||
x if x == InterfaceType::Atm.value() => Ok(InterfaceType::Atm), |
||||
x if x == InterfaceType::GenericModem.value() => Ok(InterfaceType::GenericModem), |
||||
x if x == InterfaceType::FastEthernetT.value() => Ok(InterfaceType::FastEthernetT), |
||||
x if x == InterfaceType::Isdn.value() => Ok(InterfaceType::Isdn), |
||||
x if x == InterfaceType::FastEthernetFx.value() => Ok(InterfaceType::FastEthernetFx), |
||||
x if x == InterfaceType::Wireless80211.value() => Ok(InterfaceType::Wireless80211), |
||||
x if x == InterfaceType::AsymmetricDsl.value() => Ok(InterfaceType::AsymmetricDsl), |
||||
x if x == InterfaceType::RateAdaptDsl.value() => Ok(InterfaceType::RateAdaptDsl), |
||||
x if x == InterfaceType::SymmetricDsl.value() => Ok(InterfaceType::SymmetricDsl), |
||||
x if x == InterfaceType::VeryHighSpeedDsl.value() => Ok(InterfaceType::VeryHighSpeedDsl), |
||||
x if x == InterfaceType::IPOverAtm.value() => Ok(InterfaceType::IPOverAtm), |
||||
x if x == InterfaceType::GigabitEthernet.value() => Ok(InterfaceType::GigabitEthernet), |
||||
x if x == InterfaceType::Tunnel.value() => Ok(InterfaceType::Tunnel), |
||||
x if x == InterfaceType::MultiRateSymmetricDsl.value() => Ok(InterfaceType::MultiRateSymmetricDsl), |
||||
x if x == InterfaceType::HighPerformanceSerialBus.value() => Ok(InterfaceType::HighPerformanceSerialBus), |
||||
x if x == InterfaceType::Wman.value() => Ok(InterfaceType::Wman), |
||||
x if x == InterfaceType::Wwanpp.value() => Ok(InterfaceType::Wwanpp), |
||||
x if x == InterfaceType::Wwanpp2.value() => Ok(InterfaceType::Wwanpp2), |
||||
_ => Err(()), |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue