ethertype 0.3.3

IEEE 802 EtherType with protocol descriptions
Documentation
use crate::EtherType;

impl EtherType {
    /// A brief textual description of the [`EtherType`] if it is an associated constant.
    pub const fn description(self) -> Option<&'static str> {
        Some(match self {
            Self::IPV4 => "Internet Protocol Version 4 (IPv4)",
            Self::ARP => "Address Resolution Protocol (ARP)",
            Self::FR_ARP => "Frame Relay ARP",
            Self::TRILL => "TRILL",
            Self::L2ISIS => "L2-IS-IS",
            Self::RARP => "Reverse Address Resolution Protocol (RARP)",
            Self::IPV6 => "Internet Protocol Version 6 (IPv6)",
            Self::PPP => "Point-to-Point Protocol (PPP)",
            Self::GSMP => "General Switch Management Protocol (GSMP)",
            Self::MPLS => "MPLS",
            Self::MPLS_MC => "MPLS with upstream-assigned label",
            Self::MCAP => "Multicast Channel Allocation Protocol (MCAP)",
            Self::PPPOE_D => "PPP over Ethernet (PPPoE) Discovery Stage",
            Self::PPPOE_S => "PPP over Ethernet (PPPoE) Session Stage",
            Self::TRILL_FGL => "TRILL Fine Grained Labeling (FGL)",
            Self::TRILL_RBC => "TRILL RBridge Channel",
            Self::C_TAG => "IEEE Std 802.1Q   - Customer VLAN Tag Type (C-Tag, formerly called the Q-Tag) (initially Wellfleet)",
            Self::EPON => "IEEE Std 802.3    - Ethernet Passive Optical Network (EPON)",
            Self::PAE => "IEEE Std 802.1X   - Port-based network access control",
            Self::S_TAG => "IEEE Std 802.1Q   - Service VLAN tag identifier (S-Tag)",
            Self::IEEE802_EXPERIMENTAL1 => "IEEE Std 802      - Local Experimental Ethertype 1",
            Self::IEEE802_EXPERIMENTAL2 => "IEEE Std 802      - Local Experimental Ethertype 2",
            Self::OUI_EXTENDED => "IEEE Std 802      - OUI Extended Ethertype",
            Self::PREAUTH => "IEEE Std 802.11   - Pre-Authentication (802.11i)",
            Self::LLDP => "IEEE Std 802.1AB  - Link Layer Discovery Protocol (LLDP)",
            Self::MACSEC => "IEEE Std 802.1AE  - Media Access Control Security",
            Self::MVRP => "IEEE Std 802.1Q   - Multiple VLAN Registration Protocol (MVRP)",
            Self::MMRP => "IEEE Std 802.1Q   - Multiple Multicast Registration Protocol ",
            Self::FRRR => "IEEE Std 802.11   - Fast Roaming Remote Request (802.11r)",
            Self::MIH => "IEEE Std 802.21   - Media Independent Handover Protocol",
            Self::MIR => "IEEE Std 802.1Qbe - Multiple I-SID Registration Protocol",
            Self::ECP => "IEEE Std 802.1Qbg - ECP Protocol (also used in 802.1BR)",
            Self::SNA => "SNA",
            Self::OSI_NL => "OSI network layer",
            Self::PUP => "PUP",
            Self::XNS => "XNS",
            Self::CHAOS => "Chaos",
            Self::VINES => "VINES",
            Self::VINES_ECHO => "VINES Echo",
            Self::VINES_LOOPBACK => "VINES Loopback",
            Self::DECNET => "DECnet (Phase IV)",
            Self::TEB => "Transparent Ethernet Bridging",
            Self::RAW_FR => "Raw Frame Relay",
            Self::APOLLO_DOMAIN => "Apollo Domain",
            Self::APPLETALK => "Ethertalk (Appletalk)",
            Self::IPX => "Novell IPX",
            Self::RFC1144 => "RFC 1144 TCP/IP compression",
            Self::IP_AUTONOMOUS_SYSTEMS => "IP Autonomous Systems",
            Self::SECURE_DATA => "Secure Data",
            Self::WOL => "Wake-on-LAN",
            Self::MSRP => "Stream Reservation Protocol",
            Self::AVTP => "Audio Video Transport Protocol (AVTP)",
            Self::DEC_MOP_RC => "DEC MOP RC",
            Self::LAT => "DEC LAT length and 1 byte padding",
            Self::AARP => "AppleTalk Address Resolution Protocol (AARP)",
            Self::SLPP => "Simple Loop Prevention Protocol (SLPP)",
            Self::VLACP => "Virtual Link Aggregation Control Protocol (VLACP)",
            Self::QNX_QNET => "QNX Qnet",
            Self::SLOW => "Ethernet Slow Protocols such as the Link Aggregation Control Protocol (LACP)",
            Self::COBRANET => "CobraNet",
            Self::HOMEPLUG => "HomePlug 1.0 MME",
            Self::PROFINET => "PROFINET Protocol",
            Self::HYPERSCSI => "HyperSCSI (SCSI over Ethernet)",
            Self::ATAOE => "ATA over Ethernet",
            Self::ETHERCAT => "EtherCAT Protocol",
            Self::POWERLINK => "Ethernet Powerlink",
            Self::GOOSE => "GOOSE (Generic Object Oriented Substation event)",
            Self::GSE => "GSE (Generic Substation Events) Management Services",
            Self::SV => "SV (Sampled Value Transmission)",
            Self::ROMON => "MikroTik RoMON (unofficial)",
            Self::SERCOS => "SERCOS III",
            Self::HOMEPLUG_GREEN => "HomePlug Green PHY",
            Self::MRP => "Media Redundancy Protocol (IEC62439-2)",
            Self::PBB => "Provider Backbone Bridges (PBB) (IEEE 802.1ah)",
            Self::PTP => "Precision Time Protocol (PTP) over IEEE 802.3 Ethernet",
            Self::NCSI => "NC-SI",
            Self::PRP => "Parallel Redundancy Protocol (PRP)",
            Self::CFM => "IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)",
            Self::FCOE => "Fibre Channel over Ethernet (FCoE)",
            Self::FCOE_IP => "FCoE Initialization Protocol",
            Self::ROCE => "RDMA over Converged Ethernet (RoCE)",
            Self::TTE => "TTEthernet Protocol Control Frame (TTE)",
            Self::IEEE1905_1 => "1905.1 IEEE Protocol",
            Self::HSR => "High-availability Seamless Redundancy (HSR)",
            Self::LOOPBACK => "Ethernet Configuration Testing Protocol",
            Self::REDUNDANCY_TAG => "Redundancy Tag (IEEE 802.1CB Frame Replication and Elimination for Reliability)",
            _ => return None,
        })
    }
}