pub struct Ipv6Network { /* private fields */ }
Expand description
Represents a network range where the IP addresses are of v6
Implementations§
Source§impl Ipv6Network
impl Ipv6Network
Sourcepub const fn new(
addr: Ipv6Addr,
prefix: u8,
) -> Result<Ipv6Network, IpNetworkError>
pub const fn new( addr: Ipv6Addr, prefix: u8, ) -> Result<Ipv6Network, IpNetworkError>
Constructs a new Ipv6Network
from any Ipv6Addr
and a prefix denoting the network size.
If the prefix is larger than 128 this will return an IpNetworkError::InvalidPrefix
.
Sourcepub fn with_netmask(
netaddr: Ipv6Addr,
netmask: Ipv6Addr,
) -> Result<Self, IpNetworkError>
pub fn with_netmask( netaddr: Ipv6Addr, netmask: Ipv6Addr, ) -> Result<Self, IpNetworkError>
Constructs a new Ipv6Network
from a network address and a network mask.
If the netmask is not valid this will return an IpNetworkError::InvalidPrefix
.
Sourcepub fn iter(&self) -> Ipv6NetworkIterator ⓘ
pub fn iter(&self) -> Ipv6NetworkIterator ⓘ
Returns an iterator over Ipv6Network
. Each call to next
will return the next
Ipv6Addr
in the given network. None
will be returned when there are no more
addresses.
Sourcepub fn network(&self) -> Ipv6Addr
pub fn network(&self) -> Ipv6Addr
Returns the address of the network denoted by this Ipv6Network
.
This means the lowest possible IPv6 address inside of the network.
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "2001:db8::/96".parse().unwrap();
assert_eq!(net.network(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0));
Sourcepub fn broadcast(&self) -> Ipv6Addr
pub fn broadcast(&self) -> Ipv6Addr
Returns the broadcast address of this Ipv6Network
.
This means the highest possible IPv4 address inside of the network.
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "2001:db8::/96".parse().unwrap();
assert_eq!(net.broadcast(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0xffff, 0xffff));
pub fn ip(&self) -> Ipv6Addr
pub fn prefix(&self) -> u8
Sourcepub fn is_subnet_of(self, other: Ipv6Network) -> bool
pub fn is_subnet_of(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is a subnet of the other.
Sourcepub fn is_supernet_of(self, other: Ipv6Network) -> bool
pub fn is_supernet_of(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is a supernet of the other.
Sourcepub fn overlaps(self, other: Ipv6Network) -> bool
pub fn overlaps(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is partly contained in other.
Sourcepub fn mask(&self) -> Ipv6Addr
pub fn mask(&self) -> Ipv6Addr
Returns the mask for this Ipv6Network
.
That means the prefix
most significant bits will be 1 and the rest 0
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0".parse().unwrap();
assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff));
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0));
Sourcepub fn contains(&self, ip: Ipv6Addr) -> bool
pub fn contains(&self, ip: Ipv6Addr) -> bool
Checks if a given Ipv6Addr
is in this Ipv6Network
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert!(net.contains(Ipv6Addr::new(0xff01, 0, 0, 0, 0, 0, 0, 0x1)));
assert!(!net.contains(Ipv6Addr::new(0xffff, 0, 0, 0, 0, 0, 0, 0x1)));
Sourcepub fn size(&self) -> u128
pub fn size(&self) -> u128
Returns number of possible host addresses in this Ipv6Network
.
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert_eq!(net.size(), 79228162514264337593543950336);
let tinynet: Ipv6Network = "ff01::0/128".parse().unwrap();
assert_eq!(tinynet.size(), 1);
Trait Implementations§
Source§impl Clone for Ipv6Network
impl Clone for Ipv6Network
Source§fn clone(&self) -> Ipv6Network
fn clone(&self) -> Ipv6Network
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Ipv6Network
impl Debug for Ipv6Network
Source§impl<'de> Deserialize<'de> for Ipv6Network
impl<'de> Deserialize<'de> for Ipv6Network
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl Display for Ipv6Network
impl Display for Ipv6Network
Source§impl From<Ipv6Addr> for Ipv6Network
impl From<Ipv6Addr> for Ipv6Network
Source§fn from(a: Ipv6Addr) -> Ipv6Network
fn from(a: Ipv6Addr) -> Ipv6Network
Source§impl From<Ipv6Network> for IpNetwork
impl From<Ipv6Network> for IpNetwork
Source§fn from(v6: Ipv6Network) -> IpNetwork
fn from(v6: Ipv6Network) -> IpNetwork
Source§impl FromStr for Ipv6Network
impl FromStr for Ipv6Network
Creates an Ipv6Network
from parsing a string in CIDR notation.
§Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let new = Ipv6Network::new(Ipv6Addr::new(0xff01, 0, 0, 0x17, 0, 0, 0, 0x2), 65).unwrap();
let from_cidr: Ipv6Network = "FF01:0:0:17:0:0:0:2/65".parse().unwrap();
assert_eq!(new.ip(), from_cidr.ip());
assert_eq!(new.prefix(), from_cidr.prefix());