Struct ip_network::Ipv6Network [−][src]
pub struct Ipv6Network { /* fields omitted */ }
IPv6 Network.
Implementations
impl Ipv6Network
[src]
impl Ipv6Network
[src]pub const LENGTH: u8
[src]
IPv4 address length in bits.
pub fn new(
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
[src]
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
Constructs new Ipv6Network
based on Ipv6Addr
and netmask
.
Returns error if netmask is bigger than 128 or if host bits are set in network_address
.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.network_address(), ip); assert_eq!(ip_network.netmask(), 32);
pub fn new_truncate(
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
[src]
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
Constructs new Ipv6Network
based on Ipv6Addr
and netmask
with truncating host bits
from given network_address
.
Returns error if netmask is bigger than 128.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 1, 0, 0); let ip_network = Ipv6Network::new_truncate(ip, 32)?; assert_eq!(ip_network.network_address(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)); assert_eq!(ip_network.netmask(), 32);
pub fn network_address(&self) -> Ipv6Addr
[src]
Returns network IP address (first address in range).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.network_address(), ip);
pub fn netmask(&self) -> u8
[src]
Returns network mask.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.netmask(), 32);
pub fn contains(&self, ip: Ipv6Addr) -> bool
[src]
Returns true
if given IPv6Addr
is inside this network.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 64)?; assert!(ip_network.contains(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1))); assert!(!ip_network.contains(Ipv6Addr::new(0x2001, 0xdb9, 0, 0, 0, 0, 0, 0)));
pub fn supernet(&self) -> Option<Self>
[src]
Returns network with smaller netmask by one. If netmask is already zero, None
will be returned.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; assert_eq!(network.supernet(), Some(Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 31)?));
pub fn subnets(&self) -> Ipv6NetworkIteratorⓘNotable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
[src]
Notable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
Returns Ipv6NetworkIterator
over networks with netmask bigger one.
If netmask is already 128, empty iterator will be returned.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; let mut iterator = ip_network.subnets(); assert_eq!(iterator.next().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 33)?); assert_eq!(iterator.last().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0x8000, 0, 0, 0, 0, 0), 33)?);
pub fn subnets_with_prefix(&self, prefix: u8) -> Ipv6NetworkIteratorⓘNotable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
[src]
Notable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
Returns Ipv6NetworkIterator
over networks with defined netmask. Because len()
method
returns usize
and number of networks can be bigger than usize
, you can use real_len()
method
to get exact number of networks.
Panics
This method panics when prefix is bigger than 128 or when prefix is lower or equal than netmask.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; let mut iterator = network.subnets_with_prefix(33); assert_eq!(2, iterator.real_len()); assert_eq!(iterator.next().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 33)?); assert_eq!(iterator.last().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0x8000, 0, 0, 0, 0, 0), 33)?);
pub fn is_default_route(&self) -> bool
[src]
Returns true
for the default route network (::/0), that contains all IPv6 addresses.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 0)?.is_default_route());
pub fn is_unspecified(&self) -> bool
[src]
Returns true
for the special ‘unspecified’ network (::/128).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unspecified()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 128)?.is_unspecified());
pub fn is_loopback(&self) -> bool
[src]
Returns true
if this is a loopback network (::1/128).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1), 128)?.is_loopback()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_loopback());
pub fn is_global(&self) -> bool
[src]
Returns true
if the address appears to be globally routable.
The following return false
:
- the loopback network
- link-local, site-local, and unique local unicast networks
- interface-, link-, realm-, admin- and site-local multicast networks
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_global()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1), 128)?.is_global()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1), 128)?.is_global());
pub fn is_unique_local(&self) -> bool
[src]
Returns true
if this is a part of unique local network (fc00::/7).
This property is defined in IETF RFC 4193.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unique_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unique_local());
pub fn is_unicast_link_local(&self) -> bool
[src]
Returns true
if the network is part of unicast and link-local (fe80::/10).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfe8a, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unicast_link_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_link_local());
pub fn is_unicast_site_local(&self) -> bool
[src]
Returns true
if this is a deprecated unicast site-local network (fec0::/10).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfec2, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unicast_site_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_site_local());
pub fn is_documentation(&self) -> bool
[src]
Returns true
if this is a part of network reserved for documentation (2001:db8::/32).
This property is defined in IETF RFC 3849.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?.is_documentation()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_documentation());
pub fn is_unicast_global(&self) -> bool
[src]
Returns true
if the network is a globally routable unicast network.
The following return false
:
- the loopback network
- the link-local network
- the (deprecated) site-local network
- unique local network
- the unspecified network
- the network range reserved for documentation
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(!Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?.is_unicast_global()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_global());
pub fn is_multicast(&self) -> bool
[src]
Returns true
if this is a part of multicast network (ff00::/8).
This property is defined by IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0), 8)?.is_multicast()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_multicast());
pub fn multicast_scope(&self) -> Option<Ipv6MulticastScope>
[src]
Returns the network’s multicast scope if the network is multicast.
These scopes are defined in IETF RFC 7346.
Examples
use std::net::Ipv6Addr; use ip_network::{Ipv6Network, Ipv6MulticastScope}; assert_eq!(Ipv6Network::new(Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0), 32)?.multicast_scope(), Some(Ipv6MulticastScope::Global)); assert_eq!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.multicast_scope(), None);
Trait Implementations
impl Clone for Ipv6Network
[src]
impl Clone for Ipv6Network
[src]fn clone(&self) -> Ipv6Network
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Display for Ipv6Network
[src]
impl Display for Ipv6Network
[src]fn fmt(&self, f: &mut Formatter<'_>) -> Result
[src]
Converts Ipv6Network
to string in format X:X::X/Y (CIDR notation).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; assert_eq!(ip_network.to_string(), "2001:db8::/32");
impl From<Ipv6Addr> for Ipv6Network
[src]
impl From<Ipv6Addr> for Ipv6Network
[src]impl From<Ipv6Network> for IpNetwork
[src]
impl From<Ipv6Network> for IpNetwork
[src]fn from(network: Ipv6Network) -> Self
[src]
impl FromStr for Ipv6Network
[src]
impl FromStr for Ipv6Network
[src]type Err = IpNetworkParseError
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<Ipv6Network, IpNetworkParseError>
[src]
Converts string in format X:X::X/Y (CIDR notation) to Ipv6Network
.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; use std::str::FromStr; let ip_network = Ipv6Network::from_str("2001:db8::/32")?; assert_eq!(ip_network.network_address(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)); assert_eq!(ip_network.netmask(), 32);
impl Hash for Ipv6Network
[src]
impl Hash for Ipv6Network
[src]impl Ord for Ipv6Network
[src]
impl Ord for Ipv6Network
[src]impl PartialEq<IpNetwork> for Ipv6Network
[src]
impl PartialEq<IpNetwork> for Ipv6Network
[src]impl PartialEq<Ipv6Network> for IpNetwork
[src]
impl PartialEq<Ipv6Network> for IpNetwork
[src]impl PartialEq<Ipv6Network> for Ipv6Network
[src]
impl PartialEq<Ipv6Network> for Ipv6Network
[src]impl PartialOrd<IpNetwork> for Ipv6Network
[src]
impl PartialOrd<IpNetwork> for Ipv6Network
[src]impl PartialOrd<Ipv6Network> for IpNetwork
[src]
impl PartialOrd<Ipv6Network> for IpNetwork
[src]impl PartialOrd<Ipv6Network> for Ipv6Network
[src]
impl PartialOrd<Ipv6Network> for Ipv6Network
[src]