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}