eutils_rs/
net.rs

1use strum_macros::Display;
2
3#[derive(Debug, Display)]
4pub enum ProtocolType {
5    Icmp,
6    Tcp,
7    Udp,
8    Unknown(i32),
9}
10
11impl From<i32> for ProtocolType {
12    fn from(value: i32) -> Self {
13        match value {
14            libc::IPPROTO_ICMP => ProtocolType::Icmp,
15            libc::IPPROTO_TCP => ProtocolType::Tcp,
16            libc::IPPROTO_UDP => ProtocolType::Udp,
17            _ => ProtocolType::Unknown(value),
18        }
19    }
20}
21
22#[derive(Debug, Display)]
23pub enum TcpState {
24    Established,
25    SynSent,
26    SynRecv,
27    FinWait1,
28    FinWait2,
29    TimeWait,
30    Close,
31    CloseWait,
32    LastAck,
33    Listen,
34    Closing,
35    Unknown,
36}
37
38impl From<i32> for TcpState {
39    fn from(value: i32) -> Self {
40        match value {
41            1 => TcpState::Established,
42            2 => TcpState::SynSent,
43            3 => TcpState::SynRecv,
44            4 => TcpState::FinWait1,
45            5 => TcpState::FinWait2,
46            6 => TcpState::TimeWait,
47            7 => TcpState::Close,
48            8 => TcpState::CloseWait,
49            9 => TcpState::LastAck,
50            10 => TcpState::Listen,
51            11 => TcpState::Closing,
52            _ => TcpState::Unknown,
53        }
54    }
55}