ethertype 0.3.3

IEEE 802 EtherType with protocol descriptions
Documentation
#![allow(
    clippy::match_overlapping_arm,
    clippy::match_same_arms,
    clippy::needless_raw_string_hashes,
    clippy::too_many_lines,
    clippy::unicode_not_nfc,
    unreachable_patterns
)]

use crate::EtherType;

impl EtherType {
    /// A brief textual description of the [`EtherType`] sourced from [IANA](https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml).
    pub const fn iana_description(self) -> Option<&'static str> {
        Some(match self.0 {
            0x0000..=0x05DC => r#"IEEE802.3 Length Field"#,
            0x0101..=0x01FF => {
                r#"Old Xerox Experimental values. Invalid as an Ethertype since 1983."#
            }
            0x0200 => r#"Formerly XEROX PUP. Invalid as an Ethertype since 1983. Use 0x0A00."#,
            0x0201 => r#"Formerly PUP Addr Trans. Invalid as an Ethertype since 1983. Use 0x0A01."#,
            0x0400 => r#"Old Nixdorf private protocol. Invalid as an Ethertype since 1983."#,
            0x0600 => r#"XEROX NS IDP"#,
            0x0660 => r#"DLOG"#,
            0x0661 => r#"DLOG"#,
            0x0800 => r#"Internet Protocol version 4 (IPv4)"#,
            0x0801 => r#"X.75 Internet"#,
            0x0802 => r#"NBS Internet"#,
            0x0803 => r#"ECMA Internet"#,
            0x0804 => r#"Chaosnet"#,
            0x0805 => r#"X.25 Level 3"#,
            0x0806 => r#"Address Resolution Protocol (ARP)"#,
            0x0807 => r#"XNS Compatability"#,
            0x0808 => r#"Frame Relay ARP"#,
            0x081C => r#"Symbolics Private"#,
            0x0888..=0x088A => r#"Xyplex"#,
            0x0900 => r#"Ungermann-Bass net debugr"#,
            0x0A00 => r#"Xerox IEEE802.3 PUP"#,
            0x0A01 => r#"PUP Addr Trans"#,
            0x0BAD => r#"Banyan VINES"#,
            0x0BAE => r#"VINES Loopback"#,
            0x0BAF => r#"VINES Echo"#,
            0x1000 => r#"Berkeley Trailer nego"#,
            0x1001..=0x100F => r#"Berkeley Trailer encap/IP"#,
            0x1600 => r#"Valid Systems"#,
            0x22F3 => r#"TRILL"#,
            0x22F4 => r#"L2-IS-IS"#,
            0x4242 => r#"PCS Basic Block Protocol"#,
            0x5208 => r#"BBN Simnet"#,
            0x6000 => r#"DEC Unassigned (Exp.)"#,
            0x6001 => r#"DEC MOP Dump/Load"#,
            0x6002 => r#"DEC MOP Remote Console"#,
            0x6003 => r#"DEC DECNET Phase IV Route"#,
            0x6004 => r#"DEC LAT"#,
            0x6005 => r#"DEC Diagnostic Protocol"#,
            0x6006 => r#"DEC Customer Protocol"#,
            0x6007 => r#"DEC LAVC, SCA"#,
            0x6008..=0x6009 => r#"DEC Unassigned"#,
            0x6010..=0x6014 => r#"3Com Corporation"#,
            0x6558 => r#"Transparent Ethernet Bridging"#,
            0x6559 => r#"Raw Frame Relay"#,
            0x7000 => r#"Ungermann-Bass download"#,
            0x7002 => r#"Ungermann-Bass dia/loop"#,
            0x7020..=0x7029 => r#"LRT"#,
            0x7030 => r#"Proteon"#,
            0x7034 => r#"Cabletron"#,
            0x8003 => r#"Cronus VLN"#,
            0x8004 => r#"Cronus Direct"#,
            0x8005 => r#"HP Probe"#,
            0x8006 => r#"Nestar"#,
            0x8008 => r#"AT&T"#,
            0x8010 => r#"Excelan"#,
            0x8013 => r#"SGI diagnostics"#,
            0x8014 => r#"SGI network games"#,
            0x8015 => r#"SGI reserved"#,
            0x8016 => r#"SGI bounce server"#,
            0x8019 => r#"Apollo Domain"#,
            0x802E => r#"Tymshare"#,
            0x802F => r#"Tigan, Inc."#,
            0x8035 => r#"Reverse Address Resolution Protocol (RARP)"#,
            0x8036 => r#"Aeonic Systems"#,
            0x8038 => r#"DEC LANBridge"#,
            0x8039..=0x803C => r#"DEC Unassigned"#,
            0x803D => r#"DEC Ethernet Encryption"#,
            0x803E => r#"DEC Unassigned"#,
            0x803F => r#"DEC LAN Traffic Monitor"#,
            0x8040..=0x8042 => r#"DEC Unassigned"#,
            0x8044 => r#"Planning Research Corp."#,
            0x8046 => r#"AT&T"#,
            0x8047 => r#"AT&T"#,
            0x8049 => r#"ExperData"#,
            0x805B => r#"Stanford V Kernel exp."#,
            0x805C => r#"Stanford V Kernel prod."#,
            0x805D => r#"Evans & Sutherland"#,
            0x8060 => r#"Little Machines"#,
            0x8062 => r#"Counterpoint Computers"#,
            0x8065 => r#"Univ. of Mass. @ Amherst"#,
            0x8066 => r#"Univ. of Mass. @ Amherst"#,
            0x8067 => r#"Veeco Integrated Auto."#,
            0x8068 => r#"General Dynamics"#,
            0x8069 => r#"AT&T"#,
            0x806A => r#"Autophon"#,
            0x806C => r#"ComDesign"#,
            0x806D => r#"Computgraphic Corp."#,
            0x806E..=0x8077 => r#"Landmark Graphics Corp."#,
            0x807A => r#"Matra"#,
            0x807B => r#"Dansk Data Elektronik"#,
            0x807C => r#"Merit Internodal"#,
            0x807D..=0x807F => r#"Vitalink Communications"#,
            0x8080 => r#"Vitalink TransLAN III"#,
            0x8081..=0x8083 => r#"Counterpoint Computers"#,
            0x809B => r#"Appletalk"#,
            0x809C..=0x809E => r#"Datability"#,
            0x809F => r#"Spider Systems Ltd."#,
            0x80A3 => r#"Nixdorf Computers"#,
            0x80A4..=0x80B3 => r#"Siemens Gammasonics Inc."#,
            0x80C0..=0x80C3 => r#"DCA Data Exchange Cluster"#,
            0x80C4 => r#"Banyan Systems"#,
            0x80C5 => r#"Banyan Systems"#,
            0x80C6 => r#"Pacer Software"#,
            0x80C7 => r#"Applitek Corporation"#,
            0x80C8..=0x80CC => r#"Intergraph Corporation"#,
            0x80CD..=0x80CE => r#"Harris Corporation"#,
            0x80CF..=0x80D2 => r#"Taylor Instrument"#,
            0x80D3..=0x80D4 => r#"Rosemount Corporation"#,
            0x80D5 => r#"IBM SNA Service on Ether"#,
            0x80DD => r#"Varian Associates"#,
            0x80DE..=0x80DF => r#"Integrated Solutions TRFS"#,
            0x80E0..=0x80E3 => r#"Allen-Bradley"#,
            0x80E4..=0x80F0 => r#"Datability"#,
            0x80F2 => r#"Retix"#,
            0x80F3 => r#"AppleTalk AARP (Kinetics)"#,
            0x80F4..=0x80F5 => r#"Kinetics"#,
            0x80F7 => r#"Apollo Computer"#,
            0x80FF => r#"Wellfleet Communications"#,
            0x8100 => {
                r#"Customer VLAN Tag Type (C-Tag, formerly called the Q-Tag) (initially Wellfleet)"#
            }
            0x8101..=0x8103 => r#"Wellfleet Communications"#,
            0x8107..=0x8109 => r#"Symbolics Private"#,
            0x8130 => r#"Hayes Microcomputers"#,
            0x8131 => r#"VG Laboratory Systems"#,
            0x8132..=0x8136 => r#"Bridge Communications"#,
            0x8137..=0x8138 => r#"Novell, Inc."#,
            0x8139..=0x813D => r#"KTI"#,
            0x8148 => r#"Logicraft"#,
            0x8149 => r#"Network Computing Devices"#,
            0x814A => r#"Alpha Micro"#,
            0x814C => r#"SNMP"#,
            0x814D => r#"BIIN"#,
            0x814E => r#"BIIN"#,
            0x814F => r#"Technically Elite Concept"#,
            0x8150 => r#"Rational Corp"#,
            0x8151..=0x8153 => r#"Qualcomm"#,
            0x815C..=0x815E => r#"Computer Protocol Pty Ltd"#,
            0x8164..=0x8166 => r#"Charles River Data System"#,
            0x817D => r#"XTP"#,
            0x817E => r#"SGI/Time Warner prop."#,
            0x8180 => r#"HIPPI-FP encapsulation"#,
            0x8181 => r#"STP, HIPPI-ST"#,
            0x8182 => r#"Reserved for HIPPI-6400"#,
            0x8183 => r#"Reserved for HIPPI-6400"#,
            0x8184..=0x818C => r#"Silicon Graphics prop."#,
            0x818D => r#"Motorola Computer"#,
            0x819A..=0x81A3 => r#"Qualcomm"#,
            0x81A4 => r#"ARAI Bunkichi"#,
            0x81A5..=0x81AE => r#"RAD Network Devices"#,
            0x81B7..=0x81B9 => r#"Xyplex"#,
            0x81CC..=0x81D5 => r#"Apricot Computers"#,
            0x81D6..=0x81DD => r#"Artisoft"#,
            0x81E6..=0x81EF => r#"Polygon"#,
            0x81F0..=0x81F2 => r#"Comsat Labs"#,
            0x81F3..=0x81F5 => r#"SAIC"#,
            0x81F6..=0x81F8 => r#"VG Analytical"#,
            0x8203..=0x8205 => r#"Quantum Software"#,
            0x8221..=0x8222 => r#"Ascom Banking Systems"#,
            0x823E..=0x8240 => r#"Advanced Encryption Syste"#,
            0x827F..=0x8282 => r#"Athena Programming"#,
            0x8263..=0x826A => r#"Charles River Data System"#,
            0x829A..=0x829B => r#"Inst Ind Info Tech"#,
            0x829C..=0x82AB => r#"Taurus Controls"#,
            0x82AC..=0x8693 => r#"Walker Richer & Quinn"#,
            0x8694..=0x869D => r#"Idea Courier"#,
            0x869E..=0x86A1 => r#"Computer Network Tech"#,
            0x86A3..=0x86AC => r#"Gateway Communications"#,
            0x86DB => r#"SECTRA"#,
            0x86DE => r#"Delta Controls"#,
            0x86DD => r#"Internet Protocol version 6 (IPv6)"#,
            0x86DF => r#"ATOMIC"#,
            0x86E0..=0x86EF => r#"Landis & Gyr Powers"#,
            0x8700..=0x8710 => r#"Motorola"#,
            0x876B => r#"TCP/IP Compression"#,
            0x876C => r#"IP Autonomous Systems"#,
            0x876D => r#"Secure Data"#,
            0x8808 => r#"IEEE Std 802.3 - Ethernet Passive Optical Network (EPON)"#,
            0x8809 => r#"Slow Protocols (Link Aggregation, OAM, etc.)"#,
            0x880B => r#"Point-to-Point Protocol (PPP)"#,
            0x880C => r#"General Switch Management Protocol (GSMP)"#,
            0x8822 => r#"Ethernet NIC hardware and software testing"#,
            0x8847 => r#"MPLS"#,
            0x8848 => r#"MPLS with upstream-assigned label"#,
            0x8861 => r#"Multicast Channel Allocation Protocol (MCAP)"#,
            0x8863 => r#"PPP over Ethernet (PPPoE) Discovery Stage"#,
            0x8864 => r#"PPP over Ethernet (PPPoE) Session Stage"#,
            0x888E => r#"IEEE Std 802.1X - Port-based network access control"#,
            0x88A8 => r#"IEEE Std 802.1Q - Service VLAN tag identifier (S-Tag)"#,
            0x8A96..=0x8A97 => r#"Invisible Software"#,
            0x88B5 => r#"IEEE Std 802 - Local Experimental Ethertype"#,
            0x88B6 => r#"IEEE Std 802 - Local Experimental Ethertype"#,
            0x88B7 => r#"IEEE Std 802 - OUI Extended Ethertype"#,
            0x88C7 => r#"IEEE Std 802.11 - Pre-Authentication (802.11i)"#,
            0x88CC => r#"IEEE Std 802.1AB - Link Layer Discovery Protocol (LLDP)"#,
            0x88E5 => r#"IEEE Std 802.1AE - Media Access Control Security"#,
            0x88E7 => r#"Provider Backbone Bridging Instance tag"#,
            0x88F5 => r#"IEEE Std 802.1Q  - Multiple VLAN Registration Protocol (MVRP)"#,
            0x88F6 => r#"IEEE Std 802.1Q - Multiple Multicast Registration Protocol (MMRP)"#,
            0x88F7 => r#"Precision Time Protocol"#,
            0x890D => r#"IEEE Std 802.11 - Fast Roaming Remote Request (802.11r)"#,
            0x8917 => r#"IEEE Std 802.21 - Media Independent Handover Protocol"#,
            0x8929 => r#"IEEE Std 802.1Qbe - Multiple I-SID Registration Protocol"#,
            0x893B => r#"TRILL Fine Grained Labeling (FGL)"#,
            0x8940 => r#"IEEE Std 802.1Qbg - ECP Protocol (also used in 802.1BR)"#,
            0x8946 => r#"TRILL RBridge Channel"#,
            0x8947 => r#"GeoNetworking as defined in ETSI EN 302 636-4-1"#,
            0x894F => r#"NSH (Network Service Header)"#,
            0x9000 => r#"Loopback"#,
            0x9001 => r#"3Com(Bridge) XNS Sys Mgmt"#,
            0x9002 => r#"3Com(Bridge) TCP-IP Sys"#,
            0x9003 => r#"3Com(Bridge) loop detect"#,
            0x9A22 => r#"Multi-Topology"#,
            0xA0ED => r#"LoWPAN encapsulation"#,
            0xB7EA => {
                r#"The Ethertype will be used to identify a "Channel" in which control messages are encapsulated as payload of GRE packets. When a GRE packet tagged with the Ethertype is received, the payload will be handed to the network processor for processing."#
            }
            0xFF00 => r#"BBN VITAL-LanBridge cache private protocol."#,
            0xFF00..=0xFF0F => r#"ISC Bunker Ramo private protocol."#,
            0xFFFF => r#"Reserved"#,
            _ => return None,
        })
    }
}