std::net: add Ipv4Addr::is_benchmarking()
This commit is contained in:
parent
8f679977e0
commit
de3cf0d5eb
1 changed files with 25 additions and 0 deletions
|
|
@ -532,6 +532,31 @@ impl Ipv4Addr {
|
|||
!self.is_broadcast() && !self.is_documentation() && !self.is_unspecified()
|
||||
}
|
||||
|
||||
/// Returns [`true`] if this address part of the `198.18.0.0/15` range, which is reserved for
|
||||
/// network devices benchmarking. This range is defined in [IETF RFC 2544] as `192.18.0.0`
|
||||
/// through `198.19.255.255` but [errata 423] corrects it to `198.18.0.0/15`.
|
||||
///
|
||||
/// [IETF RFC 1112]: https://tools.ietf.org/html/rfc1112
|
||||
/// [errate 423]: https://www.rfc-editor.org/errata/eid423
|
||||
/// [`true`]: ../../std/primitive.bool.html
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ip)]
|
||||
/// use std::net::Ipv4Addr;
|
||||
///
|
||||
/// fn main() {
|
||||
/// assert_eq!(Ipv4Addr::new(198, 17, 255, 255).is_benchmarking(), false);
|
||||
/// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_benchmarking(), true);
|
||||
/// assert_eq!(Ipv4Addr::new(198, 19, 255, 255).is_benchmarking(), true);
|
||||
/// assert_eq!(Ipv4Addr::new(198, 20, 0, 0).is_benchmarking(), false);
|
||||
/// }
|
||||
/// ```
|
||||
pub fn is_benchmarking(&self) -> bool {
|
||||
self.octets()[0] == 198 && (self.octets()[1] & 0xfe) == 18
|
||||
}
|
||||
|
||||
/// 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue