# -*- coding: utf-8 -*-# mypy: disable-error-code=assignment# pylint: disable=line-too-long,consider-using-f-string"""Option Types==================.. module:: pcapkit.const.pcapng.option_typeThis module contains the constant enumeration for **Option Types**,which is automatically generated from :class:`pcapkit.vendor.pcapng.option_type.OptionType`."""fromcollectionsimportdefaultdictfromtypingimportTYPE_CHECKINGfromaenumimportStrEnum,extend_enum__all__=['OptionType']ifTYPE_CHECKING:fromtypingimportAny,DefaultDict,Optional,Type
[docs]classOptionType(StrEnum):"""[OptionType] Option Types"""ifTYPE_CHECKING:#: Short name of the option type.opt_name:'str'#: Numeric value of the option type.opt_value:'int'#: Mapping of members based on namespace.__members_ns__:'DefaultDict[str, dict[int, OptionType]]'=defaultdict(dict)def__new__(cls,value:'int',name:'str'='opt_unknown')->'Type[OptionType]':temp='%s [%d]'%(name,value)obj=str.__new__(cls,temp)obj._value_=tempobj.opt_name=nameobj.opt_value=valuenamespace=name.split('_',maxsplit=1)[0]cls.__members_ns__[namespace][value]=objreturnobjdef__repr__(self)->'str':return"<%s.%s: %d>"%(self.__class__.__name__,self.opt_name,self.opt_value)def__str__(self)->'str':return'%s [%d]'%(self.opt_name,self.opt_value)def__int__(self)->'int':returnself.opt_valuedef__lt__(self,other:'OptionType')->'bool':returnself.opt_value<otherdef__gt__(self,other:'OptionType')->'bool':returnself.opt_value>otherdef__le__(self,other:'OptionType')->'bool':returnself.opt_value<=otherdef__ge__(self,other:'OptionType')->'bool':returnself.opt_value>=otherdef__eq__(self,other:'Any')->'bool':returnself.opt_value==otherdef__ne__(self,other:'Any')->'bool':returnself.opt_value!=otherdef__hash__(self)->'int':returnhash(self.opt_value)#: opt_endofoptopt_endofopt:'OptionType'=0,'opt_endofopt'#: opt_commentopt_comment:'OptionType'=1,'opt_comment'#: opt_customopt_custom_2988:'OptionType'=2988,'opt_custom'#: opt_customopt_custom_2989:'OptionType'=2989,'opt_custom'#: opt_customopt_custom_19372:'OptionType'=19372,'opt_custom'#: opt_customopt_custom_19373:'OptionType'=19373,'opt_custom'#: if_nameif_name:'OptionType'=2,'if_name'#: if_descriptionif_description:'OptionType'=3,'if_description'#: if_IPv4addrif_IPv4addr:'OptionType'=4,'if_IPv4addr'#: if_IPv6addrif_IPv6addr:'OptionType'=5,'if_IPv6addr'#: if_MACaddrif_MACaddr:'OptionType'=6,'if_MACaddr'#: if_EUIaddrif_EUIaddr:'OptionType'=7,'if_EUIaddr'#: if_speedif_speed:'OptionType'=8,'if_speed'#: if_tsresolif_tsresol:'OptionType'=9,'if_tsresol'#: if_tzoneif_tzone:'OptionType'=10,'if_tzone'#: if_filterif_filter:'OptionType'=11,'if_filter'#: if_osif_os:'OptionType'=12,'if_os'#: if_fcslenif_fcslen:'OptionType'=13,'if_fcslen'#: if_tsoffsetif_tsoffset:'OptionType'=14,'if_tsoffset'#: if_hardwareif_hardware:'OptionType'=15,'if_hardware'#: if_txspeedif_txspeed:'OptionType'=16,'if_txspeed'#: if_rxspeedif_rxspeed:'OptionType'=17,'if_rxspeed'#: epb_flagsepb_flags:'OptionType'=2,'epb_flags'#: epb_hashepb_hash:'OptionType'=3,'epb_hash'#: epb_dropcountepb_dropcount:'OptionType'=4,'epb_dropcount'#: epb_packetidepb_packetid:'OptionType'=5,'epb_packetid'#: epb_queueepb_queue:'OptionType'=6,'epb_queue'#: epb_verdictepb_verdict:'OptionType'=7,'epb_verdict'#: ns_dnsnamens_dnsname:'OptionType'=2,'ns_dnsname'#: ns_dnsIP4addrns_dnsIP4addr:'OptionType'=3,'ns_dnsIP4addr'#: ns_dnsIP6addrns_dnsIP6addr:'OptionType'=4,'ns_dnsIP6addr'#: isb_starttimeisb_starttime:'OptionType'=2,'isb_starttime'#: isb_endtimeisb_endtime:'OptionType'=3,'isb_endtime'#: isb_ifrecvisb_ifrecv:'OptionType'=4,'isb_ifrecv'#: isb_ifdropisb_ifdrop:'OptionType'=5,'isb_ifdrop'#: isb_filteracceptisb_filteraccept:'OptionType'=6,'isb_filteraccept'#: isb_osdropisb_osdrop:'OptionType'=7,'isb_osdrop'#: isb_usrdelivisb_usrdeliv:'OptionType'=8,'isb_usrdeliv'#: pack_flagspack_flags:'OptionType'=2,'pack_flags'#: pack_hashpack_hash:'OptionType'=3,'pack_hash'@staticmethoddefget(key:'int | str',default:'int'=-1,*,namespace:'str'='opt')->'OptionType':"""Backport support for original codes. Args: key: Key to get enum item. default: Default value if not found. namespace: Namespace of the enum item. :meta private: """ifisinstance(key,int):temp_ns=OptionType.__members_ns__.get('opt',{}).copy()temp_ns.update(OptionType.__members_ns__.get(namespace,{}))ifkeyintemp_ns:returntemp_ns[key]returnextend_enum(OptionType,'%s_unknown_%d'%(namespace,key),key,'%s_unknown'%namespace)ifkeyinOptionType.__members__:returngetattr(OptionType,key)returnextend_enum(OptionType,key,default,key)
[docs]@classmethoddef_missing_(cls,value:'int')->'OptionType':"""Lookup function used when value is not found. Args: value: Value to get enum item. """ifnot(isinstance(value,int)and0<=value<=0xFFFF):raiseValueError('%r is not a valid %s'%(value,cls.__name__))ifvalueincls.__members_ns__.get('opt',{}):returncls.__members_ns__['opt'][value]returnextend_enum(cls,'opt_unknown_%d'%value,value,'opt_unknown')