Source code for pcapkit.const.icmpv6.type
# -*- coding: utf-8 -*-
# pylint: disable=line-too-long,consider-using-f-string
"""ICMPv6 Type Numbers
=========================
.. module:: pcapkit.const.icmpv6.type
This module contains the constant enumeration for **ICMPv6 Type Numbers**,
which is automatically generated from :class:`pcapkit.vendor.icmpv6.type.Type`.
"""
from typing import TYPE_CHECKING
from aenum import IntEnum
from pcapkit.corekit.enum import EnumRegistry
from pcapkit.utilities.exceptions import EnumValueError
if TYPE_CHECKING:
from typing import Any
__all__ = ['Type']
[docs]
class Type(EnumRegistry, IntEnum):
"""[Type] ICMPv6 Type Numbers [:rfc:`4443`]"""
#: Reserved
Reserved_0 = 0
#: Destination Unreachable [:rfc:`4443`]
Destination_Unreachable = 1
#: Packet Too Big [:rfc:`4443`]
Packet_Too_Big = 2
#: Time Exceeded [:rfc:`4443`]
Time_Exceeded = 3
#: Parameter Problem [:rfc:`4443`]
Parameter_Problem = 4
#: Private experimentation [:rfc:`4443`]
Private_experimentation_100 = 100
#: Private experimentation [:rfc:`4443`]
Private_experimentation_101 = 101
#: Reserved for expansion of ICMPv6 error messages [:rfc:`4443`]
Reserved_for_expansion_of_ICMPv6_error_messages = 127
#: Echo Request [:rfc:`4443`]
Echo_Request = 128
#: Echo Reply [:rfc:`4443`]
Echo_Reply = 129
#: Multicast Listener Query [:rfc:`2710`]
Multicast_Listener_Query = 130
#: Multicast Listener Report [:rfc:`2710`]
Multicast_Listener_Report = 131
#: Multicast Listener Done [:rfc:`2710`]
Multicast_Listener_Done = 132
#: Router Solicitation [:rfc:`4861`]
Router_Solicitation = 133
#: Router Advertisement [:rfc:`4861`]
Router_Advertisement = 134
#: Neighbor Solicitation [:rfc:`4861`]
Neighbor_Solicitation = 135
#: Neighbor Advertisement [:rfc:`4861`]
Neighbor_Advertisement = 136
#: Redirect Message [:rfc:`4861`]
Redirect_Message = 137
#: Router Renumbering [:rfc:`2894`]
Router_Renumbering = 138
#: ICMP Node Information Query [:rfc:`4620`]
ICMP_Node_Information_Query = 139
#: ICMP Node Information Response [:rfc:`4620`]
ICMP_Node_Information_Response = 140
#: Inverse Neighbor Discovery Solicitation Message [:rfc:`3122`]
Inverse_Neighbor_Discovery_Solicitation_Message = 141
#: Inverse Neighbor Discovery Advertisement Message [:rfc:`3122`]
Inverse_Neighbor_Discovery_Advertisement_Message = 142
#: Version 2 Multicast Listener Report [:rfc:`9777`]
Version_2_Multicast_Listener_Report = 143
#: Home Agent Address Discovery Request Message [:rfc:`6275`]
Home_Agent_Address_Discovery_Request_Message = 144
#: Home Agent Address Discovery Reply Message [:rfc:`6275`]
Home_Agent_Address_Discovery_Reply_Message = 145
#: Mobile Prefix Solicitation [:rfc:`6275`]
Mobile_Prefix_Solicitation = 146
#: Mobile Prefix Advertisement [:rfc:`6275`]
Mobile_Prefix_Advertisement = 147
#: Certification Path Solicitation Message [:rfc:`3971`]
Certification_Path_Solicitation_Message = 148
#: Certification Path Advertisement Message [:rfc:`3971`]
Certification_Path_Advertisement_Message = 149
#: ICMP messages utilized by experimental mobility protocols such as
#: Seamoby [:rfc:`4065`]
ICMP_messages_utilized_by_experimental_mobility_protocols_such_as_Seamoby = 150
#: Multicast Router Advertisement [:rfc:`4286`]
Multicast_Router_Advertisement = 151
#: Multicast Router Solicitation [:rfc:`4286`]
Multicast_Router_Solicitation = 152
#: Multicast Router Termination [:rfc:`4286`]
Multicast_Router_Termination = 153
#: FMIPv6 Messages [:rfc:`5568`]
FMIPv6_Messages = 154
#: RPL Control Message [:rfc:`6550`]
RPL_Control_Message = 155
#: ILNPv6 Locator Update Message [:rfc:`6743`]
ILNPv6_Locator_Update_Message = 156
#: Duplicate Address Request [:rfc:`6775`]
Duplicate_Address_Request = 157
#: Duplicate Address Confirmation [:rfc:`6775`]
Duplicate_Address_Confirmation = 158
#: MPL Control Message [:rfc:`7731`]
MPL_Control_Message = 159
#: Extended Echo Request [:rfc:`8335`]
Extended_Echo_Request = 160
#: Extended Echo Reply [:rfc:`8335`]
Extended_Echo_Reply = 161
#: Private experimentation [:rfc:`4443`]
Private_experimentation_200 = 200
#: Private experimentation [:rfc:`4443`]
Private_experimentation_201 = 201
#: Reserved for expansion of ICMPv6 informational messages [:rfc:`4443`]
Reserved_for_expansion_of_ICMPv6_informational_messages = 255
[docs]
@classmethod
def _validate_value(cls, value: 'Any') -> 'None':
"""Reject ``value`` unless it passes the range check :meth:`_missing_` makes.
Overrides :meth:`~pcapkit.corekit.enum.EnumLookup._validate_value`
with that check and the message it raises, so
:meth:`~pcapkit.corekit.enum.EnumRegistry.register` refuses exactly the
values :meth:`~pcapkit.corekit.enum.EnumLookup.get` refuses, in the
same words (:issue:`1816`).
Args:
value: Value about to be looked up or minted.
Raises:
EnumValueError: If ``value`` fails that check. A
:exc:`ValueError`, so an ``except ValueError`` caller is
unaffected.
"""
if not (isinstance(value, int) and 0 <= value <= 255):
raise EnumValueError('%r is not a valid %s' % (value, cls.__name__))
[docs]
@classmethod
def _missing_(cls, value: 'int') -> 'Type':
"""Lookup function used when value is not found.
Args:
value: Value to get enum item.
"""
if not (isinstance(value, int) and 0 <= value <= 255):
raise ValueError('%r is not a valid %s' % (value, cls.__name__))
if 5 <= value <= 99:
#: Unassigned
return cls._unregistered_member(value, 'Unassigned')
if 102 <= value <= 126:
#: Unassigned
return cls._unregistered_member(value, 'Unassigned')
if 162 <= value <= 199:
#: Unassigned
return cls._unregistered_member(value, 'Unassigned')
if 202 <= value <= 254:
#: Unassigned
return cls._unregistered_member(value, 'Unassigned')
return cls._unregistered_member(value, 'Unassigned')