Source code for pcapkit.const.sctp.chunk
# -*- coding: utf-8 -*-
# pylint: disable=line-too-long,consider-using-f-string
"""SCTP Chunk Types
======================
.. module:: pcapkit.const.sctp.chunk
This module contains the constant enumeration for **SCTP Chunk Types**,
which is automatically generated from :class:`pcapkit.vendor.sctp.chunk.Chunk`.
"""
from aenum import IntEnum, extend_enum
__all__ = ['Chunk']
[docs]
class Chunk(IntEnum):
"""[Chunk] SCTP Chunk Types"""
#: Payload Data (DATA) [:rfc:`9260`]
Payload_Data = 0
#: Initiation (INIT) [:rfc:`9260`]
Initiation = 1
#: Initiation Acknowledgement (INIT ACK) [:rfc:`9260`]
Initiation_Acknowledgement = 2
#: Selective Acknowledgement (SACK) [:rfc:`9260`]
Selective_Acknowledgement = 3
#: Heartbeat Request (HEARTBEAT) [:rfc:`9260`]
Heartbeat_Request = 4
#: Heartbeat Acknowledgement (HEARTBEAT ACK) [:rfc:`9260`]
Heartbeat_Acknowledgement = 5
#: Abort (ABORT) [:rfc:`9260`]
Abort = 6
#: Shutdown (SHUTDOWN) [:rfc:`9260`]
Shutdown = 7
#: Shutdown Acknowledgement (SHUTDOWN ACK) [:rfc:`9260`]
Shutdown_Acknowledgement = 8
#: Operation Error (ERROR) [:rfc:`9260`]
Operation_Error = 9
#: State Cookie (COOKIE ECHO) [:rfc:`9260`]
State_Cookie = 10
#: Cookie Acknowledgement (COOKIE ACK) [:rfc:`9260`]
Cookie_Acknowledgement = 11
#: Reserved for Explicit Congestion Notification Echo (ECNE) [:rfc:`9260`]
Reserved_for_Explicit_Congestion_Notification_Echo = 12
#: Reserved for Congestion Window Reduced (CWR) [:rfc:`9260`]
Reserved_for_Congestion_Window_Reduced = 13
#: Shutdown Complete (SHUTDOWN COMPLETE) [:rfc:`9260`]
Shutdown_Complete = 14
#: Authentication Chunk (AUTH) [:rfc:`4895`]
Authentication_Chunk = 15
#: Reserved for IETF-defined Chunk Extensions [:rfc:`9260`]
Reserved_for_IETF_defined_Chunk_Extensions_63 = 63
#: Payload Data supporting Interleaving (I-DATA) [:rfc:`8260`]
Payload_Data_supporting_Interleaving = 64
#: DTLS (TEMPORARY - registered 2026-02-20, expires 2027-02-20) [draft-ietf-
#: tsvwg-sctp-dtls-chunk-01]
DTLS = 65
#: Reserved for IETF-defined Chunk Extensions [:rfc:`9260`]
Reserved_for_IETF_defined_Chunk_Extensions_127 = 127
#: Address Configuration Acknowledgment (ASCONF-ACK) [:rfc:`5061`]
Address_Configuration_Acknowledgment = 128
#: Unassigned
Unassigned_129 = 129
#: Re-configuration Chunk (RE-CONFIG) [:rfc:`6525`]
Re_configuration_Chunk = 130
#: Unassigned
Unassigned_131 = 131
#: Padding Chunk (PAD) [:rfc:`4820`]
Padding_Chunk = 132
#: Reserved for IETF-defined Chunk Extensions [:rfc:`9260`]
Reserved_for_IETF_defined_Chunk_Extensions_191 = 191
#: Forward TSN [:rfc:`3758`]
Forward_TSN = 192
#: Address Configuration Change Chunk (ASCONF) [:rfc:`5061`]
Address_Configuration_Change_Chunk = 193
#: I-FORWARD-TSN [:rfc:`8260`]
I_FORWARD_TSN = 194
#: Reserved for IETF-defined Chunk Extensions [:rfc:`9260`]
Reserved_for_IETF_defined_Chunk_Extensions_255 = 255
@staticmethod
def get(key: 'int | str', default: 'int' = -1) -> 'Chunk':
"""Backport support for original codes.
Args:
key: Key to get enum item.
default: Default value if not found.
:meta private:
"""
if isinstance(key, int):
return Chunk(key)
if key not in Chunk._member_map_: # pylint: disable=no-member
return extend_enum(Chunk, key, default)
return Chunk[key] # type: ignore[misc]
[docs]
@classmethod
def _missing_(cls, value: 'int') -> 'Chunk':
"""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 16 <= value <= 62:
#: Unassigned
return extend_enum(cls, 'Unassigned_%d' % value, value)
if 66 <= value <= 126:
#: Unassigned
return extend_enum(cls, 'Unassigned_%d' % value, value)
if 133 <= value <= 190:
#: Unassigned
return extend_enum(cls, 'Unassigned_%d' % value, value)
if 195 <= value <= 254:
#: Unassigned
return extend_enum(cls, 'Unassigned_%d' % value, value)
return super()._missing_(value)