Source code for pcapkit.protocols.schema.link.vlan

# -*- coding: utf-8 -*-
# mypy: disable-error-code=assignment
"""header schema for 802.1Q Customer VLAN Tag Type protocol"""

from typing import TYPE_CHECKING

from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
from pcapkit.const.vlan.priority_level import PriorityLevel as Enum_PriorityLevel
from pcapkit.corekit.fields.misc import PayloadField
from pcapkit.corekit.fields.numbers import EnumField, UInt8Field, UInt16Field
from pcapkit.corekit.fields.strings import BitField
from pcapkit.protocols.schema.schema import Schema, schema_final
from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING

__all__ = ['VLAN', 'TCI']

if TYPE_CHECKING:
    from pcapkit.protocols.protocol import ProtocolBase as Protocol

if SPHINX_TYPE_CHECKING:
    from typing_extensions import TypedDict

[docs] class TCIType(TypedDict): """Type of 802.1Q Customer VLAN Tag Type tag control information.""" #: Priority code point. pcp: int #: Drop eligible indicator. dei: int #: VLAN identifier. vid: int
[docs] @schema_final class TCI(Schema): """Header schema for 802.1Q Customer VLAN Tag Type tag control information.""" #: Priority code point. pcp: 'Enum_PriorityLevel' = EnumField(length=1, bit_length=3, namespace=Enum_PriorityLevel) #: Drop eligible indicator. dei: 'int' = UInt8Field(bit_length=1) #: VLAN identifier. vid: 'int' = UInt16Field(bit_length=12) if TYPE_CHECKING: def __init__(self, pcp: 'Enum_PriorityLevel', dei: 'int', vid: 'int') -> 'None': ...
[docs] @schema_final class VLAN(Schema): """Header schema for 802.1Q Customer VLAN Tag Type packet.""" #: Tag control information. tci: 'TCIType' = BitField( length=2, namespace={ 'pcp': (0, 3), 'dei': (3, 1), 'vid': (4, 12), }, ) #: EtherType. type: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType) #: Payload. payload: 'bytes' = PayloadField() if TYPE_CHECKING: def __init__(self, tci: 'TCIType', type: 'Enum_EtherType', payload: 'bytes | Protocol | Schema') -> 'None': ...