use std::net::{IpAddr, SocketAddr};
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum EcnCodepoint {
#[doc(hidden)]
Ect0 = 0b10,
#[doc(hidden)]
Ect1 = 0b01,
#[doc(hidden)]
Ce = 0b11,
}
impl EcnCodepoint {
pub fn from_bits(x: u8) -> Option<Self> {
use self::EcnCodepoint::*;
Some(match x & 0b11 {
0b10 => Ect0,
0b01 => Ect1,
0b11 => Ce,
_ => {
return None;
}
})
}
}
#[derive(Debug)]
pub struct Transmit {
pub destination: SocketAddr,
pub ecn: Option<EcnCodepoint>,
pub contents: Vec<u8>,
pub segment_size: Option<usize>,
pub src_ip: Option<IpAddr>,
}