1use crate::prelude::types::LogString;
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
5#[serde(tag = "np_type")]
6#[allow(non_camel_case_types)]
7pub enum NetworkProtocol {
8 HOPOPT,
9 ICMP,
10 IGMP,
11 GGP,
12 IPV4,
13 ST,
14 TCP,
15 CBT,
16 EGP,
17 IGP,
18 BBN_RCC_MON,
19 NVP_II,
20 PUP,
21 ARGUS,
22 EMCON,
23 XNET,
24 CHAOS,
25 UDP,
26 MUX,
27 DCN_MEAS,
28 HMP,
29 PRM,
30 XNS_IDP,
31 TRUNK_1,
32 TRUNK_2,
33 LEAF_1,
34 LEAF_2,
35 RDP,
36 IRTP,
37 ISO_TP4,
38 NETBLT,
39 MFE_NSP,
40 MERIT_INP,
41 DCCP,
42 ThirdPC,
43 IDPR,
44 XTP,
45 DDP,
46 IDPR_CMTP,
47 TPpp,
48 IL,
49 IPV6,
50 SDRP,
51 IPV6_ROUTE,
52 IPV6_FRAG,
53 IDRP,
54 RSVP,
55 GRE,
56 DSR,
57 BNA,
58 ESP,
59 AH,
60 I_NLSP,
61 SWIPE,
62 NARP,
63 MOBILE,
64 TLSP,
65 SKIP,
66 IPV6_ICMP,
67 IPV6_NONXT,
68 IPV6_OPTS,
69 CFTP,
70 SAT_EXPAK,
71 KRYPTOLAN,
72 RVD,
73 IPPC,
74 SAT_MON,
75 VISA,
76 IPCV,
77 CPNX,
78 CPHB,
79 WSN,
80 PVP,
81 BR_SAT_MON,
82 SUN_ND,
83 WB_MON,
84 WB_EXPAK,
85 ISO_IP,
86 VMTP,
87 SECURE_VMTP,
88 VINES,
89 TTP,
90 IPTM,
91 NSFNET_IGP,
92 DGP,
93 TCF,
94 EIGRP,
95 OSPFIGP,
96 SPRITE_RPC,
97 LARP,
98 MTP,
99 AX_25,
100 IPIP,
101 MICP,
102 SCC_SP,
103 ETHERIP,
104 ENCAP,
105 GMTP,
106 IFMP,
107 PNNI,
108 PIM,
109 ARIS,
110 SCPS,
111 QNX,
112 A_N,
113 IPCOMP,
114 SNP,
115 COMPAQ_PEER,
116 IPX_IN_IP,
117 VRRP,
118 PGM,
119 L2TP,
120 DDX,
121 IATP,
122 STP,
123 SRP,
124 UTI,
125 SMP,
126 SM,
127 PTP,
128 ISIS,
129 FIRE,
130 CRTP,
131 CRUDP,
132 SSCOPMCE,
133 IPLT,
134 SPS,
135 PIPE,
136 SCTP,
137 FC,
138 RSVP_E2E_IGNORE,
139 MOBILITY,
140 UDPLITE,
141 MPLS_IN_IP,
142 MANET,
143 HIP,
144 SHIM6,
145 WESP,
146 ROHC,
147 ETHERNET,
148 USE,
149 RESERVED,
150 OTHER(LogString),
151 UNKNOWN,
152}
153impl std::fmt::Display for NetworkProtocol {
154 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
155 write!(f, "{:?}", self)
156 }
159}
160
161pub fn parse_protocol_id(id: u16) -> NetworkProtocol {
162 match id {
163 0 => NetworkProtocol::HOPOPT,
164 1 => NetworkProtocol::ICMP,
165 2 => NetworkProtocol::IGMP,
166 3 => NetworkProtocol::GGP,
167 4 => NetworkProtocol::IPV4,
168 5 => NetworkProtocol::ST,
169 6 => NetworkProtocol::TCP,
170 7 => NetworkProtocol::CBT,
171 8 => NetworkProtocol::EGP,
172 9 => NetworkProtocol::IGP,
173 10 => NetworkProtocol::BBN_RCC_MON,
174 11 => NetworkProtocol::NVP_II,
175 12 => NetworkProtocol::PUP,
176 13 => NetworkProtocol::ARGUS,
177 14 => NetworkProtocol::EMCON,
178 15 => NetworkProtocol::XNET,
179 16 => NetworkProtocol::CHAOS,
180 17 => NetworkProtocol::UDP,
181 18 => NetworkProtocol::MUX,
182 19 => NetworkProtocol::DCN_MEAS,
183 20 => NetworkProtocol::HMP,
184 21 => NetworkProtocol::PRM,
185 22 => NetworkProtocol::XNS_IDP,
186 23 => NetworkProtocol::TRUNK_1,
187 24 => NetworkProtocol::TRUNK_2,
188 25 => NetworkProtocol::LEAF_1,
189 26 => NetworkProtocol::LEAF_2,
190 27 => NetworkProtocol::RDP,
191 28 => NetworkProtocol::IRTP,
192 29 => NetworkProtocol::ISO_TP4,
193 30 => NetworkProtocol::NETBLT,
194 31 => NetworkProtocol::MFE_NSP,
195 32 => NetworkProtocol::MERIT_INP,
196 33 => NetworkProtocol::DCCP,
197 34 => NetworkProtocol::ThirdPC,
198 35 => NetworkProtocol::IDPR,
199 36 => NetworkProtocol::XTP,
200 37 => NetworkProtocol::DDP,
201 38 => NetworkProtocol::IDPR_CMTP,
202 39 => NetworkProtocol::TPpp,
203 40 => NetworkProtocol::IL,
204 41 => NetworkProtocol::IPV6,
205 42 => NetworkProtocol::SDRP,
206 43 => NetworkProtocol::IPV6_ROUTE,
207 44 => NetworkProtocol::IPV6_FRAG,
208 45 => NetworkProtocol::IDRP,
209 46 => NetworkProtocol::RSVP,
210 47 => NetworkProtocol::GRE,
211 48 => NetworkProtocol::DSR,
212 49 => NetworkProtocol::BNA,
213 50 => NetworkProtocol::ESP,
214 51 => NetworkProtocol::AH,
215 52 => NetworkProtocol::I_NLSP,
216 53 => NetworkProtocol::SWIPE,
217 54 => NetworkProtocol::NARP,
218 55 => NetworkProtocol::MOBILE,
219 56 => NetworkProtocol::TLSP,
220 57 => NetworkProtocol::SKIP,
221 58 => NetworkProtocol::IPV6_ICMP,
222 59 => NetworkProtocol::IPV6_NONXT,
223 60 => NetworkProtocol::IPV6_OPTS,
224 62 => NetworkProtocol::CFTP,
225 64 => NetworkProtocol::SAT_EXPAK,
226 65 => NetworkProtocol::KRYPTOLAN,
227 66 => NetworkProtocol::RVD,
228 67 => NetworkProtocol::IPPC,
229 69 => NetworkProtocol::SAT_MON,
230 70 => NetworkProtocol::VISA,
231 71 => NetworkProtocol::IPCV,
232 72 => NetworkProtocol::CPNX,
233 73 => NetworkProtocol::CPHB,
234 74 => NetworkProtocol::WSN,
235 75 => NetworkProtocol::PVP,
236 76 => NetworkProtocol::BR_SAT_MON,
237 77 => NetworkProtocol::SUN_ND,
238 78 => NetworkProtocol::WB_MON,
239 79 => NetworkProtocol::WB_EXPAK,
240 80 => NetworkProtocol::ISO_IP,
241 81 => NetworkProtocol::VMTP,
242 82 => NetworkProtocol::SECURE_VMTP,
243 83 => NetworkProtocol::VINES,
244 84 => NetworkProtocol::IPTM,
246 85 => NetworkProtocol::NSFNET_IGP,
247 86 => NetworkProtocol::DGP,
248 87 => NetworkProtocol::TCF,
249 88 => NetworkProtocol::EIGRP,
250 89 => NetworkProtocol::OSPFIGP,
251 90 => NetworkProtocol::SPRITE_RPC,
252 91 => NetworkProtocol::LARP,
253 92 => NetworkProtocol::MTP,
254 93 => NetworkProtocol::AX_25,
255 94 => NetworkProtocol::IPIP,
256 95 => NetworkProtocol::MICP,
257 96 => NetworkProtocol::SCC_SP,
258 97 => NetworkProtocol::ETHERIP,
259 98 => NetworkProtocol::ENCAP,
260 100 => NetworkProtocol::GMTP,
261 101 => NetworkProtocol::IFMP,
262 102 => NetworkProtocol::PNNI,
263 103 => NetworkProtocol::PIM,
264 104 => NetworkProtocol::ARIS,
265 105 => NetworkProtocol::SCPS,
266 106 => NetworkProtocol::QNX,
267 107 => NetworkProtocol::A_N,
268 108 => NetworkProtocol::IPCOMP,
269 109 => NetworkProtocol::SNP,
270 110 => NetworkProtocol::COMPAQ_PEER,
271 111 => NetworkProtocol::IPX_IN_IP,
272 112 => NetworkProtocol::VRRP,
273 113 => NetworkProtocol::PGM,
274 115 => NetworkProtocol::L2TP,
275 116 => NetworkProtocol::DDX,
276 117 => NetworkProtocol::IATP,
277 118 => NetworkProtocol::STP,
278 119 => NetworkProtocol::SRP,
279 120 => NetworkProtocol::UTI,
280 121 => NetworkProtocol::SMP,
281 122 => NetworkProtocol::SM,
282 123 => NetworkProtocol::PTP,
283 124 => NetworkProtocol::ISIS,
284 125 => NetworkProtocol::FIRE,
285 126 => NetworkProtocol::CRTP,
286 127 => NetworkProtocol::CRUDP,
287 128 => NetworkProtocol::SSCOPMCE,
288 129 => NetworkProtocol::IPLT,
289 130 => NetworkProtocol::SPS,
290 131 => NetworkProtocol::PIPE,
291 132 => NetworkProtocol::SCTP,
292 133 => NetworkProtocol::FC,
293 134 => NetworkProtocol::RSVP_E2E_IGNORE,
294 135 => NetworkProtocol::MOBILITY,
295 136 => NetworkProtocol::UDPLITE,
296 137 => NetworkProtocol::MPLS_IN_IP,
297 138 => NetworkProtocol::MANET,
298 139 => NetworkProtocol::HIP,
299 140 => NetworkProtocol::SHIM6,
300 141 => NetworkProtocol::WESP,
301 142 => NetworkProtocol::ROHC,
302 143 => NetworkProtocol::ETHERNET,
303 253 => NetworkProtocol::USE,
304 254 => NetworkProtocol::USE,
305 255 => NetworkProtocol::RESERVED,
306 _ => NetworkProtocol::UNKNOWN,
307 }
308}