pub struct Bip6Address {
pub ip: Ipv6Addr,
pub port: u16,
}Expand description
A B/IPv6 address: a 16-octet IPv6 address, then a 2-octet UDP port, both most significant octet first (Annex U.1.1.2).
It holds exactly the 18 octets that travel. A SocketAddrV6 also has a
flow label and a scope ID, neither of which a B/IPv6 address carries:
converting from one drops them, and converting to one sets both to zero,
so the receiver of a link-local address picks its scope.
use core::net::Ipv6Addr;
use bacnet_bip_codec::ipv6::Bip6Address;
let address = Bip6Address::new(Ipv6Addr::new(0x2001, 0xDB8, 0, 0, 0, 0, 0, 1), 47808);
let octets = address.to_octets();
assert_eq!(octets[..4], [0x20, 0x01, 0x0D, 0xB8]);
assert_eq!(octets[16..], [0xBA, 0xC0]);
assert_eq!(Bip6Address::from_octets(octets), address);Fields§
§ip: Ipv6AddrThe IPv6 address.
port: u16The UDP port.
Implementations§
Source§impl Bip6Address
impl Bip6Address
Sourcepub const fn to_octets(self) -> [u8; 18]
pub const fn to_octets(self) -> [u8; 18]
The address’s 18 wire octets: the IPv6 address, then the port.
Sourcepub const fn from_octets(octets: [u8; 18]) -> Self
pub const fn from_octets(octets: [u8; 18]) -> Self
The address 18 wire octets hold.
Sourcepub fn from_slice(octets: &[u8]) -> Result<Self, Bvll6Error>
pub fn from_slice(octets: &[u8]) -> Result<Self, Bvll6Error>
The address in octets, which must be exactly 18 octets long.
Trait Implementations§
Source§impl Clone for Bip6Address
impl Clone for Bip6Address
impl Copy for Bip6Address
Source§impl Debug for Bip6Address
impl Debug for Bip6Address
Source§impl Display for Bip6Address
[ip]:port, the notation of RFC 5952 that Annex U.1.1.1.1 uses.
impl Display for Bip6Address
[ip]:port, the notation of RFC 5952 that Annex U.1.1.1.1 uses.
impl Eq for Bip6Address
Source§impl From<Bip6Address> for SocketAddrV6
A socket address with flow label 0 and scope ID 0.
impl From<Bip6Address> for SocketAddrV6
A socket address with flow label 0 and scope ID 0.
Source§fn from(address: Bip6Address) -> Self
fn from(address: Bip6Address) -> Self
Source§impl From<SocketAddrV6> for Bip6Address
Keeps the IPv6 address and port; the flow label and scope ID don’t
travel, so they are dropped.
impl From<SocketAddrV6> for Bip6Address
Keeps the IPv6 address and port; the flow label and scope ID don’t travel, so they are dropped.