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