1#[derive(Debug, PartialEq)]
5#[repr(u8)]
6pub enum HTypes {
7 Ethernet,
9 ExperimentalEthernet,
11 AmateurRadio,
13 ProteonTokenRing,
15 Chaos,
17 IEEE802,
19 ARCNET,
21 Hyperchannel,
23 Lanstar,
25 AutonetShortAddress,
27 LocalTalk,
29 LocalNet,
31 UltraLink,
33 SMDS,
35 FrameRelay,
37 ATM16,
39 HDLC,
41 FibreChannel,
43 ATM19,
45 SerialLine,
47 ATM21,
49 MILSTD188220,
51 Metricom,
53 IEEE13941995,
55 MAPOS,
57 Twinaxial,
59 EUI64,
61 HIPARP,
63 IPARPISO78163,
65 ARPSec,
67 IPsecTunnel,
69 InfiniBand,
71 CommonAirInterface,
73 WiegandInterface,
75 PureIP,
77 HWEXP1,
79 HFI,
81 UnifiedBus,
83 Other(u8),
86}
87
88impl From<&HTypes> for u8 {
90 fn from(htypes: &HTypes) -> Self {
91 match htypes {
92 HTypes::Ethernet => 1,
93 HTypes::ExperimentalEthernet => 2,
94 HTypes::AmateurRadio => 3,
95 HTypes::ProteonTokenRing => 4,
96 HTypes::Chaos => 5,
97 HTypes::IEEE802 => 6,
98 HTypes::ARCNET => 7,
99 HTypes::Hyperchannel => 8,
100 HTypes::Lanstar => 9,
101 HTypes::AutonetShortAddress => 10,
102 HTypes::LocalTalk => 11,
103 HTypes::LocalNet => 12,
104 HTypes::UltraLink => 13,
105 HTypes::SMDS => 14,
106 HTypes::FrameRelay => 15,
107 HTypes::ATM16 => 16,
108 HTypes::HDLC => 17,
109 HTypes::FibreChannel => 18,
110 HTypes::ATM19 => 19,
111 HTypes::SerialLine => 20,
112 HTypes::ATM21 => 21,
113 HTypes::MILSTD188220 => 22,
114 HTypes::Metricom => 23,
115 HTypes::IEEE13941995 => 24,
116 HTypes::MAPOS => 25,
117 HTypes::Twinaxial => 26,
118 HTypes::EUI64 => 27,
119 HTypes::HIPARP => 28,
120 HTypes::IPARPISO78163 => 29,
121 HTypes::ARPSec => 30,
122 HTypes::IPsecTunnel => 31,
123 HTypes::InfiniBand => 32,
124 HTypes::CommonAirInterface => 33,
125 HTypes::WiegandInterface => 34,
126 HTypes::PureIP => 35,
127 HTypes::HWEXP1 => 36,
128 HTypes::HFI => 37,
129 HTypes::UnifiedBus => 38,
130 HTypes::Other(x) => *x,
131 }
132 }
133}
134
135impl From<&[u8]> for HTypes {
137 fn from(bytes: &[u8]) -> Self {
138 let byte = bytes[0];
139 match byte {
140 1 => Self::Ethernet,
141 2 => Self::ExperimentalEthernet,
142 3 => Self::AmateurRadio,
143 4 => Self::ProteonTokenRing,
144 5 => Self::Chaos,
145 6 => Self::IEEE802,
146 7 => Self::ARCNET,
147 8 => Self::Hyperchannel,
148 9 => Self::Lanstar,
149 10 => Self::AutonetShortAddress,
150 11 => Self::LocalTalk,
151 12 => Self::LocalNet,
152 13 => Self::UltraLink,
153 14 => Self::SMDS,
154 15 => Self::FrameRelay,
155 16 => Self::ATM16,
156 17 => Self::HDLC,
157 18 => Self::FibreChannel,
158 19 => Self::ATM19,
159 20 => Self::SerialLine,
160 21 => Self::ATM21,
161 22 => Self::MILSTD188220,
162 23 => Self::Metricom,
163 24 => Self::IEEE13941995,
164 25 => Self::MAPOS,
165 26 => Self::Twinaxial,
166 27 => Self::EUI64,
167 28 => Self::HIPARP,
168 29 => Self::IPARPISO78163,
169 30 => Self::ARPSec,
170 31 => Self::IPsecTunnel,
171 32 => Self::InfiniBand,
172 33 => Self::CommonAirInterface,
173 34 => Self::WiegandInterface,
174 35 => Self::PureIP,
175 36 => Self::HWEXP1,
176 37 => Self::HFI,
177 38 => Self::UnifiedBus,
178 _ => Self::Other(byte),
179 }
180 }
181}