pcaparse/
common.rs

1use std::{borrow::Cow, time::Duration};
2
3use byteorder::ByteOrder;
4use derive_into_owned::IntoOwned;
5
6/// Timestamp resolution of the pcap
7#[derive(Copy, Clone, Debug, Eq, PartialEq)]
8pub enum TsResolution {
9    /// Microsecond resolution
10    MicroSecond,
11    /// Nanosecond resolution
12    NanoSecond,
13}
14
15/// Endianness of the pcap
16#[derive(Copy, Clone, Debug, Eq, PartialEq)]
17pub enum Endianness {
18    /// Big endian
19    Big,
20    /// Little endian
21    Little,
22}
23
24impl Endianness {
25    /// True if LitlleEndian
26    pub fn is_little(self) -> bool {
27        match self {
28            Endianness::Big => false,
29            Endianness::Little => true,
30        }
31    }
32
33    /// True if BigEndian
34    pub fn is_big(self) -> bool {
35        match self {
36            Endianness::Big => true,
37            Endianness::Little => false,
38        }
39    }
40
41    /// Return the endianness of the given ByteOrder
42    pub fn from_byteorder<B: ByteOrder>() -> Self {
43        if B::read_u32(&[0, 0, 0, 1]) == 1 {
44            Endianness::Big
45        } else {
46            Endianness::Little
47        }
48    }
49
50    /// Return the native endianness of the system
51    pub fn native() -> Self {
52        #[cfg(target_endian = "big")]
53        return Endianness::Big;
54
55        #[cfg(target_endian = "little")]
56        return Endianness::Little;
57    }
58}
59
60/// Commen packet.
61///
62/// The payload can be owned or borrowed.
63#[derive(Clone, Debug, IntoOwned)]
64pub struct Packet<'a> {
65    /// Timestamp EPOCH of the packet with a nanosecond resolution
66    pub timestamp: Option<Duration>,
67    /// Original length of the packet when captured on the wire
68    pub orig_len: u32,
69    /// Payload, owned or borrowed, of the packet
70    pub data: Cow<'a, [u8]>,
71    /// DataLink of current packet
72    pub datalink: DataLink,
73}
74
75/// format of packet file
76#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
77pub enum Format {
78    /// pcap file
79    Pcap,
80    /// cap file
81    Cap,
82    /// pcapng file
83    PcapNg,
84}
85
86/// Data link type
87///
88/// The link-layer header type specifies the first protocol of the packet.
89///
90/// See [http://www.tcpdump.org/linktypes.html](http://www.tcpdump.org/linktypes.html)
91#[allow(non_camel_case_types)]
92#[allow(missing_docs)]
93#[derive(Copy, Clone, Debug, Eq, PartialEq)]
94pub enum DataLink {
95    NULL,
96    ETHERNET,
97    EXP_ETHERNET,
98    AX25,
99    PRONET,
100    CHAOS,
101    IEEE802_5,
102    ARCNET_BSD,
103    SLIP,
104    PPP,
105    FDDI,
106    PPP_HDLC,
107    PPP_ETHER,
108    SYMANTEC_FIREWALL,
109    ATM_RFC1483,
110    RAW,
111    SLIP_BSDOS,
112    PPP_BSDOS,
113    MATCHING_MIN,
114    C_HDLC,
115    IEEE802_11,
116    ATM_CLIP,
117    FRELAY,
118    LOOP,
119    ENC,
120    LANE8023,
121    HIPPI,
122    NETBSD_HDLC,
123    LINUX_SLL,
124    LTALK,
125    ECONET,
126    IPFILTER,
127    PFLOG,
128    CISCO_IOS,
129    IEEE802_11_PRISM,
130    IEEE802_11_AIRONET,
131    HHDLC,
132    IP_OVER_FC,
133    SUNATM,
134    RIO,
135    PCI_EXP,
136    AURORA,
137    IEEE802_11_RADIOTAP,
138    TZSP,
139    ARCNET_LINUX,
140    JUNIPER_MLPPP,
141    JUNIPER_MLFR,
142    JUNIPER_ES,
143    JUNIPER_GGSN,
144    JUNIPER_MFR,
145    JUNIPER_ATM2,
146    JUNIPER_SERVICES,
147    JUNIPER_ATM1,
148    APPLE_IP_OVER_IEEE1394,
149    MTP2_WITH_PHDR,
150    MTP2,
151    MTP3,
152    SCCP,
153    DOCSIS,
154    LINUX_IRDA,
155    IBM_SP,
156    IBM_SN,
157    USER0,
158    USER1,
159    USER2,
160    USER3,
161    USER4,
162    USER5,
163    USER6,
164    USER7,
165    USER8,
166    USER9,
167    USER10,
168    USER11,
169    USER12,
170    USER13,
171    USER14,
172    USER15,
173    IEEE802_11_AVS,
174    JUNIPER_MONITOR,
175    BACNET_MS_TP,
176    PPP_PPPD,
177    JUNIPER_PPPOE,
178    JUNIPER_PPPOE_ATM,
179    GPRS_LLC,
180    GPF_T,
181    GPF_F,
182    GCOM_T1E1,
183    GCOM_SERIAL,
184    JUNIPER_PIC_PEER,
185    ERF_ETH,
186    ERF_POS,
187    LINUX_LAPD,
188    JUNIPER_ETHER,
189    JUNIPER_PPP,
190    JUNIPER_FRELAY,
191    JUNIPER_CHDLC,
192    MFR,
193    JUNIPER_VP,
194    A429,
195    A653_ICM,
196    USB_FREEBSD,
197    BLUETOOTH_HCI_H4,
198    IEEE802_16_MAC_CPS,
199    USB_LINUX,
200    CAN20B,
201    IEEE802_15_4_LINUX,
202    PPI,
203    IEEE802_16_MAC_CPS_RADIO,
204    JUNIPER_ISM,
205    IEEE802_15_4,
206    SITA,
207    ERF,
208    RAIF1,
209    IPMB_KONTRON,
210    JUNIPER_ST,
211    BLUETOOTH_HCI_H4_WITH_PHDR,
212    AX25_KISS,
213    LAPD,
214    PPP_WITH_DIR,
215    C_HDLC_WITH_DIR,
216    FRELAY_WITH_DIR,
217    LAPB_WITH_DIR,
218    IPMB_LINUX,
219    FLEXRAY,
220    MOST,
221    LIN,
222    X2E_SERIAL,
223    X2E_XORAYA,
224    IEEE802_15_4_NONASK_PHY,
225    LINUX_EVDEV,
226    GSMTAP_UM,
227    GSMTAP_ABIS,
228    MPLS,
229    USB_LINUX_MMAPPED,
230    DECT,
231    AOS,
232    WIHART,
233    FC_2,
234    FC_2_WITH_FRAME_DELIMS,
235    IPNET,
236    CAN_SOCKETCAN,
237    IPV4,
238    IPV6,
239    IEEE802_15_4_NOFCS,
240    DBUS,
241    JUNIPER_VS,
242    JUNIPER_SRX_E2E,
243    JUNIPER_FIBRECHANNEL,
244    DVB_CI,
245    MUX27010,
246    STANAG_5066_D_PDU,
247    JUNIPER_ATM_CEMIC,
248    NFLOG,
249    NETANALYZER,
250    NETANALYZER_TRANSPARENT,
251    IPOIB,
252    MPEG_2_TS,
253    NG40,
254    NFC_LLCP,
255    PFSYNC,
256    INFINIBAND,
257    SCTP,
258    USBPCAP,
259    RTAC_SERIAL,
260    BLUETOOTH_LE_LL,
261    WIRESHARK_UPPER_PDU,
262    NETLINK,
263    BLUETOOTH_LINUX_MONITOR,
264    BLUETOOTH_BREDR_BB,
265    BLUETOOTH_LE_LL_WITH_PHDR,
266    PROFIBUS_DL,
267    PKTAP,
268    EPON,
269    IPMI_HPM_2,
270    ZWAVE_R1_R2,
271    ZWAVE_R3,
272    WATTSTOPPER_DLM,
273    ISO_14443,
274    RDS,
275    USB_DARWIN,
276    OPENFLOW,
277    SDLC,
278    TI_LLN_SNIFFER,
279    LORATAP,
280    VSOCK,
281    NORDIC_BLE,
282    DOCSIS31_XRA31,
283    ETHERNET_MPACKET,
284    DISPLAYPORT_AUX,
285    LINUX_SLL2,
286    SERCOS_MONITOR,
287    OPENVIZSLA,
288    EBHSCR,
289    VPP_DISPATCH,
290    DSA_TAG_BRCM,
291    DSA_TAG_BRCM_PREPEND,
292    IEEE802_15_4_TAP,
293    DSA_TAG_DSA,
294    DSA_TAG_EDSA,
295    ELEE,
296    Z_WAVE_SERIAL,
297    USB_2_0,
298    ATSC_ALP,
299    ETW,
300    NETANALYZER_NG,
301    ZBOSS_NCP,
302    USB_2_0_LOW_SPEED,
303    USB_2_0_FULL_SPEED,
304    USB_2_0_HIGH_SPEED,
305    AUERSWALD_LOG,
306
307    Unknown(u32),
308}
309
310impl From<u32> for DataLink {
311    fn from(n: u32) -> DataLink {
312        match n {
313            0 => DataLink::NULL,
314            1 => DataLink::ETHERNET,
315            2 => DataLink::EXP_ETHERNET,
316            3 => DataLink::AX25,
317            4 => DataLink::PRONET,
318            5 => DataLink::CHAOS,
319            6 => DataLink::IEEE802_5,
320            7 => DataLink::ARCNET_BSD,
321            8 => DataLink::SLIP,
322            9 => DataLink::PPP,
323            10 => DataLink::FDDI,
324            50 => DataLink::PPP_HDLC,
325            51 => DataLink::PPP_ETHER,
326            99 => DataLink::SYMANTEC_FIREWALL,
327            100 => DataLink::ATM_RFC1483,
328            101 => DataLink::RAW,
329            102 => DataLink::SLIP_BSDOS,
330            103 => DataLink::PPP_BSDOS,
331            104 => DataLink::C_HDLC,
332            105 => DataLink::IEEE802_11,
333            106 => DataLink::ATM_CLIP,
334            107 => DataLink::FRELAY,
335            108 => DataLink::LOOP,
336            109 => DataLink::ENC,
337            110 => DataLink::LANE8023,
338            111 => DataLink::HIPPI,
339            112 => DataLink::NETBSD_HDLC,
340            113 => DataLink::LINUX_SLL,
341            114 => DataLink::LTALK,
342            115 => DataLink::ECONET,
343            116 => DataLink::IPFILTER,
344            117 => DataLink::PFLOG,
345            118 => DataLink::CISCO_IOS,
346            119 => DataLink::IEEE802_11_PRISM,
347            120 => DataLink::IEEE802_11_AIRONET,
348            121 => DataLink::HHDLC,
349            122 => DataLink::IP_OVER_FC,
350            123 => DataLink::SUNATM,
351            124 => DataLink::RIO,
352            125 => DataLink::PCI_EXP,
353            126 => DataLink::AURORA,
354            127 => DataLink::IEEE802_11_RADIOTAP,
355            128 => DataLink::TZSP,
356            129 => DataLink::ARCNET_LINUX,
357            130 => DataLink::JUNIPER_MLPPP,
358            131 => DataLink::JUNIPER_MLFR,
359            132 => DataLink::JUNIPER_ES,
360            133 => DataLink::JUNIPER_GGSN,
361            134 => DataLink::JUNIPER_MFR,
362            135 => DataLink::JUNIPER_ATM2,
363            136 => DataLink::JUNIPER_SERVICES,
364            137 => DataLink::JUNIPER_ATM1,
365            138 => DataLink::APPLE_IP_OVER_IEEE1394,
366            139 => DataLink::MTP2_WITH_PHDR,
367            140 => DataLink::MTP2,
368            141 => DataLink::MTP3,
369            142 => DataLink::SCCP,
370            143 => DataLink::DOCSIS,
371            144 => DataLink::LINUX_IRDA,
372            145 => DataLink::IBM_SP,
373            146 => DataLink::IBM_SN,
374            147 => DataLink::USER0,
375            148 => DataLink::USER1,
376            149 => DataLink::USER2,
377            150 => DataLink::USER3,
378            151 => DataLink::USER4,
379            152 => DataLink::USER5,
380            153 => DataLink::USER6,
381            154 => DataLink::USER7,
382            155 => DataLink::USER8,
383            156 => DataLink::USER9,
384            157 => DataLink::USER10,
385            158 => DataLink::USER11,
386            159 => DataLink::USER12,
387            160 => DataLink::USER13,
388            161 => DataLink::USER14,
389            162 => DataLink::USER15,
390            163 => DataLink::IEEE802_11_AVS,
391            164 => DataLink::JUNIPER_MONITOR,
392            165 => DataLink::BACNET_MS_TP,
393            166 => DataLink::PPP_PPPD,
394            167 => DataLink::JUNIPER_PPPOE,
395            168 => DataLink::JUNIPER_PPPOE_ATM,
396            169 => DataLink::GPRS_LLC,
397            170 => DataLink::GPF_T,
398            171 => DataLink::GPF_F,
399            172 => DataLink::GCOM_T1E1,
400            173 => DataLink::GCOM_SERIAL,
401            174 => DataLink::JUNIPER_PIC_PEER,
402            175 => DataLink::ERF_ETH,
403            176 => DataLink::ERF_POS,
404            177 => DataLink::LINUX_LAPD,
405            178 => DataLink::JUNIPER_ETHER,
406            179 => DataLink::JUNIPER_PPP,
407            180 => DataLink::JUNIPER_FRELAY,
408            181 => DataLink::JUNIPER_CHDLC,
409            182 => DataLink::MFR,
410            183 => DataLink::JUNIPER_VP,
411            184 => DataLink::A429,
412            185 => DataLink::A653_ICM,
413            186 => DataLink::USB_FREEBSD,
414            187 => DataLink::BLUETOOTH_HCI_H4,
415            188 => DataLink::IEEE802_16_MAC_CPS,
416            189 => DataLink::USB_LINUX,
417            190 => DataLink::CAN20B,
418            191 => DataLink::IEEE802_15_4_LINUX,
419            192 => DataLink::PPI,
420            193 => DataLink::IEEE802_16_MAC_CPS_RADIO,
421            194 => DataLink::JUNIPER_ISM,
422            195 => DataLink::IEEE802_15_4,
423            196 => DataLink::SITA,
424            197 => DataLink::ERF,
425            198 => DataLink::RAIF1,
426            199 => DataLink::IPMB_KONTRON,
427            200 => DataLink::JUNIPER_ST,
428            201 => DataLink::BLUETOOTH_HCI_H4_WITH_PHDR,
429            202 => DataLink::AX25_KISS,
430            203 => DataLink::LAPD,
431            204 => DataLink::PPP_WITH_DIR,
432            205 => DataLink::C_HDLC_WITH_DIR,
433            206 => DataLink::FRELAY_WITH_DIR,
434            207 => DataLink::LAPB_WITH_DIR,
435            209 => DataLink::IPMB_LINUX,
436            210 => DataLink::FLEXRAY,
437            211 => DataLink::MOST,
438            212 => DataLink::LIN,
439            213 => DataLink::X2E_SERIAL,
440            214 => DataLink::X2E_XORAYA,
441            215 => DataLink::IEEE802_15_4_NONASK_PHY,
442            216 => DataLink::LINUX_EVDEV,
443            217 => DataLink::GSMTAP_UM,
444            218 => DataLink::GSMTAP_ABIS,
445            219 => DataLink::MPLS,
446            220 => DataLink::USB_LINUX_MMAPPED,
447            221 => DataLink::DECT,
448            222 => DataLink::AOS,
449            223 => DataLink::WIHART,
450            224 => DataLink::FC_2,
451            225 => DataLink::FC_2_WITH_FRAME_DELIMS,
452            226 => DataLink::IPNET,
453            227 => DataLink::CAN_SOCKETCAN,
454            228 => DataLink::IPV4,
455            229 => DataLink::IPV6,
456            230 => DataLink::IEEE802_15_4_NOFCS,
457            231 => DataLink::DBUS,
458            232 => DataLink::JUNIPER_VS,
459            233 => DataLink::JUNIPER_SRX_E2E,
460            234 => DataLink::JUNIPER_FIBRECHANNEL,
461            235 => DataLink::DVB_CI,
462            236 => DataLink::MUX27010,
463            237 => DataLink::STANAG_5066_D_PDU,
464            238 => DataLink::JUNIPER_ATM_CEMIC,
465            239 => DataLink::NFLOG,
466            240 => DataLink::NETANALYZER,
467            241 => DataLink::NETANALYZER_TRANSPARENT,
468            242 => DataLink::IPOIB,
469            243 => DataLink::MPEG_2_TS,
470            244 => DataLink::NG40,
471            245 => DataLink::NFC_LLCP,
472            246 => DataLink::PFSYNC,
473            247 => DataLink::INFINIBAND,
474            248 => DataLink::SCTP,
475            249 => DataLink::USBPCAP,
476            250 => DataLink::RTAC_SERIAL,
477            251 => DataLink::BLUETOOTH_LE_LL,
478            252 => DataLink::WIRESHARK_UPPER_PDU,
479            253 => DataLink::NETLINK,
480            254 => DataLink::BLUETOOTH_LINUX_MONITOR,
481            255 => DataLink::BLUETOOTH_BREDR_BB,
482            256 => DataLink::BLUETOOTH_LE_LL_WITH_PHDR,
483            257 => DataLink::PROFIBUS_DL,
484            258 => DataLink::PKTAP,
485            259 => DataLink::EPON,
486            260 => DataLink::IPMI_HPM_2,
487            261 => DataLink::ZWAVE_R1_R2,
488            262 => DataLink::ZWAVE_R3,
489            263 => DataLink::WATTSTOPPER_DLM,
490            264 => DataLink::ISO_14443,
491            265 => DataLink::RDS,
492            266 => DataLink::USB_DARWIN,
493            267 => DataLink::OPENFLOW,
494            268 => DataLink::SDLC,
495            269 => DataLink::TI_LLN_SNIFFER,
496            270 => DataLink::LORATAP,
497            271 => DataLink::VSOCK,
498            272 => DataLink::NORDIC_BLE,
499            273 => DataLink::DOCSIS31_XRA31,
500            274 => DataLink::ETHERNET_MPACKET,
501            275 => DataLink::DISPLAYPORT_AUX,
502            276 => DataLink::LINUX_SLL2,
503            277 => DataLink::SERCOS_MONITOR,
504            278 => DataLink::OPENVIZSLA,
505            279 => DataLink::EBHSCR,
506            280 => DataLink::VPP_DISPATCH,
507            281 => DataLink::DSA_TAG_BRCM,
508            282 => DataLink::DSA_TAG_BRCM_PREPEND,
509            283 => DataLink::IEEE802_15_4_TAP,
510            284 => DataLink::DSA_TAG_DSA,
511            285 => DataLink::DSA_TAG_EDSA,
512            286 => DataLink::ELEE,
513            287 => DataLink::Z_WAVE_SERIAL,
514            288 => DataLink::USB_2_0,
515            289 => DataLink::ATSC_ALP,
516            290 => DataLink::ETW,
517            291 => DataLink::NETANALYZER_NG,
518            292 => DataLink::ZBOSS_NCP,
519            293 => DataLink::USB_2_0_LOW_SPEED,
520            294 => DataLink::USB_2_0_FULL_SPEED,
521            295 => DataLink::USB_2_0_HIGH_SPEED,
522            296 => DataLink::AUERSWALD_LOG,
523
524            _ => DataLink::Unknown(n),
525        }
526    }
527}
528
529impl From<DataLink> for u32 {
530    fn from(link: DataLink) -> u32 {
531        match link {
532            DataLink::NULL => 0,
533            DataLink::ETHERNET => 1,
534            DataLink::EXP_ETHERNET => 2,
535            DataLink::AX25 => 3,
536            DataLink::PRONET => 4,
537            DataLink::CHAOS => 5,
538            DataLink::IEEE802_5 => 6,
539            DataLink::ARCNET_BSD => 7,
540            DataLink::SLIP => 8,
541            DataLink::PPP => 9,
542            DataLink::FDDI => 10,
543            DataLink::PPP_HDLC => 50,
544            DataLink::PPP_ETHER => 51,
545            DataLink::SYMANTEC_FIREWALL => 99,
546            DataLink::ATM_RFC1483 => 100,
547            DataLink::RAW => 101,
548            DataLink::SLIP_BSDOS => 102,
549            DataLink::PPP_BSDOS => 103,
550            DataLink::MATCHING_MIN => 104,
551            DataLink::C_HDLC => 104,
552            DataLink::IEEE802_11 => 105,
553            DataLink::ATM_CLIP => 106,
554            DataLink::FRELAY => 107,
555            DataLink::LOOP => 108,
556            DataLink::ENC => 109,
557            DataLink::LANE8023 => 110,
558            DataLink::HIPPI => 111,
559            DataLink::NETBSD_HDLC => 112,
560            DataLink::LINUX_SLL => 113,
561            DataLink::LTALK => 114,
562            DataLink::ECONET => 115,
563            DataLink::IPFILTER => 116,
564            DataLink::PFLOG => 117,
565            DataLink::CISCO_IOS => 118,
566            DataLink::IEEE802_11_PRISM => 119,
567            DataLink::IEEE802_11_AIRONET => 120,
568            DataLink::HHDLC => 121,
569            DataLink::IP_OVER_FC => 122,
570            DataLink::SUNATM => 123,
571            DataLink::RIO => 124,
572            DataLink::PCI_EXP => 125,
573            DataLink::AURORA => 126,
574            DataLink::IEEE802_11_RADIOTAP => 127,
575            DataLink::TZSP => 128,
576            DataLink::ARCNET_LINUX => 129,
577            DataLink::JUNIPER_MLPPP => 130,
578            DataLink::JUNIPER_MLFR => 131,
579            DataLink::JUNIPER_ES => 132,
580            DataLink::JUNIPER_GGSN => 133,
581            DataLink::JUNIPER_MFR => 134,
582            DataLink::JUNIPER_ATM2 => 135,
583            DataLink::JUNIPER_SERVICES => 136,
584            DataLink::JUNIPER_ATM1 => 137,
585            DataLink::APPLE_IP_OVER_IEEE1394 => 138,
586            DataLink::MTP2_WITH_PHDR => 139,
587            DataLink::MTP2 => 140,
588            DataLink::MTP3 => 141,
589            DataLink::SCCP => 142,
590            DataLink::DOCSIS => 143,
591            DataLink::LINUX_IRDA => 144,
592            DataLink::IBM_SP => 145,
593            DataLink::IBM_SN => 146,
594            DataLink::USER0 => 147,
595            DataLink::USER1 => 148,
596            DataLink::USER2 => 149,
597            DataLink::USER3 => 150,
598            DataLink::USER4 => 151,
599            DataLink::USER5 => 152,
600            DataLink::USER6 => 153,
601            DataLink::USER7 => 154,
602            DataLink::USER8 => 155,
603            DataLink::USER9 => 156,
604            DataLink::USER10 => 157,
605            DataLink::USER11 => 158,
606            DataLink::USER12 => 159,
607            DataLink::USER13 => 160,
608            DataLink::USER14 => 161,
609            DataLink::USER15 => 162,
610            DataLink::IEEE802_11_AVS => 163,
611            DataLink::JUNIPER_MONITOR => 164,
612            DataLink::BACNET_MS_TP => 165,
613            DataLink::PPP_PPPD => 166,
614            DataLink::JUNIPER_PPPOE => 167,
615            DataLink::JUNIPER_PPPOE_ATM => 168,
616            DataLink::GPRS_LLC => 169,
617            DataLink::GPF_T => 170,
618            DataLink::GPF_F => 171,
619            DataLink::GCOM_T1E1 => 172,
620            DataLink::GCOM_SERIAL => 173,
621            DataLink::JUNIPER_PIC_PEER => 174,
622            DataLink::ERF_ETH => 175,
623            DataLink::ERF_POS => 176,
624            DataLink::LINUX_LAPD => 177,
625            DataLink::JUNIPER_ETHER => 178,
626            DataLink::JUNIPER_PPP => 179,
627            DataLink::JUNIPER_FRELAY => 180,
628            DataLink::JUNIPER_CHDLC => 181,
629            DataLink::MFR => 182,
630            DataLink::JUNIPER_VP => 183,
631            DataLink::A429 => 184,
632            DataLink::A653_ICM => 185,
633            DataLink::USB_FREEBSD => 186,
634            DataLink::BLUETOOTH_HCI_H4 => 187,
635            DataLink::IEEE802_16_MAC_CPS => 188,
636            DataLink::USB_LINUX => 189,
637            DataLink::CAN20B => 190,
638            DataLink::IEEE802_15_4_LINUX => 191,
639            DataLink::PPI => 192,
640            DataLink::IEEE802_16_MAC_CPS_RADIO => 193,
641            DataLink::JUNIPER_ISM => 194,
642            DataLink::IEEE802_15_4 => 195,
643            DataLink::SITA => 196,
644            DataLink::ERF => 197,
645            DataLink::RAIF1 => 198,
646            DataLink::IPMB_KONTRON => 199,
647            DataLink::JUNIPER_ST => 200,
648            DataLink::BLUETOOTH_HCI_H4_WITH_PHDR => 201,
649            DataLink::AX25_KISS => 202,
650            DataLink::LAPD => 203,
651            DataLink::PPP_WITH_DIR => 204,
652            DataLink::C_HDLC_WITH_DIR => 205,
653            DataLink::FRELAY_WITH_DIR => 206,
654            DataLink::LAPB_WITH_DIR => 207,
655            DataLink::IPMB_LINUX => 209,
656            DataLink::FLEXRAY => 210,
657            DataLink::MOST => 211,
658            DataLink::LIN => 212,
659            DataLink::X2E_SERIAL => 213,
660            DataLink::X2E_XORAYA => 214,
661            DataLink::IEEE802_15_4_NONASK_PHY => 215,
662            DataLink::LINUX_EVDEV => 216,
663            DataLink::GSMTAP_UM => 217,
664            DataLink::GSMTAP_ABIS => 218,
665            DataLink::MPLS => 219,
666            DataLink::USB_LINUX_MMAPPED => 220,
667            DataLink::DECT => 221,
668            DataLink::AOS => 222,
669            DataLink::WIHART => 223,
670            DataLink::FC_2 => 224,
671            DataLink::FC_2_WITH_FRAME_DELIMS => 225,
672            DataLink::IPNET => 226,
673            DataLink::CAN_SOCKETCAN => 227,
674            DataLink::IPV4 => 228,
675            DataLink::IPV6 => 229,
676            DataLink::IEEE802_15_4_NOFCS => 230,
677            DataLink::DBUS => 231,
678            DataLink::JUNIPER_VS => 232,
679            DataLink::JUNIPER_SRX_E2E => 233,
680            DataLink::JUNIPER_FIBRECHANNEL => 234,
681            DataLink::DVB_CI => 235,
682            DataLink::MUX27010 => 236,
683            DataLink::STANAG_5066_D_PDU => 237,
684            DataLink::JUNIPER_ATM_CEMIC => 238,
685            DataLink::NFLOG => 239,
686            DataLink::NETANALYZER => 240,
687            DataLink::NETANALYZER_TRANSPARENT => 241,
688            DataLink::IPOIB => 242,
689            DataLink::MPEG_2_TS => 243,
690            DataLink::NG40 => 244,
691            DataLink::NFC_LLCP => 245,
692            DataLink::PFSYNC => 246,
693            DataLink::INFINIBAND => 247,
694            DataLink::SCTP => 248,
695            DataLink::USBPCAP => 249,
696            DataLink::RTAC_SERIAL => 250,
697            DataLink::BLUETOOTH_LE_LL => 251,
698            DataLink::WIRESHARK_UPPER_PDU => 252,
699            DataLink::NETLINK => 253,
700            DataLink::BLUETOOTH_LINUX_MONITOR => 254,
701            DataLink::BLUETOOTH_BREDR_BB => 255,
702            DataLink::BLUETOOTH_LE_LL_WITH_PHDR => 256,
703            DataLink::PROFIBUS_DL => 257,
704            DataLink::PKTAP => 258,
705            DataLink::EPON => 259,
706            DataLink::IPMI_HPM_2 => 260,
707            DataLink::ZWAVE_R1_R2 => 261,
708            DataLink::ZWAVE_R3 => 262,
709            DataLink::WATTSTOPPER_DLM => 263,
710            DataLink::ISO_14443 => 264,
711            DataLink::RDS => 265,
712            DataLink::USB_DARWIN => 266,
713            DataLink::OPENFLOW => 267,
714            DataLink::SDLC => 268,
715            DataLink::TI_LLN_SNIFFER => 269,
716            DataLink::LORATAP => 270,
717            DataLink::VSOCK => 271,
718            DataLink::NORDIC_BLE => 272,
719            DataLink::DOCSIS31_XRA31 => 273,
720            DataLink::ETHERNET_MPACKET => 274,
721            DataLink::DISPLAYPORT_AUX => 275,
722            DataLink::LINUX_SLL2 => 276,
723            DataLink::SERCOS_MONITOR => 277,
724            DataLink::OPENVIZSLA => 278,
725            DataLink::EBHSCR => 279,
726            DataLink::VPP_DISPATCH => 280,
727            DataLink::DSA_TAG_BRCM => 281,
728            DataLink::DSA_TAG_BRCM_PREPEND => 282,
729            DataLink::IEEE802_15_4_TAP => 283,
730            DataLink::DSA_TAG_DSA => 284,
731            DataLink::DSA_TAG_EDSA => 285,
732            DataLink::ELEE => 286,
733            DataLink::Z_WAVE_SERIAL => 287,
734            DataLink::USB_2_0 => 288,
735            DataLink::ATSC_ALP => 289,
736            DataLink::ETW => 290,
737            DataLink::NETANALYZER_NG => 291,
738            DataLink::ZBOSS_NCP => 292,
739            DataLink::USB_2_0_LOW_SPEED => 293,
740            DataLink::USB_2_0_FULL_SPEED => 294,
741            DataLink::USB_2_0_HIGH_SPEED => 295,
742            DataLink::AUERSWALD_LOG => 296,
743
744            DataLink::Unknown(n) => n,
745        }
746    }
747}