Source code for pcapkit.protocols.data.link.l2tp
# -*- coding: utf-8 -*-
"""data models for L2TP protocol"""
from typing import TYPE_CHECKING
from pcapkit.corekit.infoclass import info_final
from pcapkit.protocols.data.data import Data
from pcapkit.protocols.data.protocol import Protocol
if TYPE_CHECKING:
from typing import Optional
from pcapkit.const.l2tp.type import Type
__all__ = ['L2TP', 'Flags']
[docs]
@info_final
class Flags(Data):
"""Data model for L2TP flags."""
#: Type.
type: 'Type'
#: Length.
len: 'bool'
#: Sequence.
seq: 'bool'
#: Offset.
offset: 'bool'
#: Priority.
prio: 'bool'
#: Reserved bits 2, 3, 5 and 8-11 of the flags word, in their on-wire
#: positions (i.e. masked by ``0x34F0``). :rfc:`2661` §3.1 has them "set
#: to 0 on outgoing messages and ignored on incoming messages"; they are
#: carried verbatim so that a rebuild reproduces the word as it arrived.
reserved: 'int'
if TYPE_CHECKING:
def __init__(self, type: 'Type', len: 'bool', seq: 'bool', offset: 'bool', prio: 'bool', reserved: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,redefined-builtin,multiple-statements,line-too-long
[docs]
@info_final
class L2TP(Protocol):
"""Data model for L2TP packet."""
#: Flags; the version nibble is :attr:`version`.
flags: 'Flags'
#: Version.
version: 'int'
#: Length.
length: 'Optional[int]'
#: Tunnel ID.
tunnelid: 'int'
#: Session ID.
sessionid: 'int'
#: Sequence Number.
ns: 'Optional[int]'
#: Next Sequence Number.
nr: 'Optional[int]'
#: Offset Size.
offset: 'Optional[int]'
if TYPE_CHECKING:
#: Header length.
hdr_len: 'int'
#: Offset pad (:data:`None` unless ``flags.offset`` is set).
padding: 'Optional[bytes]'
#: Octets captured past the Length field, present only when there are
#: any.
trailer: 'bytes'
def __init__(self, flags: 'Flags', version: 'int', length: 'Optional[int]', tunnelid: 'int', sessionid: 'int',
ns: 'Optional[int]', nr: 'Optional[int]', offset: 'Optional[int]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,redefined-builtin,multiple-statements,line-too-long