Source code for pcapkit.protocols.pcap.header

# -*- coding: utf-8 -*-
#: pylint: disable=line-too-long
"""global header

:mod:`pcapkit.protocols.pcap.header` contains
:class:`~pcapkit.protocols.pcap.header.Header`
only, which implements extractor for global
headers of PCAP, whose structure is described
as below:

.. code:: c

    typedef struct pcap_hdr_s {
        guint32 magic_number;   /* magic number */
        guint16 version_major;  /* major version number */
        guint16 version_minor;  /* minor version number */
        gint32  thiszone;       /* GMT to local correction */
        guint32 sigfigs;        /* accuracy of timestamps */
        guint32 snaplen;        /* max length of captured packets, in octets */
        guint32 network;        /* data link type */
    } pcap_hdr_t;

"""
import io
import sys

from pcapkit.const.reg.linktype import LinkType as LINKTYPE
from pcapkit.corekit.infoclass import Info
from pcapkit.corekit.version import VersionInfo
from pcapkit.protocols.protocol import Protocol
from pcapkit.utilities.exceptions import EndianError, FileError, UnsupportedCall

__all__ = ['Header']

#: Mapping of PCAP file magic numbers.
_MAGIC_NUM = {
    ('big', True):      b'\xa1\xb2\x3c\x4d',
    ('big', False):     b'\xa1\xb2\xc3\xd4',
    ('little', True):   b'\x4d\x3c\xb2\xa1',
    ('little', False):  b'\xd4\xc3\xb2\xa1',
}