ICMP - Internet Control Message Protocol¶
pcapkit.protocols.internet.icmp contains
ICMP only,
which is a base class for Internet Control Message
Protocol (ICMP) protocol family [*], e.g.
ICMPv4 and
ICMPv6. Constructing the base gives the
one its version keyword names, from octets or from fields, and is refused
without it, since an ICMP message carries no version of its own. Its
from_data() gives the one whose data
model it is handed (#2574).
- class pcapkit.protocols.internet.icmp.ICMP[_PT: Data, _ST: Schema](file=None, length=None, **kwargs)[source]¶
Bases:
Internet[_PT,_ST],Generic[_PT,_ST]Abstract base class for ICMP protocol family.
It dispatches where the version is known, never giving an instance of this class (#2574).
versionnames the member, from octets or from fields, and nothing else does: an ICMP message carries no version of its own, and no field picks a member, so either is refused without it.from_data()gives the member whose data model it is handed, and refuses adict. See__new__().- classmethod from_data(data, **kwargs)[source]¶
Create protocol instance from data.
- Parameters:
**kwargs (
Any) – AsProtocol.from_data.
- Return type:
- Returns:
Protocol instance; on this class, an instance of the member whose data model
datais.- Raises:
ProtocolError – If
datais neither member’s data model, on this class. Adictis refused: it carries no version, and its keys need not tell the members apart, as an Echo message’s do not.
- __init__(file=None, length=None, *, version=None, **kwargs)[source]¶
Initialisation.
- Parameters:
version (
Literal[4,6] |None) – Version of ICMP,4or6: the member__new__()picks. Building from fields, it must be this class’s own. Parsing, it is handed on unread, as the enclosing IP layer passes its own version under this name to the layer it carries.**kwargs (
Any) – AsProtocol.__init__.
- Raises:
ProtocolError – If, building from fields,
versionnames neither member, or is not this class’s own version: that of the member it is or derives from, which a subclass outside the members does not have.
- static __new__(cls, file=None, length=None, **kwargs)[source]¶
Create the member a construction of this class describes.
The
versionkeyword names the member, on either path, and nothing else does: an ICMP message carries no version of its own, and no field picks a member. That member’s__init__then runs with the same arguments. A subclass of this class is created as itself.- Parameters:
- Return type:
- Returns:
An uninitialised instance of the member.
- Raises:
ProtocolError – If
versionis missing, or names neither member. Without it, octets are refused as fields are: the IP layer names the version, by protocol number 1 or 58.
Footnotes