From ad46759a55eb2e1e3bb8b152848e7792884c9091 Mon Sep 17 00:00:00 2001 From: SildCave <81300193+SildCave@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:22:12 +0200 Subject: [PATCH] fix for 0.0.0.0/0 network (#199) --- src/ipv4.rs | 7 ++++++- tests/test_json.rs | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ipv4.rs b/src/ipv4.rs index f8a0311..e7acdee 100644 --- a/src/ipv4.rs +++ b/src/ipv4.rs @@ -166,7 +166,9 @@ impl Ipv4Network { /// ``` pub fn mask(&self) -> Ipv4Addr { debug_assert!(self.prefix <= 32); - + if self.prefix == 0 { + return Ipv4Addr::new(0, 0, 0, 0); + } let mask = u32::MAX << (IPV4_BITS - self.prefix); Ipv4Addr::from(mask) } @@ -244,6 +246,9 @@ impl Ipv4Network { /// ``` pub fn size(self) -> u32 { debug_assert!(self.prefix <= 32); + if self.prefix == 0 { + return u32::MAX; + } 1 << (IPV4_BITS - self.prefix) } diff --git a/tests/test_json.rs b/tests/test_json.rs index 77f8709..4ac40ba 100644 --- a/tests/test_json.rs +++ b/tests/test_json.rs @@ -82,4 +82,12 @@ mod tests { panic!("{}", s); } } + + + #[test] + fn test_ipnetwork_size_with_prefix_0() { + let network: Ipv4Network = "0.0.0.0/0".parse().unwrap(); + let size = network.size(); + assert_eq!(size, u32::MAX); + } }