Source code for pcapkit.const.ipv4.option_number
# -*- coding: utf-8 -*-
# pylint: disable=line-too-long
"""IP Option Numbers"""
from aenum import IntEnum, extend_enum
__all__ = ['OptionNumber']
[docs]class OptionNumber(IntEnum):
"""[OptionNumber] IP Option Numbers"""
_ignore_ = 'OptionNumber _'
OptionNumber = vars()
#: [:rfc:`791`][Jon Postel] End of Options List
OptionNumber['EOOL'] = 0
#: [:rfc:`791`][Jon Postel] No Operation
OptionNumber['NOP'] = 1
#: [:rfc:`1108`] Security
OptionNumber['SEC'] = 130
#: [:rfc:`791`][Jon Postel] Loose Source Route
OptionNumber['LSR'] = 131
#: [:rfc:`791`][Jon Postel] Time Stamp
OptionNumber['TS'] = 68
#: [:rfc:`1108`] Extended Security
OptionNumber['E_SEC'] = 133
#: [draft-ietf-cipso-ipsecurity-01] Commercial Security
OptionNumber['CIPSO'] = 134
#: [:rfc:`791`][Jon Postel] Record Route
OptionNumber['RR'] = 7
#: [:rfc:`791`][Jon Postel][:rfc:`6814`] Stream ID
OptionNumber['SID'] = 136
#: [:rfc:`791`][Jon Postel] Strict Source Route
OptionNumber['SSR'] = 137
#: [ZSu] Experimental Measurement
OptionNumber['ZSU'] = 10
#: [:rfc:`1063`][:rfc:`1191`] MTU Probe
OptionNumber['MTUP'] = 11
#: [:rfc:`1063`][:rfc:`1191`] MTU Reply
OptionNumber['MTUR'] = 12
#: [Greg Finn] Experimental Flow Control
OptionNumber['FINN'] = 205
#: [Deborah Estrin][:rfc:`6814`] Experimental Access Control
OptionNumber['VISA'] = 142
#: [VerSteeg][:rfc:`6814`]
OptionNumber['ENCODE'] = 15
#: [Lee] IMI Traffic Descriptor
OptionNumber['IMITD'] = 144
#: [:rfc:`1385`][:rfc:`6814`] Extended Internet Protocol
OptionNumber['EIP'] = 145
#: [:rfc:`1393`][:rfc:`6814`] Traceroute
OptionNumber['TR'] = 82
#: [Ullmann IPv7][:rfc:`6814`] Address Extension
OptionNumber['ADDEXT'] = 147
#: [:rfc:`2113`] Router Alert
OptionNumber['RTRALT'] = 148
#: [Charles Bud Graff][:rfc:`6814`] Selective Directed Broadcast
OptionNumber['SDB'] = 149
#: Unassigned (Released 18 October 2005)
OptionNumber['Unassigned_150'] = 150
#: [Andy Malis][:rfc:`6814`] Dynamic Packet State
OptionNumber['DPS'] = 151
#: [Dino Farinacci][:rfc:`6814`] Upstream Multicast Pkt.
OptionNumber['UMP'] = 152
#: [:rfc:`4782`] Quick-Start
OptionNumber['QS'] = 25
#: [:rfc:`4727`] RFC3692-style Experiment
OptionNumber['EXP_30'] = 30
#: [:rfc:`4727`] RFC3692-style Experiment
OptionNumber['EXP_94'] = 94
#: [:rfc:`4727`] RFC3692-style Experiment
OptionNumber['EXP_158'] = 158
#: [:rfc:`4727`] RFC3692-style Experiment
OptionNumber['EXP_222'] = 222
[docs] @staticmethod
def get(key, default=-1):
"""Backport support for original codes."""
if isinstance(key, int):
return OptionNumber(key)
if key not in OptionNumber._member_map_: # pylint: disable=no-member
extend_enum(OptionNumber, key, default)
return OptionNumber[key]
[docs] @classmethod
def _missing_(cls, value):
"""Lookup function used when value is not found."""
if not (isinstance(value, int) and 0 <= value <= 255):
raise ValueError('%r is not a valid %s' % (value, cls.__name__))
extend_enum(cls, 'Unassigned [%d]' % value, value)
return cls(value)