use std::net::{Ipv4Addr, Ipv6Addr};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub struct IPv4 {
pub source_address: Ipv4Addr,
pub source_port: u16,
pub destination_address: Ipv4Addr,
pub destination_port: u16,
}
impl IPv4 {
pub fn new<T: Into<Ipv4Addr>>(
source_address: T,
destination_address: T,
source_port: u16,
destination_port: u16,
) -> Self {
Self {
source_address: source_address.into(),
source_port,
destination_address: destination_address.into(),
destination_port,
}
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub struct IPv6 {
pub source_address: Ipv6Addr,
pub source_port: u16,
pub destination_address: Ipv6Addr,
pub destination_port: u16,
}
impl IPv6 {
pub fn new<T: Into<Ipv6Addr>>(
source_address: T,
destination_address: T,
source_port: u16,
destination_port: u16,
) -> Self {
Self {
source_address: source_address.into(),
source_port,
destination_address: destination_address.into(),
destination_port,
}
}
}