@@ -121,6 +121,8 @@ impl Ipv4Addr {
121
121
}
122
122
123
123
/// Returns true if the address appears to be globally routable.
124
+ /// See [iana-ipv4-special-registry][ipv4-sr].
125
+ /// [ipv4-sr]: http://goo.gl/RaZ7lg
124
126
///
125
127
/// The following return false:
126
128
///
@@ -129,9 +131,10 @@ impl Ipv4Addr {
129
131
/// - the link-local address (169.254.0.0/16)
130
132
/// - the broadcast address (255.255.255.255/32)
131
133
/// - test addresses used for documentation (192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24)
134
+ /// - the unspecified address (0.0.0.0)
132
135
pub fn is_global ( & self ) -> bool {
133
136
!self . is_private ( ) && !self . is_loopback ( ) && !self . is_link_local ( ) &&
134
- !self . is_broadcast ( ) && !self . is_documentation ( )
137
+ !self . is_broadcast ( ) && !self . is_documentation ( ) && ! self . is_unspecified ( )
135
138
}
136
139
137
140
/// Returns true if this is a multicast address.
@@ -725,22 +728,22 @@ mod tests {
725
728
}
726
729
727
730
// address unspec loopbk privt linloc global multicast brdcast doc
728
- check ( & [ 0 , 0 , 0 , 0 ] , true , false , false , false , true , false , false , false ) ;
729
- check ( & [ 0 , 0 , 0 , 1 ] , false , false , false , false , true , false , false , false ) ;
730
- check ( & [ 1 , 0 , 0 , 0 ] , false , false , false , false , true , false , false , false ) ;
731
- check ( & [ 10 , 9 , 8 , 7 ] , false , false , true , false , false , false , false , false ) ;
732
- check ( & [ 127 , 1 , 2 , 3 ] , false , true , false , false , false , false , false , false ) ;
733
- check ( & [ 172 , 31 , 254 , 253 ] , false , false , true , false , false , false , false , false ) ;
734
- check ( & [ 169 , 254 , 253 , 242 ] , false , false , false , true , false , false , false , false ) ;
735
- check ( & [ 192 , 0 , 2 , 183 ] , false , false , false , false , false , false , false , true ) ;
736
- check ( & [ 192 , 1 , 2 , 183 ] , false , false , false , false , true , false , false , false ) ;
737
- check ( & [ 192 , 168 , 254 , 253 ] , false , false , true , false , false , false , false , false ) ;
738
- check ( & [ 198 , 51 , 100 , 0 ] , false , false , false , false , false , false , false , true ) ;
739
- check ( & [ 203 , 0 , 113 , 0 ] , false , false , false , false , false , false , false , true ) ;
740
- check ( & [ 203 , 2 , 113 , 0 ] , false , false , false , false , true , false , false , false ) ;
741
- check ( & [ 224 , 0 , 0 , 0 ] , false , false , false , false , true , true , false , false ) ;
742
- check ( & [ 239 , 255 , 255 , 255 ] , false , false , false , false , true , true , false , false ) ;
743
- check ( & [ 255 , 255 , 255 , 255 ] , false , false , false , false , false , false , true , false ) ;
731
+ check ( & [ 0 , 0 , 0 , 0 ] , true , false , false , false , false , false , false , false ) ;
732
+ check ( & [ 0 , 0 , 0 , 1 ] , false , false , false , false , true , false , false , false ) ;
733
+ check ( & [ 1 , 0 , 0 , 0 ] , false , false , false , false , true , false , false , false ) ;
734
+ check ( & [ 10 , 9 , 8 , 7 ] , false , false , true , false , false , false , false , false ) ;
735
+ check ( & [ 127 , 1 , 2 , 3 ] , false , true , false , false , false , false , false , false ) ;
736
+ check ( & [ 172 , 31 , 254 , 253 ] , false , false , true , false , false , false , false , false ) ;
737
+ check ( & [ 169 , 254 , 253 , 242 ] , false , false , false , true , false , false , false , false ) ;
738
+ check ( & [ 192 , 0 , 2 , 183 ] , false , false , false , false , false , false , false , true ) ;
739
+ check ( & [ 192 , 1 , 2 , 183 ] , false , false , false , false , true , false , false , false ) ;
740
+ check ( & [ 192 , 168 , 254 , 253 ] , false , false , true , false , false , false , false , false ) ;
741
+ check ( & [ 198 , 51 , 100 , 0 ] , false , false , false , false , false , false , false , true ) ;
742
+ check ( & [ 203 , 0 , 113 , 0 ] , false , false , false , false , false , false , false , true ) ;
743
+ check ( & [ 203 , 2 , 113 , 0 ] , false , false , false , false , true , false , false , false ) ;
744
+ check ( & [ 224 , 0 , 0 , 0 ] , false , false , false , false , true , true , false , false ) ;
745
+ check ( & [ 239 , 255 , 255 , 255 ] , false , false , false , false , true , true , false , false ) ;
746
+ check ( & [ 255 , 255 , 255 , 255 ] , false , false , false , false , false , false , true , false ) ;
744
747
}
745
748
746
749
#[ test]
0 commit comments