Expand description
The source and destination of a header. Includes IP (v4 or v6) addresses and TCP ports.
Examples
Worst Case
use ppp::v1::{Addresses, Header, UNKNOWN};
let header = "PROXY UNKNOWN ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 65535 65535\r\n";
let addresses = Addresses::Unknown;
assert_eq!(addresses, header.parse().unwrap());
assert_ne!(addresses.to_string().as_str(), header);
UNKNOWN
use ppp::v1::Addresses;
let header = "PROXY UNKNOWN\r\n";
let addresses = Addresses::Unknown;
assert_eq!(addresses, header.parse().unwrap());
assert_eq!(addresses.to_string().as_str(), header);
TCP4
use std::net::Ipv4Addr;
use ppp::v1::Addresses;
let header = "PROXY TCP4 127.0.1.2 192.168.1.101 80 443\r\n";
let addresses = Addresses::new_tcp4(Ipv4Addr::new(127, 0, 1, 2), Ipv4Addr::new(192, 168, 1, 101), 80, 443);
assert_eq!(addresses, header.parse().unwrap());
assert_eq!(addresses.to_string().as_str(), header);
TCP6
use std::net::Ipv6Addr;
use ppp::v1::Addresses;
let header = "PROXY TCP6 1234:5678:90ab:cdef:fedc:ba09:8765:4321 4321:8765:ba09:fedc:cdef:90ab:5678:1234 443 65535\r\n";
let addresses = Addresses::new_tcp6(
Ipv6Addr::from([0x1234, 0x5678, 0x90AB, 0xCDEF, 0xFEDC, 0xBA09, 0x8765, 0x4321]),
Ipv6Addr::from([0x4321, 0x8765, 0xBA09, 0xFEDC, 0xCDEF, 0x90AB, 0x5678, 0x01234,]),
443,
65535
);
assert_eq!(addresses, header.parse().unwrap());
assert_eq!(addresses.to_string().as_str(), header);
Invalid
use ppp::v1::{Addresses, ParseError};
assert_eq!(Err(ParseError::InvalidProtocol), "PROXY tcp4\r\n".parse::<Addresses>());
Variants
Unknown
Tcp4(IPv4)
Tcp6(IPv6)
Implementations
sourceimpl Addresses
impl Addresses
sourcepub fn new_tcp4<T: Into<Ipv4Addr>>(
source_address: T,
destination_address: T,
source_port: u16,
destination_port: u16
) -> Self
pub fn new_tcp4<T: Into<Ipv4Addr>>(
source_address: T,
destination_address: T,
source_port: u16,
destination_port: u16
) -> Self
Create a new IPv4 TCP address.
Trait Implementations
sourceimpl From<(SocketAddr, SocketAddr)> for Addresses
impl From<(SocketAddr, SocketAddr)> for Addresses
sourcefn from(addresses: (SocketAddr, SocketAddr)) -> Self
fn from(addresses: (SocketAddr, SocketAddr)) -> Self
Converts to this type from the input type.
impl Copy for Addresses
impl StructuralPartialEq for Addresses
Auto Trait Implementations
impl RefUnwindSafe for Addresses
impl Send for Addresses
impl Sync for Addresses
impl Unpin for Addresses
impl UnwindSafe for Addresses
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more