Source code for pcapkit.const.arp.hardware

# -*- coding: utf-8 -*-
# pylint: disable=line-too-long
"""Hardware Types [:rfc:`826`][:rfc:`5494`]"""

from aenum import IntEnum, extend_enum

__all__ = ['Hardware']


[docs]class Hardware(IntEnum): """[Hardware] Hardware Types [:rfc:`826`][:rfc:`5494`]""" _ignore_ = 'Hardware _' Hardware = vars() #: [:rfc:`5494`] Hardware['Reserved_0'] = 0 #: [Jon Postel] Hardware['Ethernet'] = 1 #: [Jon Postel] Hardware['Experimental_Ethernet'] = 2 #: [Philip Koch] Hardware['Amateur_Radio_AX_25'] = 3 #: [Avri Doria] Hardware['Proteon_ProNET_Token_Ring'] = 4 #: [Gill Pratt] Hardware['Chaos'] = 5 #: [Jon Postel] Hardware['IEEE_802_Networks'] = 6 #: [:rfc:`1201`] Hardware['ARCNET'] = 7 #: [Jon Postel] Hardware['Hyperchannel'] = 8 #: [Tom Unger] Hardware['Lanstar'] = 9 #: [Mike Burrows] Hardware['Autonet_Short_Address'] = 10 #: [Joyce K Reynolds] Hardware['LocalTalk'] = 11 #: [Joseph Murdock] Hardware['LocalNet'] = 12 #: [Rajiv Dhingra] Hardware['Ultra_Link'] = 13 #: [George Clapp] Hardware['SMDS'] = 14 #: [Andy Malis] Hardware['Frame_Relay'] = 15 #: [JXB2] Hardware['Asynchronous_Transmission_Mode_16'] = 16 #: [Jon Postel] Hardware['HDLC'] = 17 #: [:rfc:`4338`] Hardware['Fibre_Channel'] = 18 #: [:rfc:`2225`] Hardware['Asynchronous_Transmission_Mode_19'] = 19 #: [Jon Postel] Hardware['Serial_Line'] = 20 #: [Mike Burrows] Hardware['Asynchronous_Transmission_Mode_21'] = 21 #: [Herb Jensen] Hardware['MIL_STD_188_220'] = 22 #: [Jonathan Stone] Hardware['Metricom'] = 23 #: [Myron Hattig] Hardware['IEEE_1394_1995'] = 24 #: [Mitsuru Maruyama][:rfc:`2176`] Hardware['MAPOS'] = 25 #: [Marion Pitts] Hardware['Twinaxial'] = 26 #: [Kenji Fujisawa] Hardware['EUI_64'] = 27 #: [Jean Michel Pittet] Hardware['HIPARP'] = 28 #: [Scott Guthery] Hardware['IP_And_ARP_Over_ISO_7816_3'] = 29 #: [Jerome Etienne] Hardware['ARPSec'] = 30 #: [:rfc:`3456`] Hardware['IPsec_Tunnel'] = 31 #: [:rfc:`4391`] Hardware['InfiniBand'] = 32 #: [Jeff Anderson, Telecommunications Industry of America (TIA) TR-8.5 Formulating Group, <cja015&motorola.com>, June 2004] Hardware['TIA_102_Project_25_Common_Air_Interface'] = 33 #: [Scott Guthery 2] Hardware['Wiegand_Interface'] = 34 #: [Inaky Perez-Gonzalez] Hardware['Pure_IP'] = 35 #: [:rfc:`5494`] Hardware['HW_EXP1'] = 36 #: [Tseng-Hui Lin] Hardware['HFI'] = 37 #: [:rfc:`5494`] Hardware['HW_EXP2'] = 256 #: [Geoffroy Gramaize] Hardware['AEthernet'] = 257 #: [:rfc:`5494`] Hardware['Reserved_65535'] = 65535
[docs] @staticmethod def get(key, default=-1): """Backport support for original codes.""" if isinstance(key, int): return Hardware(key) if key not in Hardware._member_map_: # pylint: disable=no-member extend_enum(Hardware, key, default) return Hardware[key]
[docs] @classmethod def _missing_(cls, value): """Lookup function used when value is not found.""" if not (isinstance(value, int) and 0 <= value <= 65535): raise ValueError('%r is not a valid %s' % (value, cls.__name__)) if 38 <= value <= 255: extend_enum(cls, 'Unassigned [%d]' % value, value) return cls(value) if 258 <= value <= 65534: extend_enum(cls, 'Unassigned [%d]' % value, value) return cls(value) return super()._missing_(value)