ya_relay_stack/
protocol.rs1use std::convert::TryFrom;
2
3#[allow(unused)]
5#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq, Ord, PartialOrd, num_derive::FromPrimitive)]
6#[non_exhaustive]
7#[repr(u8)]
8pub enum Protocol {
9 HopByHop = 0,
10 Icmp = 1,
11 Igmp = 2,
12 Tcp = 6,
13 Egp = 8,
14 Igp = 9,
15 Udp = 17,
16 Rdp = 27,
17 Dccp = 33,
18 Ipv6Tun = 41,
19 Sdrp = 42,
20 Ipv6Route = 43,
21 Ipv6Frag = 44,
22 Ipv6Icmp = 58,
23 Ipv6NoNxt = 59,
24 Ipv6Opts = 60,
25 Ipcv = 71,
26 IpIp = 94,
27 IpComp = 108,
28 Smp = 121,
29 Sctp = 132,
30 Ethernet = 143,
31 None,
32}
33
34impl TryFrom<u8> for Protocol {
35 type Error = u8;
36
37 fn try_from(value: u8) -> Result<Self, Self::Error> {
38 match num_traits::FromPrimitive::from_u8(value) {
39 Some(protocol) => Ok(protocol),
40 None => Err(value),
41 }
42 }
43}
44
45impl std::fmt::Display for Protocol {
46 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47 write!(f, "{:?}", self)
48 }
49}