1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
/// IP Next Level Protocol
#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)]
pub enum IpNextLevelProtocol {
    Hopopt,
    Icmp,
    Igmp,
    Ggp,
    Ipv4,
    St,
    Tcp,
    Cbt,
    Egp,
    Igp,
    BbnRccMon,
    NvpII,
    Pup,
    Argus,
    Emcon,
    Xnet,
    Chaos,
    Udp,
    Mux,
    DcnMeas,
    Hmp,
    Prm,
    XnsIdp,
    Trunk1,
    Trunk2,
    Leaf1,
    Leaf2,
    Rdp,
    Irtp,
    IsoTp4,
    Netblt,
    MfeNsp,
    MeritInp,
    Dccp,
    ThreePc,
    Idpr,
    Xtp,
    Ddp,
    IdprCmtp,
    TpPlusPlus,
    Il,
    Ipv6,
    Sdrp,
    Ipv6Route,
    Ipv6Frag,
    Idrp,
    Rsvp,
    Gre,
    Dsr,
    Bna,
    Esp,
    Ah,
    INlsp,
    Swipe,
    Narp,
    Mobile,
    Tlsp,
    Skip,
    Icmpv6,
    Ipv6NoNxt,
    Ipv6Opts,
    HostInternal,
    Cftp,
    LocalNetwork,
    SatExpak,
    Kryptolan,
    Rvd,
    Ippc,
    Cpnx,
    Cphb,
    Wsn,
    Pvp,
    BrSatMon,
    SunNd,
    WbMon,
    WbExpak,
    IsoIp,
    Vmtp,
    SecureVmtp,
    Vines,
    TtpOrIptm,
    NsfnetIgp,
    Dgp,
    Tcf,
    Eigrp,
    OspfigP,
    SpriteRpc,
    Larp,
    Mtp,
    Ax25,
    IpIp,
    Micp,
    SccSp,
    Etherip,
    Encap,
    PrivEncryption,
    Gmtp,
    Ifmp,
    Pnni,
    Pim,
    Aris,
    Scps,
    Qnx,
    AN,
    IpComp,
    Snp,
    CompaqPeer,
    IpxInIp,
    Vrrp,
    Pgm,
    ZeroHop,
    L2tp,
    Ddx,
    Iatp,
    Stp,
    Srp,
    Uti,
    Smp,
    Ptp,
    IsisOverIpv4,
    Fire,
    Crtp,
    Crudp,
    Sscopmce,
    Iplt,
    Sps,
    Pipe,
    Sctp,
    Fc,
    RsvpE2eIgnore,
    MobilityHeader,
    UdpLite,
    MplsInIp,
    Manet,
    Hip,
    Shim6,
    Wesp,
    Rohc,
    Test1,
    Test2,
    Reserved,
}

impl IpNextLevelProtocol {
    pub fn from_u8(n: u8) -> IpNextLevelProtocol {
        match n {
            0 => IpNextLevelProtocol::Hopopt,
            1 => IpNextLevelProtocol::Icmp,
            2 => IpNextLevelProtocol::Igmp,
            3 => IpNextLevelProtocol::Ggp,
            4 => IpNextLevelProtocol::Ipv4,
            5 => IpNextLevelProtocol::St,
            6 => IpNextLevelProtocol::Tcp,
            7 => IpNextLevelProtocol::Cbt,
            8 => IpNextLevelProtocol::Egp,
            9 => IpNextLevelProtocol::Igp,
            10 => IpNextLevelProtocol::BbnRccMon,
            11 => IpNextLevelProtocol::NvpII,
            12 => IpNextLevelProtocol::Pup,
            13 => IpNextLevelProtocol::Argus,
            14 => IpNextLevelProtocol::Emcon,
            15 => IpNextLevelProtocol::Xnet,
            16 => IpNextLevelProtocol::Chaos,
            17 => IpNextLevelProtocol::Udp,
            18 => IpNextLevelProtocol::Mux,
            19 => IpNextLevelProtocol::DcnMeas,
            20 => IpNextLevelProtocol::Hmp,
            21 => IpNextLevelProtocol::Prm,
            22 => IpNextLevelProtocol::XnsIdp,
            23 => IpNextLevelProtocol::Trunk1,
            24 => IpNextLevelProtocol::Trunk2,
            25 => IpNextLevelProtocol::Leaf1,
            26 => IpNextLevelProtocol::Leaf2,
            27 => IpNextLevelProtocol::Rdp,
            28 => IpNextLevelProtocol::Irtp,
            29 => IpNextLevelProtocol::IsoTp4,
            30 => IpNextLevelProtocol::Netblt,
            31 => IpNextLevelProtocol::MfeNsp,
            32 => IpNextLevelProtocol::MeritInp,
            33 => IpNextLevelProtocol::Dccp,
            34 => IpNextLevelProtocol::ThreePc,
            35 => IpNextLevelProtocol::Idpr,
            36 => IpNextLevelProtocol::Xtp,
            37 => IpNextLevelProtocol::Ddp,
            38 => IpNextLevelProtocol::IdprCmtp,
            39 => IpNextLevelProtocol::TpPlusPlus,
            40 => IpNextLevelProtocol::Il,
            41 => IpNextLevelProtocol::Ipv6,
            42 => IpNextLevelProtocol::Sdrp,
            43 => IpNextLevelProtocol::Ipv6Route,
            44 => IpNextLevelProtocol::Ipv6Frag,
            45 => IpNextLevelProtocol::Idrp,
            46 => IpNextLevelProtocol::Rsvp,
            47 => IpNextLevelProtocol::Gre,
            48 => IpNextLevelProtocol::Dsr,
            49 => IpNextLevelProtocol::Bna,
            50 => IpNextLevelProtocol::Esp,
            51 => IpNextLevelProtocol::Ah,
            52 => IpNextLevelProtocol::INlsp,
            53 => IpNextLevelProtocol::Swipe,
            54 => IpNextLevelProtocol::Narp,
            55 => IpNextLevelProtocol::Mobile,
            56 => IpNextLevelProtocol::Tlsp,
            57 => IpNextLevelProtocol::Skip,
            59 => IpNextLevelProtocol::Icmpv6,
            60 => IpNextLevelProtocol::Ipv6NoNxt,
            61 => IpNextLevelProtocol::Ipv6Opts,
            62 => IpNextLevelProtocol::HostInternal,
            63 => IpNextLevelProtocol::Cftp,
            64 => IpNextLevelProtocol::LocalNetwork,
            65 => IpNextLevelProtocol::SatExpak,
            66 => IpNextLevelProtocol::Kryptolan,
            67 => IpNextLevelProtocol::Rvd,
            68 => IpNextLevelProtocol::Ippc,
            69 => IpNextLevelProtocol::Cpnx,
            70 => IpNextLevelProtocol::Cphb,
            71 => IpNextLevelProtocol::Wsn,
            72 => IpNextLevelProtocol::Pvp,
            73 => IpNextLevelProtocol::BrSatMon,
            74 => IpNextLevelProtocol::SunNd,
            75 => IpNextLevelProtocol::WbMon,
            76 => IpNextLevelProtocol::WbExpak,
            77 => IpNextLevelProtocol::IsoIp,
            78 => IpNextLevelProtocol::Vmtp,
            79 => IpNextLevelProtocol::SecureVmtp,
            80 => IpNextLevelProtocol::Vines,
            81 => IpNextLevelProtocol::TtpOrIptm,
            82 => IpNextLevelProtocol::NsfnetIgp,
            83 => IpNextLevelProtocol::Dgp,
            84 => IpNextLevelProtocol::Tcf,
            85 => IpNextLevelProtocol::Eigrp,
            86 => IpNextLevelProtocol::OspfigP,
            87 => IpNextLevelProtocol::SpriteRpc,
            88 => IpNextLevelProtocol::Larp,
            89 => IpNextLevelProtocol::Mtp,
            90 => IpNextLevelProtocol::Ax25,
            91 => IpNextLevelProtocol::IpIp,
            92 => IpNextLevelProtocol::Micp,
            93 => IpNextLevelProtocol::SccSp,
            94 => IpNextLevelProtocol::Etherip,
            95 => IpNextLevelProtocol::Encap,
            96 => IpNextLevelProtocol::PrivEncryption,
            97 => IpNextLevelProtocol::Gmtp,
            98 => IpNextLevelProtocol::Ifmp,
            99 => IpNextLevelProtocol::Pnni,
            100 => IpNextLevelProtocol::Pim,
            101 => IpNextLevelProtocol::Aris,
            102 => IpNextLevelProtocol::Scps,
            103 => IpNextLevelProtocol::Qnx,
            104 => IpNextLevelProtocol::AN,
            105 => IpNextLevelProtocol::IpComp,
            106 => IpNextLevelProtocol::Snp,
            107 => IpNextLevelProtocol::CompaqPeer,
            108 => IpNextLevelProtocol::IpxInIp,
            109 => IpNextLevelProtocol::Vrrp,
            110 => IpNextLevelProtocol::Pgm,
            111 => IpNextLevelProtocol::ZeroHop,
            112 => IpNextLevelProtocol::L2tp,
            113 => IpNextLevelProtocol::Ddx,
            114 => IpNextLevelProtocol::Iatp,
            115 => IpNextLevelProtocol::Stp,
            116 => IpNextLevelProtocol::Srp,
            117 => IpNextLevelProtocol::Uti,
            118 => IpNextLevelProtocol::Smp,
            119 => IpNextLevelProtocol::Ptp,
            120 => IpNextLevelProtocol::IsisOverIpv4,
            121 => IpNextLevelProtocol::Fire,
            122 => IpNextLevelProtocol::Crtp,
            123 => IpNextLevelProtocol::Crudp,
            124 => IpNextLevelProtocol::Sscopmce,
            125 => IpNextLevelProtocol::Iplt,
            126 => IpNextLevelProtocol::Sps,
            127 => IpNextLevelProtocol::Pipe,
            128 => IpNextLevelProtocol::Sctp,
            129 => IpNextLevelProtocol::Fc,
            130 => IpNextLevelProtocol::RsvpE2eIgnore,
            131 => IpNextLevelProtocol::MobilityHeader,
            132 => IpNextLevelProtocol::UdpLite,
            133 => IpNextLevelProtocol::MplsInIp,
            134 => IpNextLevelProtocol::Manet,
            135 => IpNextLevelProtocol::Hip,
            136 => IpNextLevelProtocol::Shim6,
            137 => IpNextLevelProtocol::Wesp,
            138 => IpNextLevelProtocol::Rohc,
            139 => IpNextLevelProtocol::Test1,
            140 => IpNextLevelProtocol::Test2,
            141 => IpNextLevelProtocol::Reserved,
            _ => IpNextLevelProtocol::Reserved,
        }
    }
    #[allow(dead_code)]
    pub(crate) fn from_pnet_packet_protocol(n: pnet::packet::ip::IpNextHeaderProtocol) -> IpNextLevelProtocol {
        match n {
            pnet::packet::ip::IpNextHeaderProtocols::Hopopt => IpNextLevelProtocol::Hopopt,
            pnet::packet::ip::IpNextHeaderProtocols::Icmp => IpNextLevelProtocol::Icmp,
            pnet::packet::ip::IpNextHeaderProtocols::Igmp => IpNextLevelProtocol::Igmp,
            pnet::packet::ip::IpNextHeaderProtocols::Ggp => IpNextLevelProtocol::Ggp,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv4 => IpNextLevelProtocol::Ipv4,
            pnet::packet::ip::IpNextHeaderProtocols::St => IpNextLevelProtocol::St,
            pnet::packet::ip::IpNextHeaderProtocols::Tcp => IpNextLevelProtocol::Tcp,
            pnet::packet::ip::IpNextHeaderProtocols::Cbt => IpNextLevelProtocol::Cbt,
            pnet::packet::ip::IpNextHeaderProtocols::Egp => IpNextLevelProtocol::Egp,
            pnet::packet::ip::IpNextHeaderProtocols::Igp => IpNextLevelProtocol::Igp,
            pnet::packet::ip::IpNextHeaderProtocols::BbnRccMon => IpNextLevelProtocol::BbnRccMon,
            pnet::packet::ip::IpNextHeaderProtocols::NvpII => IpNextLevelProtocol::NvpII,
            pnet::packet::ip::IpNextHeaderProtocols::Pup => IpNextLevelProtocol::Pup,
            pnet::packet::ip::IpNextHeaderProtocols::Argus => IpNextLevelProtocol::Argus,
            pnet::packet::ip::IpNextHeaderProtocols::Emcon => IpNextLevelProtocol::Emcon,
            pnet::packet::ip::IpNextHeaderProtocols::Xnet => IpNextLevelProtocol::Xnet,
            pnet::packet::ip::IpNextHeaderProtocols::Chaos => IpNextLevelProtocol::Chaos,
            pnet::packet::ip::IpNextHeaderProtocols::Udp => IpNextLevelProtocol::Udp,
            pnet::packet::ip::IpNextHeaderProtocols::Mux => IpNextLevelProtocol::Mux,
            pnet::packet::ip::IpNextHeaderProtocols::DcnMeas => IpNextLevelProtocol::DcnMeas,
            pnet::packet::ip::IpNextHeaderProtocols::Hmp => IpNextLevelProtocol::Hmp,
            pnet::packet::ip::IpNextHeaderProtocols::Prm => IpNextLevelProtocol::Prm,
            pnet::packet::ip::IpNextHeaderProtocols::XnsIdp => IpNextLevelProtocol::XnsIdp,
            pnet::packet::ip::IpNextHeaderProtocols::Trunk1 => IpNextLevelProtocol::Trunk1,
            pnet::packet::ip::IpNextHeaderProtocols::Trunk2 => IpNextLevelProtocol::Trunk2,
            pnet::packet::ip::IpNextHeaderProtocols::Leaf1 => IpNextLevelProtocol::Leaf1,
            pnet::packet::ip::IpNextHeaderProtocols::Leaf2 => IpNextLevelProtocol::Leaf2,
            pnet::packet::ip::IpNextHeaderProtocols::Rdp => IpNextLevelProtocol::Rdp,
            pnet::packet::ip::IpNextHeaderProtocols::Irtp => IpNextLevelProtocol::Irtp,
            pnet::packet::ip::IpNextHeaderProtocols::IsoTp4 => IpNextLevelProtocol::IsoTp4,
            pnet::packet::ip::IpNextHeaderProtocols::Netblt => IpNextLevelProtocol::Netblt,
            pnet::packet::ip::IpNextHeaderProtocols::MfeNsp => IpNextLevelProtocol::MfeNsp,
            pnet::packet::ip::IpNextHeaderProtocols::MeritInp => IpNextLevelProtocol::MeritInp,
            pnet::packet::ip::IpNextHeaderProtocols::Dccp => IpNextLevelProtocol::Dccp,
            pnet::packet::ip::IpNextHeaderProtocols::ThreePc => IpNextLevelProtocol::ThreePc,
            pnet::packet::ip::IpNextHeaderProtocols::Idpr => IpNextLevelProtocol::Idpr,
            pnet::packet::ip::IpNextHeaderProtocols::Xtp => IpNextLevelProtocol::Xtp,
            pnet::packet::ip::IpNextHeaderProtocols::Ddp => IpNextLevelProtocol::Ddp,
            pnet::packet::ip::IpNextHeaderProtocols::IdprCmtp => IpNextLevelProtocol::IdprCmtp,
            pnet::packet::ip::IpNextHeaderProtocols::TpPlusPlus => IpNextLevelProtocol::TpPlusPlus,
            pnet::packet::ip::IpNextHeaderProtocols::Il => IpNextLevelProtocol::Il,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv6 => IpNextLevelProtocol::Ipv6,
            pnet::packet::ip::IpNextHeaderProtocols::Sdrp => IpNextLevelProtocol::Sdrp,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv6Route => IpNextLevelProtocol::Ipv6Route,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv6Frag => IpNextLevelProtocol::Ipv6Frag,
            pnet::packet::ip::IpNextHeaderProtocols::Idrp => IpNextLevelProtocol::Idrp,
            pnet::packet::ip::IpNextHeaderProtocols::Rsvp => IpNextLevelProtocol::Rsvp,
            pnet::packet::ip::IpNextHeaderProtocols::Gre => IpNextLevelProtocol::Gre,
            pnet::packet::ip::IpNextHeaderProtocols::Dsr => IpNextLevelProtocol::Dsr,
            pnet::packet::ip::IpNextHeaderProtocols::Bna => IpNextLevelProtocol::Bna,
            pnet::packet::ip::IpNextHeaderProtocols::Esp => IpNextLevelProtocol::Esp,
            pnet::packet::ip::IpNextHeaderProtocols::Ah => IpNextLevelProtocol::Ah,
            pnet::packet::ip::IpNextHeaderProtocols::INlsp => IpNextLevelProtocol::INlsp,
            pnet::packet::ip::IpNextHeaderProtocols::Swipe => IpNextLevelProtocol::Swipe,
            pnet::packet::ip::IpNextHeaderProtocols::Narp => IpNextLevelProtocol::Narp,
            pnet::packet::ip::IpNextHeaderProtocols::Mobile => IpNextLevelProtocol::Mobile,
            pnet::packet::ip::IpNextHeaderProtocols::Tlsp => IpNextLevelProtocol::Tlsp,
            pnet::packet::ip::IpNextHeaderProtocols::Skip => IpNextLevelProtocol::Skip,
            pnet::packet::ip::IpNextHeaderProtocols::Icmpv6 => IpNextLevelProtocol::Icmpv6,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv6NoNxt => IpNextLevelProtocol::Ipv6NoNxt,
            pnet::packet::ip::IpNextHeaderProtocols::Ipv6Opts => IpNextLevelProtocol::Ipv6Opts,
            pnet::packet::ip::IpNextHeaderProtocols::HostInternal => IpNextLevelProtocol::HostInternal,
            pnet::packet::ip::IpNextHeaderProtocols::Cftp => IpNextLevelProtocol::Cftp,
            pnet::packet::ip::IpNextHeaderProtocols::LocalNetwork => IpNextLevelProtocol::LocalNetwork,
            pnet::packet::ip::IpNextHeaderProtocols::SatExpak => IpNextLevelProtocol::SatExpak,
            pnet::packet::ip::IpNextHeaderProtocols::Kryptolan => IpNextLevelProtocol::Kryptolan,
            pnet::packet::ip::IpNextHeaderProtocols::Rvd => IpNextLevelProtocol::Rvd,
            pnet::packet::ip::IpNextHeaderProtocols::Ippc => IpNextLevelProtocol::Ippc,
            pnet::packet::ip::IpNextHeaderProtocols::Cpnx => IpNextLevelProtocol::Cpnx,
            pnet::packet::ip::IpNextHeaderProtocols::Cphb => IpNextLevelProtocol::Cphb,
            pnet::packet::ip::IpNextHeaderProtocols::Wsn => IpNextLevelProtocol::Wsn,
            pnet::packet::ip::IpNextHeaderProtocols::Pvp => IpNextLevelProtocol::Pvp,
            pnet::packet::ip::IpNextHeaderProtocols::BrSatMon => IpNextLevelProtocol::BrSatMon,
            pnet::packet::ip::IpNextHeaderProtocols::SunNd => IpNextLevelProtocol::SunNd,
            pnet::packet::ip::IpNextHeaderProtocols::WbMon => IpNextLevelProtocol::WbMon,
            pnet::packet::ip::IpNextHeaderProtocols::WbExpak => IpNextLevelProtocol::WbExpak,
            pnet::packet::ip::IpNextHeaderProtocols::IsoIp => IpNextLevelProtocol::IsoIp,
            pnet::packet::ip::IpNextHeaderProtocols::Vmtp => IpNextLevelProtocol::Vmtp,
            pnet::packet::ip::IpNextHeaderProtocols::SecureVmtp => IpNextLevelProtocol::SecureVmtp,
            pnet::packet::ip::IpNextHeaderProtocols::Vines => IpNextLevelProtocol::Vines,
            pnet::packet::ip::IpNextHeaderProtocols::TtpOrIptm => IpNextLevelProtocol::TtpOrIptm,
            pnet::packet::ip::IpNextHeaderProtocols::NsfnetIgp => IpNextLevelProtocol::NsfnetIgp,
            pnet::packet::ip::IpNextHeaderProtocols::Dgp => IpNextLevelProtocol::Dgp,
            pnet::packet::ip::IpNextHeaderProtocols::Tcf => IpNextLevelProtocol::Tcf,
            pnet::packet::ip::IpNextHeaderProtocols::Eigrp => IpNextLevelProtocol::Eigrp,
            pnet::packet::ip::IpNextHeaderProtocols::OspfigP => IpNextLevelProtocol::OspfigP,
            pnet::packet::ip::IpNextHeaderProtocols::SpriteRpc => IpNextLevelProtocol::SpriteRpc,
            pnet::packet::ip::IpNextHeaderProtocols::Larp => IpNextLevelProtocol::Larp,
            pnet::packet::ip::IpNextHeaderProtocols::Mtp => IpNextLevelProtocol::Mtp,
            pnet::packet::ip::IpNextHeaderProtocols::Ax25 => IpNextLevelProtocol::Ax25,
            pnet::packet::ip::IpNextHeaderProtocols::IpIp => IpNextLevelProtocol::IpIp,
            pnet::packet::ip::IpNextHeaderProtocols::Micp => IpNextLevelProtocol::Micp,
            pnet::packet::ip::IpNextHeaderProtocols::SccSp => IpNextLevelProtocol::SccSp,
            pnet::packet::ip::IpNextHeaderProtocols::Etherip => IpNextLevelProtocol::Etherip,
            pnet::packet::ip::IpNextHeaderProtocols::Encap => IpNextLevelProtocol::Encap,
            pnet::packet::ip::IpNextHeaderProtocols::PrivEncryption => IpNextLevelProtocol::PrivEncryption,
            pnet::packet::ip::IpNextHeaderProtocols::Gmtp => IpNextLevelProtocol::Gmtp,
            pnet::packet::ip::IpNextHeaderProtocols::Ifmp => IpNextLevelProtocol::Ifmp,
            pnet::packet::ip::IpNextHeaderProtocols::Pnni => IpNextLevelProtocol::Pnni,
            pnet::packet::ip::IpNextHeaderProtocols::Pim => IpNextLevelProtocol::Pim,
            pnet::packet::ip::IpNextHeaderProtocols::Aris => IpNextLevelProtocol::Aris,
            pnet::packet::ip::IpNextHeaderProtocols::Scps => IpNextLevelProtocol::Scps,
            pnet::packet::ip::IpNextHeaderProtocols::Qnx => IpNextLevelProtocol::Qnx,
            pnet::packet::ip::IpNextHeaderProtocols::AN => IpNextLevelProtocol::AN,
            pnet::packet::ip::IpNextHeaderProtocols::IpComp => IpNextLevelProtocol::IpComp,
            pnet::packet::ip::IpNextHeaderProtocols::Snp => IpNextLevelProtocol::Snp,
            pnet::packet::ip::IpNextHeaderProtocols::CompaqPeer => IpNextLevelProtocol::CompaqPeer,
            pnet::packet::ip::IpNextHeaderProtocols::IpxInIp => IpNextLevelProtocol::IpxInIp,
            pnet::packet::ip::IpNextHeaderProtocols::Vrrp => IpNextLevelProtocol::Vrrp,
            pnet::packet::ip::IpNextHeaderProtocols::Pgm => IpNextLevelProtocol::Pgm,
            pnet::packet::ip::IpNextHeaderProtocols::ZeroHop => IpNextLevelProtocol::ZeroHop,
            pnet::packet::ip::IpNextHeaderProtocols::L2tp => IpNextLevelProtocol::L2tp,
            pnet::packet::ip::IpNextHeaderProtocols::Ddx => IpNextLevelProtocol::Ddx,
            pnet::packet::ip::IpNextHeaderProtocols::Iatp => IpNextLevelProtocol::Iatp,
            pnet::packet::ip::IpNextHeaderProtocols::Stp => IpNextLevelProtocol::Stp,
            pnet::packet::ip::IpNextHeaderProtocols::Srp => IpNextLevelProtocol::Srp,
            pnet::packet::ip::IpNextHeaderProtocols::Uti => IpNextLevelProtocol::Uti,
            pnet::packet::ip::IpNextHeaderProtocols::Smp => IpNextLevelProtocol::Smp,
            pnet::packet::ip::IpNextHeaderProtocols::Ptp => IpNextLevelProtocol::Ptp,
            pnet::packet::ip::IpNextHeaderProtocols::IsisOverIpv4 => IpNextLevelProtocol::IsisOverIpv4,
            pnet::packet::ip::IpNextHeaderProtocols::Fire => IpNextLevelProtocol::Fire,
            pnet::packet::ip::IpNextHeaderProtocols::Crtp => IpNextLevelProtocol::Crtp,
            pnet::packet::ip::IpNextHeaderProtocols::Crudp => IpNextLevelProtocol::Crudp,
            pnet::packet::ip::IpNextHeaderProtocols::Sscopmce => IpNextLevelProtocol::Sscopmce,
            pnet::packet::ip::IpNextHeaderProtocols::Iplt => IpNextLevelProtocol::Iplt,
            pnet::packet::ip::IpNextHeaderProtocols::Sps => IpNextLevelProtocol::Sps,
            pnet::packet::ip::IpNextHeaderProtocols::Pipe => IpNextLevelProtocol::Pipe,
            pnet::packet::ip::IpNextHeaderProtocols::Sctp => IpNextLevelProtocol::Sctp,
            pnet::packet::ip::IpNextHeaderProtocols::Fc => IpNextLevelProtocol::Fc,
            pnet::packet::ip::IpNextHeaderProtocols::RsvpE2eIgnore => IpNextLevelProtocol::RsvpE2eIgnore,
            pnet::packet::ip::IpNextHeaderProtocols::MobilityHeader => IpNextLevelProtocol::MobilityHeader,
            pnet::packet::ip::IpNextHeaderProtocols::UdpLite => IpNextLevelProtocol::UdpLite,
            pnet::packet::ip::IpNextHeaderProtocols::MplsInIp => IpNextLevelProtocol::MplsInIp,
            pnet::packet::ip::IpNextHeaderProtocols::Manet => IpNextLevelProtocol::Manet,
            pnet::packet::ip::IpNextHeaderProtocols::Hip => IpNextLevelProtocol::Hip,
            pnet::packet::ip::IpNextHeaderProtocols::Shim6 => IpNextLevelProtocol::Shim6,
            pnet::packet::ip::IpNextHeaderProtocols::Wesp => IpNextLevelProtocol::Wesp,
            pnet::packet::ip::IpNextHeaderProtocols::Rohc => IpNextLevelProtocol::Rohc,
            pnet::packet::ip::IpNextHeaderProtocols::Test1 => IpNextLevelProtocol::Test1,
            pnet::packet::ip::IpNextHeaderProtocols::Test2 => IpNextLevelProtocol::Test2,
            pnet::packet::ip::IpNextHeaderProtocols::Reserved => IpNextLevelProtocol::Reserved,
            _ => IpNextLevelProtocol::Reserved,
        }
    }

    pub(crate) fn to_socket_protocol(&self) -> socket2::Protocol {
        match *self {
            IpNextLevelProtocol::Tcp => socket2::Protocol::TCP,
            IpNextLevelProtocol::Udp => socket2::Protocol::UDP,
            IpNextLevelProtocol::Icmp => socket2::Protocol::ICMPV4,
            IpNextLevelProtocol::Icmpv6 => socket2::Protocol::ICMPV6,
            _ => socket2::Protocol::TCP,
        }
    }
}