pub enum Addresses {
Unknown,
Tcp4(IPv4),
Tcp6(IPv6),
}
Expand description
The source and destination of a header. Includes IP (v4 or v6) addresses and TCP ports.
§Examples
§Worst Case
use rama_haproxy::protocol::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 rama_haproxy::protocol::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 rama_haproxy::protocol::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 rama_haproxy::protocol::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 rama_haproxy::protocol::v1::{Addresses, ParseError};
assert_eq!(Err(ParseError::InvalidProtocol), "PROXY tcp4\r\n".parse::<Addresses>());
Variants§
Unknown
The source and destination addresses of the header are unknown.
Tcp4(IPv4)
The source and destination addresses of the header are IPv4.
Tcp6(IPv6)
The source and destination addresses of the header are IPv6.
Implementations§
Source§impl 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§
Source§impl From<(SocketAddr, SocketAddr)> for Addresses
impl From<(SocketAddr, SocketAddr)> for Addresses
Source§fn from(addresses: (SocketAddr, SocketAddr)) -> Self
fn from(addresses: (SocketAddr, SocketAddr)) -> Self
Converts to this type from the input type.
impl Copy for Addresses
impl Eq for Addresses
impl StructuralPartialEq for Addresses
Auto Trait Implementations§
impl Freeze for Addresses
impl RefUnwindSafe for Addresses
impl Send for Addresses
impl Sync for Addresses
impl Unpin for Addresses
impl UnwindSafe for Addresses
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more