std::net: add Ipv4Addr::is_reserved()
This commit is contained in:
@@ -532,6 +532,34 @@ impl Ipv4Addr {
|
|||||||
!self.is_broadcast() && !self.is_documentation() && !self.is_unspecified()
|
!self.is_broadcast() && !self.is_documentation() && !self.is_unspecified()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns [`true`] if this address is reserved by IANA for future use. [IETF RFC 1112]
|
||||||
|
/// defines the block of reserved addresses as `240.0.0.0/4`. This range normally includes the
|
||||||
|
/// broadcast address `255.255.255.255`, but this implementation explicitely excludes it, since
|
||||||
|
/// it is obviously not reserved for future use.
|
||||||
|
///
|
||||||
|
/// [IETF RFC 1112]: https://tools.ietf.org/html/rfc1112
|
||||||
|
/// [`true`]: ../../std/primitive.bool.html
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// #![feature(ip)]
|
||||||
|
/// use std::net::Ipv4Addr;
|
||||||
|
///
|
||||||
|
/// fn main() {
|
||||||
|
/// assert_eq!(Ipv4Addr::new(240, 0, 0, 0).is_reserved(), true);
|
||||||
|
/// assert_eq!(Ipv4Addr::new(255, 255, 255, 254).is_reserved(), true);
|
||||||
|
///
|
||||||
|
/// assert_eq!(Ipv4Addr::new(239, 255, 255, 255).is_reserved(), false);
|
||||||
|
/// // The broadcast address is not considered as reserved for future use by this
|
||||||
|
/// // implementation
|
||||||
|
/// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_reserved(), false);
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
pub fn is_reserved(&self) -> bool {
|
||||||
|
self.octets()[0] & 240 == 240 && !self.is_broadcast()
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns [`true`] if this is a multicast address (224.0.0.0/4).
|
/// Returns [`true`] if this is a multicast address (224.0.0.0/4).
|
||||||
///
|
///
|
||||||
/// Multicast addresses have a most significant octet between 224 and 239,
|
/// Multicast addresses have a most significant octet between 224 and 239,
|
||||||
|
|||||||
Reference in New Issue
Block a user