Source code for pcapkit.protocols.internet.ip
# -*- coding: utf-8 -*-
"""IP - Internet Protocol
============================
:mod:`pcapkit.protocols.internet.ip` contains
:class:`~pcapkit.protocols.internet.ip.IP` only,
which is a base class for Internet Protocol (IP)
protocol family [*]_, eg.
:class:`~pcapkit.protocols.internet.ipv4.IPv4`,
:class:`~pcapkit.protocols.internet.ipv6.IPv6`, and
:class:`~pcapkit.protocols.internet.ipsec.IPsec`.
.. [*] https://en.wikipedia.org/wiki/Internet_Protocol
"""
from typing import TYPE_CHECKING, Generic
from pcapkit.protocols.internet.internet import Internet
from pcapkit.protocols.protocol import PT
if TYPE_CHECKING:
from typing_extensions import Literal
__all__ = ['IP']
[docs]class IP(Internet[PT], Generic[PT]): # pylint: disable=abstract-method
"""This class implements all protocols in IP family.
- Internet Protocol version 4 (:class:`~pcapkit.protocols.internet.ipv4.IPv4`) [:rfc:`791`]
- Internet Protocol version 6 (:class:`~pcapkit.protocols.internet.ipv6.IPv6`) [:rfc:`2460`]
- Authentication Header (:class:`pcapkit.~protocols.internet.ah.AH`) [:rfc:`4302`]
- Encapsulating Security Payload (:class:`~pcapkit.protocols.internet.esp.ESP`) [:rfc:`4303`]
"""
##########################################################################
# Methods.
##########################################################################
[docs] @classmethod
def id(cls) -> 'tuple[Literal["IPv4"], Literal["IPv6"]]':
"""Index ID of the protocol.
Returns:
Index ID of the protocol.
"""
return ('IPv4', 'IPv6')