Skip to content

Commit ad46759

Browse files
authored
fix for 0.0.0.0/0 network (#199)
1 parent cbf8d6b commit ad46759

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/ipv4.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,9 @@ impl Ipv4Network {
166166
/// ```
167167
pub fn mask(&self) -> Ipv4Addr {
168168
debug_assert!(self.prefix <= 32);
169-
169+
if self.prefix == 0 {
170+
return Ipv4Addr::new(0, 0, 0, 0);
171+
}
170172
let mask = u32::MAX << (IPV4_BITS - self.prefix);
171173
Ipv4Addr::from(mask)
172174
}
@@ -244,6 +246,9 @@ impl Ipv4Network {
244246
/// ```
245247
pub fn size(self) -> u32 {
246248
debug_assert!(self.prefix <= 32);
249+
if self.prefix == 0 {
250+
return u32::MAX;
251+
}
247252
1 << (IPV4_BITS - self.prefix)
248253
}
249254

tests/test_json.rs

+8
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,12 @@ mod tests {
8282
panic!("{}", s);
8383
}
8484
}
85+
86+
87+
#[test]
88+
fn test_ipnetwork_size_with_prefix_0() {
89+
let network: Ipv4Network = "0.0.0.0/0".parse().unwrap();
90+
let size = network.size();
91+
assert_eq!(size, u32::MAX);
92+
}
8593
}

0 commit comments

Comments
 (0)