mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-14 08:16:59 +00:00
fix for 0.0.0.0/0 network (#199)
This commit is contained in:
@ -166,7 +166,9 @@ impl Ipv4Network {
|
|||||||
/// ```
|
/// ```
|
||||||
pub fn mask(&self) -> Ipv4Addr {
|
pub fn mask(&self) -> Ipv4Addr {
|
||||||
debug_assert!(self.prefix <= 32);
|
debug_assert!(self.prefix <= 32);
|
||||||
|
if self.prefix == 0 {
|
||||||
|
return Ipv4Addr::new(0, 0, 0, 0);
|
||||||
|
}
|
||||||
let mask = u32::MAX << (IPV4_BITS - self.prefix);
|
let mask = u32::MAX << (IPV4_BITS - self.prefix);
|
||||||
Ipv4Addr::from(mask)
|
Ipv4Addr::from(mask)
|
||||||
}
|
}
|
||||||
@ -244,6 +246,9 @@ impl Ipv4Network {
|
|||||||
/// ```
|
/// ```
|
||||||
pub fn size(self) -> u32 {
|
pub fn size(self) -> u32 {
|
||||||
debug_assert!(self.prefix <= 32);
|
debug_assert!(self.prefix <= 32);
|
||||||
|
if self.prefix == 0 {
|
||||||
|
return u32::MAX;
|
||||||
|
}
|
||||||
1 << (IPV4_BITS - self.prefix)
|
1 << (IPV4_BITS - self.prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,4 +82,12 @@ mod tests {
|
|||||||
panic!("{}", s);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user