1pub const HOPOPT: u8 = 0;
8
9pub const ICMP: u8 = 1;
11
12pub const IGMP: u8 = 2;
14
15pub const GGP: u8 = 3;
17
18pub const IPIP: u8 = 4;
20
21pub const IPV4: u8 = 4;
23
24pub const ST: u8 = 5;
26
27pub const TCP: u8 = 6;
29
30pub const CBT: u8 = 7;
32
33pub const EGP: u8 = 8;
35
36pub const IGP: u8 = 9;
38
39pub const BBN_RCC_MON: u8 = 10;
41
42pub const NVP_II: u8 = 11;
44
45pub const PUP: u8 = 12;
47
48pub const ARGUS: u8 = 13;
50
51pub const EMCON: u8 = 14;
53
54pub const XNET: u8 = 15;
56
57pub const CHAOS: u8 = 16;
59
60pub const UDP: u8 = 17;
62
63pub const MUX: u8 = 18;
65
66pub const DCN_MEAS: u8 = 19;
68
69pub const HMP: u8 = 20;
71
72pub const PRM: u8 = 21;
74
75pub const XNS_IDP: u8 = 22;
77
78pub const TRUNK_1: u8 = 23;
80
81pub const TRUNK_2: u8 = 24;
83
84pub const LEAF_1: u8 = 25;
86
87pub const LEAF_2: u8 = 26;
89
90pub const RDP: u8 = 27;
92
93pub const IRTP: u8 = 28;
95
96pub const ISO_TP4: u8 = 29;
98
99pub const NETBLT: u8 = 30;
101
102pub const MFE_NSP: u8 = 31;
104
105pub const MERIT_INP: u8 = 32;
107
108pub const DCCP: u8 = 33;
110
111pub const THIRD_PARTY_CONNECT: u8 = 34;
113
114pub const IDPR: u8 = 35;
116
117pub const XTP: u8 = 36;
119
120pub const DDP: u8 = 37;
122
123pub const IDPR_CMTP: u8 = 38;
125
126pub const TP_PLUS_PLUS: u8 = 39;
128
129pub const IL: u8 = 40;
131
132pub const IPV6: u8 = 41;
134
135pub const SDRP: u8 = 42;
137
138pub const IPV6_ROUTE: u8 = 43;
140
141pub const IPV6_FRAG: u8 = 44;
143
144pub const IDRP: u8 = 45;
146
147pub const RSVP: u8 = 46;
149
150pub const GRE: u8 = 47;
152
153pub const DSR: u8 = 48;
155
156pub const BNA: u8 = 49;
158
159pub const ESP: u8 = 50;
161
162pub const AH: u8 = 51;
164
165pub const I_NLSP: u8 = 52;
167
168pub const SWIPE: u8 = 53;
170
171pub const NARP: u8 = 54;
173
174pub const MOBILE: u8 = 55;
176
177pub const TLSP: u8 = 56;
179
180pub const SKIP: u8 = 57;
182
183pub const ICMPV6: u8 = 58;
185
186pub const IPV6_NONXT: u8 = 59;
188
189pub const IPV6_OPTS: u8 = 60;
191
192pub const ANY_HOST_INTERNAL: u8 = 61;
194
195pub const CFTP: u8 = 62;
197
198pub const ANY_LOCAL_NETWORK: u8 = 63;
200
201pub const SAT_EXPAK: u8 = 64;
203
204pub const KRYPTOLAN: u8 = 65;
206
207pub const RVD: u8 = 66;
209
210pub const IPPC: u8 = 67;
212
213pub const ANY_DIST_FS: u8 = 68;
215
216pub const SAT_MON: u8 = 69;
218
219pub const VISA: u8 = 70;
221
222pub const IPCV: u8 = 71;
224
225pub const CPNX: u8 = 72;
227
228pub const CPHB: u8 = 73;
230
231pub const WSN: u8 = 74;
233
234pub const PVP: u8 = 75;
236
237pub const BR_SAT_MON: u8 = 76;
239
240pub const SUN_ND: u8 = 77;
242
243pub const WB_MON: u8 = 78;
245
246pub const WB_EXPAK: u8 = 79;
248
249pub const ISO_IP: u8 = 80;
251
252pub const VMTP: u8 = 81;
254
255pub const SECURE_VMTP: u8 = 82;
257
258pub const VINES: u8 = 83;
260
261pub const TTP: u8 = 84;
263
264pub const NSFNET_IGP: u8 = 85;
266
267pub const DGP: u8 = 86;
269
270pub const TCF: u8 = 87;
272
273pub const EIGRP: u8 = 88;
275
276pub const OSPFIGP: u8 = 89;
278
279pub const SPRITE_RPC: u8 = 90;
281
282pub const LARP: u8 = 91;
284
285pub const MTP: u8 = 92;
287
288pub const AX_25: u8 = 93;
290
291pub const IPIP_ENCAP: u8 = 94;
293
294pub const MICP: u8 = 95;
296
297pub const SCC_SP: u8 = 96;
299
300pub const ETHERIP: u8 = 97;
302
303pub const ENCAP: u8 = 98;
305
306pub const ANY_ENC: u8 = 99;
308
309pub const GMTP: u8 = 100;
311
312pub const IFMP: u8 = 101;
314
315pub const PNNI: u8 = 102;
317
318pub const PIM: u8 = 103;
320
321pub const ARIS: u8 = 104;
323
324pub const SCPS: u8 = 105;
326
327pub const QNX: u8 = 106;
329
330pub const AN: u8 = 107;
332
333pub const IPCOMP: u8 = 108;
335
336pub const SNP: u8 = 109;
338
339pub const COMPAQ_PEER: u8 = 110;
341
342pub const IPX_IN_IP: u8 = 111;
344
345pub const VRRP: u8 = 112;
347
348pub const PGM: u8 = 113;
350
351pub const ANY_0_HOP: u8 = 114;
353
354pub const L2TP: u8 = 115;
356
357pub const DDX: u8 = 116;
359
360pub const IATP: u8 = 117;
362
363pub const STP: u8 = 118;
365
366pub const SRP: u8 = 119;
368
369pub const UTI: u8 = 120;
371
372pub const SMP: u8 = 121;
374
375pub const SM: u8 = 122;
377
378pub const PTP: u8 = 123;
380
381pub const ISIS_OVER_IPV4: u8 = 124;
383
384pub const FIRE: u8 = 125;
386
387pub const CRTP: u8 = 126;
389
390pub const CRUDP: u8 = 127;
392
393pub const SSCOPMCE: u8 = 128;
395
396pub const IPLT: u8 = 129;
398
399pub const SPS: u8 = 130;
401
402pub const PIPE: u8 = 131;
404
405pub const SCTP: u8 = 132;
407
408pub const FC: u8 = 133;
410
411pub const RSVP_E2E_IGNORE: u8 = 134;
413
414pub const MOBILITY_HEADER: u8 = 135;
416
417pub const UDPLITE: u8 = 136;
419
420pub const MPLS_IN_IP: u8 = 137;
422
423pub const MANET: u8 = 138;
425
426pub const HIP: u8 = 139;
428
429pub const SHIM6: u8 = 140;
431
432pub const WESP: u8 = 141;
434
435pub const ROHC: u8 = 142;
437
438pub const ETHERNET: u8 = 143;
440
441pub const AGGFRAG: u8 = 144;
443
444pub const RESERVED: u8 = 255;
446
447#[must_use]
449pub fn from_name(name: &str) -> Option<u8> {
450 match name.to_ascii_lowercase().as_str() {
451 "ip" => Some(0), "ipv4" => Some(IPV4),
453 "icmp" => Some(ICMP),
454 "igmp" => Some(IGMP),
455 "ggp" => Some(GGP),
456 "ipip" => Some(IPIP),
457 "tcp" => Some(TCP),
458 "egp" => Some(EGP),
459 "igp" => Some(IGP),
460 "pup" => Some(PUP),
461 "udp" => Some(UDP),
462 "hmp" => Some(HMP),
463 "xns-idp" => Some(XNS_IDP),
464 "rdp" => Some(RDP),
465 "iso-tp4" => Some(ISO_TP4),
466 "dccp" => Some(DCCP),
467 "xtp" => Some(XTP),
468 "ddp" => Some(DDP),
469 "idpr-cmtp" => Some(IDPR_CMTP),
470 "ipv6" => Some(IPV6),
471 "ipv6-route" => Some(IPV6_ROUTE),
472 "ipv6-frag" => Some(IPV6_FRAG),
473 "idrp" => Some(IDRP),
474 "rsvp" => Some(RSVP),
475 "gre" => Some(GRE),
476 "esp" => Some(ESP),
477 "ah" => Some(AH),
478 "skip" => Some(SKIP),
479 "icmpv6" => Some(ICMPV6),
480 "ipv6-nonxt" => Some(IPV6_NONXT),
481 "ipv6-opts" => Some(IPV6_OPTS),
482 "eigrp" => Some(EIGRP),
483 "ospf" => Some(OSPFIGP),
484 "mtp" => Some(MTP),
485 "encap" => Some(ENCAP),
486 "pim" => Some(PIM),
487 "ipcomp" => Some(IPCOMP),
488 "vrrp" => Some(VRRP),
489 "l2tp" => Some(L2TP),
490 "isis" => Some(ISIS_OVER_IPV4),
491 "sctp" => Some(SCTP),
492 "fc" => Some(FC),
493 "mobility-header" => Some(MOBILITY_HEADER),
494 "udplite" => Some(UDPLITE),
495 "mpls-in-ip" => Some(MPLS_IN_IP),
496 "manet" => Some(MANET),
497 "hip" => Some(HIP),
498 "shim6" => Some(SHIM6),
499 "wesp" => Some(WESP),
500 "rohc" => Some(ROHC),
501 "ethernet" => Some(ETHERNET),
502 _ => None,
503 }
504}
505
506#[must_use]
508pub fn to_name(proto: u8) -> &'static str {
509 match proto {
510 HOPOPT => "HOPOPT",
511 ICMP => "ICMP",
512 IGMP => "IGMP",
513 GGP => "GGP",
514 IPIP => "IPIP",
515 ST => "ST",
516 TCP => "TCP",
517 CBT => "CBT",
518 EGP => "EGP",
519 IGP => "IGP",
520 BBN_RCC_MON => "BBN_RCC_MON",
521 NVP_II => "NVP_II",
522 PUP => "PUP",
523 ARGUS => "ARGUS",
524 EMCON => "EMCON",
525 XNET => "XNET",
526 CHAOS => "CHAOS",
527 UDP => "UDP",
528 MUX => "MUX",
529 DCN_MEAS => "DCN_MEAS",
530 HMP => "HMP",
531 PRM => "PRM",
532 XNS_IDP => "XNS_IDP",
533 TRUNK_1 => "TRUNK_1",
534 TRUNK_2 => "TRUNK_2",
535 LEAF_1 => "LEAF_1",
536 LEAF_2 => "LEAF_2",
537 RDP => "RDP",
538 IRTP => "IRTP",
539 ISO_TP4 => "ISO_TP4",
540 NETBLT => "NETBLT",
541 MFE_NSP => "MFE_NSP",
542 MERIT_INP => "MERIT_INP",
543 DCCP => "DCCP",
544 THIRD_PARTY_CONNECT => "THIRD_PARTY_CONNECT",
545 IDPR => "IDPR",
546 XTP => "XTP",
547 DDP => "DDP",
548 IDPR_CMTP => "IDPR_CMTP",
549 TP_PLUS_PLUS => "TP_PLUS_PLUS",
550 IL => "IL",
551 IPV6 => "IPV6",
552 SDRP => "SDRP",
553 IPV6_ROUTE => "IPV6_ROUTE",
554 IPV6_FRAG => "IPV6_FRAG",
555 IDRP => "IDRP",
556 RSVP => "RSVP",
557 GRE => "GRE",
558 DSR => "DSR",
559 BNA => "BNA",
560 ESP => "ESP",
561 AH => "AH",
562 I_NLSP => "I_NLSP",
563 SWIPE => "SWIPE",
564 NARP => "NARP",
565 MOBILE => "MOBILE",
566 TLSP => "TLSP",
567 SKIP => "SKIP",
568 ICMPV6 => "ICMPV6",
569 IPV6_NONXT => "IPV6_NONXT",
570 IPV6_OPTS => "IPV6_OPTS",
571 ANY_HOST_INTERNAL => "ANY_HOST_INTERNAL",
572 CFTP => "CFTP",
573 ANY_LOCAL_NETWORK => "ANY_LOCAL_NETWORK",
574 SAT_EXPAK => "SAT_EXPAK",
575 KRYPTOLAN => "KRYPTOLAN",
576 RVD => "RVD",
577 IPPC => "IPPC",
578 ANY_DIST_FS => "ANY_DIST_FS",
579 SAT_MON => "SAT_MON",
580 VISA => "VISA",
581 IPCV => "IPCV",
582 CPNX => "CPNX",
583 CPHB => "CPHB",
584 WSN => "WSN",
585 PVP => "PVP",
586 BR_SAT_MON => "BR_SAT_MON",
587 SUN_ND => "SUN_ND",
588 WB_MON => "WB_MON",
589 WB_EXPAK => "WB_EXPAK",
590 ISO_IP => "ISO_IP",
591 VMTP => "VMTP",
592 SECURE_VMTP => "SECURE_VMTP",
593 VINES => "VINES",
594 TTP => "TTP",
595 NSFNET_IGP => "NSFNET_IGP",
596 DGP => "DGP",
597 TCF => "TCF",
598 EIGRP => "EIGRP",
599 OSPFIGP => "OSPFIGP",
600 SPRITE_RPC => "SPRITE_RPC",
601 LARP => "LARP",
602 MTP => "MTP",
603 AX_25 => "AX_25",
604 IPIP_ENCAP => "IPIP_ENCAP",
605 MICP => "MICP",
606 SCC_SP => "SCC_SP",
607 ETHERIP => "ETHERIP",
608 ENCAP => "ENCAP",
609 ANY_ENC => "ANY_ENC",
610 GMTP => "GMTP",
611 IFMP => "IFMP",
612 PNNI => "PNNI",
613 PIM => "PIM",
614 ARIS => "ARIS",
615 SCPS => "SCPS",
616 QNX => "QNX",
617 AN => "AN",
618 IPCOMP => "IPCOMP",
619 SNP => "SNP",
620 COMPAQ_PEER => "COMPAQ_PEER",
621 IPX_IN_IP => "IPX_IN_IP",
622 VRRP => "VRRP",
623 PGM => "PGM",
624 ANY_0_HOP => "ANY_0_HOP",
625 L2TP => "L2TP",
626 DDX => "DDX",
627 IATP => "IATP",
628 STP => "STP",
629 SRP => "SRP",
630 UTI => "UTI",
631 SMP => "SMP",
632 SM => "SM",
633 PTP => "PTP",
634 ISIS_OVER_IPV4 => "ISIS_OVER_IPV4",
635 FIRE => "FIRE",
636 CRTP => "CRTP",
637 CRUDP => "CRUDP",
638 SSCOPMCE => "SSCOPMCE",
639 IPLT => "IPLT",
640 SPS => "SPS",
641 PIPE => "PIPE",
642 SCTP => "SCTP",
643 FC => "FC",
644 RSVP_E2E_IGNORE => "RSVP_E2E_IGNORE",
645 MOBILITY_HEADER => "MOBILITY_HEADER",
646 UDPLITE => "UDPLITE",
647 MPLS_IN_IP => "MPLS_IN_IP",
648 MANET => "MANET",
649 HIP => "HIP",
650 SHIM6 => "SHIM6",
651 WESP => "WESP",
652 ROHC => "ROHC",
653 ETHERNET => "ETHERNET",
654 AGGFRAG => "AGGFRAG",
655 RESERVED => "RESERVED",
656 _ => "UNKNOWN",
657 }
658}