usiem/events/
protocol.rs

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        // or, alternatively:
157        // fmt::Debug::fmt(self, f)
158    }
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::TTP,
245        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}