File tree 2 files changed +14
-1
lines changed
2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -166,7 +166,9 @@ impl Ipv4Network {
166
166
/// ```
167
167
pub fn mask ( & self ) -> Ipv4Addr {
168
168
debug_assert ! ( self . prefix <= 32 ) ;
169
-
169
+ if self . prefix == 0 {
170
+ return Ipv4Addr :: new ( 0 , 0 , 0 , 0 ) ;
171
+ }
170
172
let mask = u32:: MAX << ( IPV4_BITS - self . prefix ) ;
171
173
Ipv4Addr :: from ( mask)
172
174
}
@@ -244,6 +246,9 @@ impl Ipv4Network {
244
246
/// ```
245
247
pub fn size ( self ) -> u32 {
246
248
debug_assert ! ( self . prefix <= 32 ) ;
249
+ if self . prefix == 0 {
250
+ return u32:: MAX ;
251
+ }
247
252
1 << ( IPV4_BITS - self . prefix )
248
253
}
249
254
Original file line number Diff line number Diff line change @@ -82,4 +82,12 @@ mod tests {
82
82
panic ! ( "{}" , s) ;
83
83
}
84
84
}
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
+ }
85
93
}
You can’t perform that action at this time.
0 commit comments