Source code for pcapkit.protocols.data.link.arp
# -*- coding: utf-8 -*-
"""data models for address resolution protocol family"""
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 ipaddress import IPv4Address, IPv6Address
from pcapkit.const.arp.hardware import Hardware
from pcapkit.const.arp.operation import Operation
from pcapkit.const.reg.ethertype import EtherType
__all__ = ['Address', 'Type', 'ARP']
[docs]
@info_final
class Address(Data):
"""Data model for ARP addresses."""
#: Hardware address.
hardware: 'str'
#: Protocol address.
protocol: 'str | IPv4Address | IPv6Address'
if TYPE_CHECKING:
def __init__(self, hardware: 'str', protocol: 'str | IPv4Address | IPv6Address') -> 'None': ... # pylint: disable=line-too-long,super-init-not-called,unused-argument,multiple-statements
[docs]
@info_final
class Type(Data):
"""Data model for ARP type."""
#: Hardware type.
hardware: 'Hardware'
#: Protocol type.
protocol: 'EtherType | str'
if TYPE_CHECKING:
def __init__(self, hardware: 'Hardware', protocol: 'EtherType | str') -> 'None': ... # pylint: disable=line-too-long,super-init-not-called,unused-argument,multiple-statements
[docs]
@info_final
class ARP(Protocol):
"""Data model for ARP packet."""
#: Hardware type.
htype: 'Hardware'
#: Protocol type.
ptype: 'EtherType'
#: Hardware address length.
hlen: 'int'
#: Protocol address length.
plen: 'int'
#: Operation code.
oper: 'Operation'
#: Sender hardware address.
sha: 'str'
#: Sender protocol address.
spa: 'str | IPv4Address | IPv6Address'
#: Target hardware address.
tha: 'str'
#: Target protocol address.
tpa: 'str | IPv4Address | IPv6Address'
#: Header length.
len: 'int'
if TYPE_CHECKING:
def __init__(self, htype: 'Hardware', ptype: 'EtherType', hlen: 'int', plen: 'int', # pylint: disable=line-too-long,super-init-not-called,unused-argument,multiple-statements
oper: 'Operation', sha: 'str', spa: 'str | IPv4Address | IPv6Address', # pylint: disable=unused-argument
tha: 'str', tpa: 'str | IPv4Address | IPv6Address', len: 'int') -> 'None': ... # pylint: disable=unused-argument,redefined-builtin