From db837d011afee8a868f41c40ab4c3535a1d40b82 Mon Sep 17 00:00:00 2001 From: Abhishek Chanda Date: Mon, 29 Feb 2016 19:35:15 -0800 Subject: Exclude 0.0.0.0 from the list of globally routable addresses --- src/libstd/net/ip.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs index 68075af61cf..89e32619f47 100644 --- a/src/libstd/net/ip.rs +++ b/src/libstd/net/ip.rs @@ -131,7 +131,7 @@ impl Ipv4Addr { /// - test addresses used for documentation (192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24) pub fn is_global(&self) -> bool { !self.is_private() && !self.is_loopback() && !self.is_link_local() && - !self.is_broadcast() && !self.is_documentation() + !self.is_broadcast() && !self.is_documentation() && !self.is_unspecified() } /// Returns true if this is a multicast address. @@ -725,22 +725,22 @@ mod tests { } // address unspec loopbk privt linloc global multicast brdcast doc - check(&[0, 0, 0, 0], true, false, false, false, true, false, false, false); - check(&[0, 0, 0, 1], false, false, false, false, true, false, false, false); - check(&[1, 0, 0, 0], false, false, false, false, true, false, false, false); - check(&[10, 9, 8, 7], false, false, true, false, false, false, false, false); - check(&[127, 1, 2, 3], false, true, false, false, false, false, false, false); - check(&[172, 31, 254, 253], false, false, true, false, false, false, false, false); - check(&[169, 254, 253, 242], false, false, false, true, false, false, false, false); - check(&[192, 0, 2, 183], false, false, false, false, false, false, false, true); - check(&[192, 1, 2, 183], false, false, false, false, true, false, false, false); - check(&[192, 168, 254, 253], false, false, true, false, false, false, false, false); - check(&[198, 51, 100, 0], false, false, false, false, false, false, false, true); - check(&[203, 0, 113, 0], false, false, false, false, false, false, false, true); - check(&[203, 2, 113, 0], false, false, false, false, true, false, false, false); - check(&[224, 0, 0, 0], false, false, false, false, true, true, false, false); - check(&[239, 255, 255, 255], false, false, false, false, true, true, false, false); - check(&[255, 255, 255, 255], false, false, false, false, false, false, true, false); + check(&[0, 0, 0, 0], true, false, false, false, false, false, false, false); + check(&[0, 0, 0, 1], false, false, false, false, true, false, false, false); + check(&[1, 0, 0, 0], false, false, false, false, true, false, false, false); + check(&[10, 9, 8, 7], false, false, true, false, false, false, false, false); + check(&[127, 1, 2, 3], false, true, false, false, false, false, false, false); + check(&[172, 31, 254, 253], false, false, true, false, false, false, false, false); + check(&[169, 254, 253, 242], false, false, false, true, false, false, false, false); + check(&[192, 0, 2, 183], false, false, false, false, false, false, false, true); + check(&[192, 1, 2, 183], false, false, false, false, true, false, false, false); + check(&[192, 168, 254, 253], false, false, true, false, false, false, false, false); + check(&[198, 51, 100, 0], false, false, false, false, false, false, false, true); + check(&[203, 0, 113, 0], false, false, false, false, false, false, false, true); + check(&[203, 2, 113, 0], false, false, false, false, true, false, false, false); + check(&[224, 0, 0, 0], false, false, false, false, true, true, false, false); + check(&[239, 255, 255, 255], false, false, false, false, true, true, false, false); + check(&[255, 255, 255, 255], false, false, false, false, false, false, true, false); } #[test] -- cgit 1.4.1-3-g733a5 From 27b2201c7caae284414d7d49d596ff1519c46763 Mon Sep 17 00:00:00 2001 From: Abhishek Chanda Date: Tue, 1 Mar 2016 10:58:56 -0800 Subject: Reject the reserved block as not global --- src/libstd/net/ip.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs index 89e32619f47..55930e06e0e 100644 --- a/src/libstd/net/ip.rs +++ b/src/libstd/net/ip.rs @@ -121,6 +121,8 @@ impl Ipv4Addr { } /// Returns true if the address appears to be globally routable. + /// See [iana-ipv4-special-registry][ipv4-sr]. + /// [ipv4-sr]: http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml /// /// The following return false: /// @@ -131,7 +133,8 @@ impl Ipv4Addr { /// - test addresses used for documentation (192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24) pub fn is_global(&self) -> bool { !self.is_private() && !self.is_loopback() && !self.is_link_local() && - !self.is_broadcast() && !self.is_documentation() && !self.is_unspecified() + !self.is_broadcast() && !self.is_documentation() && !self.is_unspecified() && + !self.is_this_network() } /// Returns true if this is a multicast address. -- cgit 1.4.1-3-g733a5 From a67fd99460c8ab10b4c4020b5d105535c97638ff Mon Sep 17 00:00:00 2001 From: Abhishek Chanda Date: Tue, 1 Mar 2016 23:42:37 -0800 Subject: Formatting changes to make tidy pass --- src/libstd/net/ip.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs index 55930e06e0e..9c8ff44c704 100644 --- a/src/libstd/net/ip.rs +++ b/src/libstd/net/ip.rs @@ -122,7 +122,7 @@ impl Ipv4Addr { /// Returns true if the address appears to be globally routable. /// See [iana-ipv4-special-registry][ipv4-sr]. - /// [ipv4-sr]: http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml + /// [ipv4-sr]: http://goo.gl/RaZ7lg /// /// The following return false: /// @@ -131,10 +131,10 @@ impl Ipv4Addr { /// - the link-local address (169.254.0.0/16) /// - the broadcast address (255.255.255.255/32) /// - test addresses used for documentation (192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24) + /// - the unspecified address (0.0.0.0) pub fn is_global(&self) -> bool { !self.is_private() && !self.is_loopback() && !self.is_link_local() && - !self.is_broadcast() && !self.is_documentation() && !self.is_unspecified() && - !self.is_this_network() + !self.is_broadcast() && !self.is_documentation() && !self.is_unspecified() } /// Returns true if this is a multicast address. -- cgit 1.4.1-3-g733a5