Source code for pcapkit.protocols.internet.ip

# -*- coding: utf-8 -*-
"""IP - Internet Protocol
============================

.. module:: pcapkit.protocols.internet.ip

:mod:`pcapkit.protocols.internet.ip` contains
:class:`~pcapkit.protocols.internet.ip.IP` only,
which is a base class for Internet Protocol (IP)
protocol family [*]_, e.g.
:class:`~pcapkit.protocols.internet.ipv4.IPv4` and
:class:`~pcapkit.protocols.internet.ipv6.IPv6`.

.. [*] 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, _ST

if TYPE_CHECKING:
    from typing_extensions import Literal

__all__ = ['IP']


[docs] class IP(Internet[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method """Base class for the IP protocol family. - Internet Protocol version 4 (:class:`~pcapkit.protocols.internet.ipv4.IPv4`) [:rfc:`791`] - Internet Protocol version 6 (:class:`~pcapkit.protocols.internet.ipv6.IPv6`) [:rfc:`8200`] The IPsec protocols (:class:`~pcapkit.protocols.internet.ah.AH` and :class:`~pcapkit.protocols.internet.esp.ESP`) derive from :class:`~pcapkit.protocols.internet.ipsec.IPsec` instead. """ ########################################################################## # 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')