use crate::protocols::ip::shared::{
ip_protocol_summary, IPPROTO_AH, IPPROTO_ESP, IPPROTO_EXPERIMENTAL_1, IPPROTO_EXPERIMENTAL_2,
IPPROTO_GRE, IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_IGMP, IPPROTO_IPV6, IPPROTO_OSPF,
IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_UDP,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(u8)]
pub enum Ipv4Protocol {
HopByHop = 0,
Icmpv4 = IPPROTO_ICMP,
Igmp = IPPROTO_IGMP,
Tcp = IPPROTO_TCP,
Udp = IPPROTO_UDP,
Ipv6 = IPPROTO_IPV6,
Gre = IPPROTO_GRE,
Esp = IPPROTO_ESP,
Ah = IPPROTO_AH,
Icmpv6 = IPPROTO_ICMPV6,
Ospf = IPPROTO_OSPF,
Sctp = IPPROTO_SCTP,
Experimental1 = IPPROTO_EXPERIMENTAL_1,
Experimental2 = IPPROTO_EXPERIMENTAL_2,
}
impl From<Ipv4Protocol> for u8 {
fn from(value: Ipv4Protocol) -> Self {
value as u8
}
}
pub(crate) fn protocol_summary(protocol: u8) -> String {
ip_protocol_summary(protocol)
}