diff --git a/src/interface/windows.rs b/src/interface/windows.rs index e0b6aec..f639af6 100644 --- a/src/interface/windows.rs +++ b/src/interface/windows.rs @@ -276,8 +276,8 @@ pub fn interfaces() -> Vec { ipv6: ipv6_vec, ipv6_scope_ids: ipv6_scope_id_vec, flags, - transmit_speed: Some(cur.TransmitLinkSpeed), - receive_speed: Some(cur.ReceiveLinkSpeed), + transmit_speed: sys::sanitize_u64(cur.TransmitLinkSpeed), + receive_speed: sys::sanitize_u64(cur.ReceiveLinkSpeed), #[cfg(feature = "gateway")] gateway: if default_gateway.mac_addr == MacAddr::zero() { None diff --git a/src/sys/windows.rs b/src/sys/windows.rs index ce59cd3..ce80782 100644 --- a/src/sys/windows.rs +++ b/src/sys/windows.rs @@ -5,3 +5,13 @@ pub const IFF_BROADCAST: u32 = ws::IFF_BROADCAST; pub const IFF_LOOPBACK: u32 = ws::IFF_LOOPBACK; pub const IFF_POINTOPOINT: u32 = ws::IFF_POINTTOPOINT; pub const IFF_MULTICAST: u32 = ws::IFF_MULTICAST; + +/// Convert u64::MAX to None. +/// Used for Windows APIs that return invalid max values. +pub(crate) fn sanitize_u64(val: u64) -> Option { + if val == u64::MAX { + None + } else { + Some(val) + } +}