IPv4 - Internet Protocol version 4

pcapkit.protocols.internet.ipv4 contains IPv4 only, which implements extractor for Internet Protocol version 4 (IPv4) [*], whose structure is described as below:

Octets

Bits

Name

Description

0

0

ip.version

Version (4)

0

4

ip.hdr_len

Internal Header Length (IHL)

1

8

ip.dsfield.dscp

Differentiated Services Code Point (DSCP)

1

14

ip.dsfield.ecn

Explicit Congestion Notification (ECN)

2

16

ip.len

Total Length

4

32

ip.id

Identification

6

48

Reserved Bit (must be \x00)

6

49

ip.flags.df

Don’t Fragment (DF)

6

50

ip.flags.mf

More Fragments (MF)

6

51

ip.frag_offset

Fragment Offset

8

64

ip.ttl

Time To Live (TTL)

9

72

ip.proto

Protocol (Transport Layer)

10

80

ip.checksum

Header Checksum

12

96

ip.src

Source IP Address

16

128

ip.dst

Destination IP Address

20

160

ip.options

IP Options (if IHL > 5)

class pcapkit.protocols.internet.ipv4.IPv4(file=None, length=None, **kwargs)[source]

Bases: IP[IPv4, IPv4]

This class implements Internet Protocol version 4.

This class currently supports parsing of the following IPv4 options, which are directly mapped to the pcapkit.const.ipv4.option_number.OptionNumber enumeration:

property name: Literal['Internet Protocol version 4']

Name of corresponding protocol.

property length: int

Header length of corresponding protocol.

property protocol: TransType

Name of next layer protocol.

property src: IPv4Address

Source IP address.

property dst: IPv4Address

Destination IP address.

classmethod id()[source]

Index ID of the protocol.

Return type:

tuple[Literal['IPv4']]

Returns:

Index ID of the protocol.

classmethod register_option(code, meth)[source]

Register an option parser.

Parameters:
Return type:

None

read(length=None, **kwargs)[source]

Read Internet Protocol version 4 (IPv4).

Structure of IPv4 header [RFC 791]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
  • length (Optional[int]) – Length of packet data.

  • **kwargs (Any) – Arbitrary keyword arguments.

Return type:

IPv4

Returns:

Parsed packet data.

make(tos_pre=<ToSPrecedence.Routine: 0>, tos_pre_default=None, tos_pre_namespace=None, tos_pre_reversed=False, tos_del=<ToSDelay.NORMAL: 0>, tos_del_default=None, tos_del_namespace=None, tos_del_reversed=False, tos_thr=<ToSThroughput.NORMAL: 0>, tos_thr_default=None, tos_thr_namespace=None, tos_thr_reversed=False, tos_rel=<ToSReliability.NORMAL: 0>, tos_rel_default=None, tos_rel_namespace=None, tos_rel_reversed=False, tos_ecn=<ToSECN.Not_ECT: 0>, tos_ecn_default=None, tos_ecn_namespace=None, tos_ecn_reversed=False, id=0, df=False, mf=False, offset=0, ttl=0, protocol=<TransType.UDP: 17>, protocol_default=None, protocol_namespace=None, protocol_reversed=False, checksum=b'\\x00\\x00', src='127.0.0.1', dst='0.0.0.0', options=None, payload=b'', **kwargs)[source]

Make (construct) packet data.

Parameters:
Return type:

IPv4

Returns:

Constructed packet data.

classmethod _make_data(data)[source]

Create key-value pairs from data for protocol construction.

Parameters:

data (IPv4) – protocol data

Return type:

dict[str, Any]

Returns:

Key-value pairs for protocol construction.

_read_ipv4_options(length)[source]

Read IPv4 option list.

Parameters:

length (int) – length of options

Return type:

OrderedMultiDict[OptionNumber, Option]

Returns:

Extracted IPv4 options.

Raises:

ProtocolError – If the threshold is NOT matching.

_read_opt_unassigned(schema, *, options)[source]

Read IPv4 unassigned options.

Structure of IPv4 unassigned options [RFC 791]:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     type      |    length     |         option data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
Return type:

UnassignedOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is LESS THAN 3.

_read_opt_eool(schema, *, options)[source]

Read IPv4 End of Option List (EOOL) option.

Structure of IPv4 End of Option List (EOOL) option [RFC 719]:

+--------+
|00000000|
+--------+
  Type=0
Parameters:
Return type:

EOOLOption

Returns:

Parsed option data.

_read_opt_nop(schema, *, options)[source]

Read IPv4 No Operation (NOP) option.

Structure of IPv4 No Operation (NOP) option [RFC 719]:

+--------+
|00000001|
+--------+
  Type=1
Parameters:
Return type:

NOPOption

Returns:

Parsed option data.

_read_opt_sec(schema, *, options)[source]

Read IPv4 Security (SEC) option.

Structure of IPv4 Security (SEC) option [RFC 1108]:

+------------+------------+------------+-------------//----------+
|  10000010  |  XXXXXXXX  |  SSSSSSSS  |  AAAAAAA[1]    AAAAAAA0 |
|            |            |            |         [0]             |
+------------+------------+------------+-------------//----------+
  TYPE = 130     LENGTH   CLASSIFICATION         PROTECTION
                               LEVEL              AUTHORITY
                                                    FLAGS
Parameters:
Return type:

SECOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is LESS THAN 3.

_read_opt_lsr(schema, *, options)[source]

Read IPv4 Loose Source Route (LSR) option.

Structure of IPv4 Loose Source Route (LSR) option [RFC 791]:

+--------+--------+--------+---------//--------+
|10000011| length | pointer|     route data    |
+--------+--------+--------+---------//--------+
Parameters:
Return type:

LSROption

Returns:

Parsed option data.

Raises:

ProtocolError – If option is malformed.

_read_opt_ts(schema, *, options)[source]

Read IPv4 Time Stamp (TS) option.

Structure of IPv4 Time Stamp (TS) option [RFC 791]:

+--------+--------+--------+--------+
|01000100| length | pointer|oflw|flg|
+--------+--------+--------+--------+
|         internet address          |
+--------+--------+--------+--------+
|             timestamp             |
+--------+--------+--------+--------+
|                 .                 |
                  .
                  .
Parameters:
Return type:

TSOption

Returns:

Parsed option data.

Raises:

ProtocolError – If the option is malformed.

_read_opt_e_sec(schema, *, options)[source]

Read IPv4 Extended Security (E-SEC) option.

Structure of IPv4 Extended Security (E-SEC) option [RFC 1108]:

+------------+------------+------------+-------//-------+
|  10000101  |  000LLLLL  |  AAAAAAAA  |  add sec info  |
+------------+------------+------------+-------//-------+
 TYPE = 133      LENGTH     ADDITIONAL      ADDITIONAL
                           SECURITY INFO     SECURITY
                            FORMAT CODE        INFO
Parameters:
Return type:

ESECOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is LESS THAN 3.

_read_opt_rr(schema, *, options)[source]

Read IPv4 Record Route (RR) option.

Structure of IPv4 Record Route (RR) option [RFC 791]:

+--------+--------+--------+---------//--------+
|00000111| length | pointer|     route data    |
+--------+--------+--------+---------//--------+
  Type=7
Parameters:
Return type:

RROption

Returns:

Parsed option data.

Raises:

ProtocolError – If option is malformed.

_read_opt_sid(schema, *, options)[source]

Read IPv4 Stream ID (SID) option.

Structure of IPv4 Stream ID (SID) option [RFC 791][RFC 6814]:

+--------+--------+--------+--------+
|10001000|00000010|    Stream ID    |
+--------+--------+--------+--------+
 Type=136 Length=4
Parameters:
Return type:

SIDOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_opt_ssr(schema, *, options)[source]

Read IPv4 Strict Source Route (SSR) option.

Structure of IPv4 Strict Source Route (SSR) option [RFC 791]:

+--------+--------+--------+---------//--------+
|10001001| length | pointer|     route data    |
+--------+--------+--------+---------//--------+
 Type=137
Parameters:
Return type:

SSROption

Returns:

Parsed option data.

Raises:

ProtocolError – If option is malformed.

_read_opt_mtup(schema, *, options)[source]

Read IPv4 MTU Probe (MTUP) option.

Structure of IPv4 MTU Probe (MTUP) option [RFC 1063][RFC 1191]:

+--------+--------+--------+--------+
|00001011|00000100|   2 octet value |
+--------+--------+--------+--------+
Parameters:
Return type:

MTUPOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_opt_mtur(schema, *, options)[source]

Read IPv4 MTU Reply (MTUR) option.

Structure of IPv4 MTU Reply (MTUR) option [RFC 1063][RFC 1191]:

+--------+--------+--------+--------+
|00001100|00000100|   2 octet value |
+--------+--------+--------+--------+
Parameters:
Return type:

MTUROption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_opt_tr(schema, *, options)[source]

Read IPv4 Traceroute (TR) option.

Structure of IPv4 Traceroute (TR) option [RFC 1393][RFC 6814]:

 0               8              16              24
+-+-+-+-+-+-+-+-+---------------+---------------+---------------+
|F| C |  Number |    Length     |          ID Number            |
+-+-+-+-+-+-+-+-+---------------+---------------+---------------+
|      Outbound Hop Count       |       Return Hop Count        |
+---------------+---------------+---------------+---------------+
|                     Originator IP Address                     |
+---------------+---------------+---------------+---------------+
Parameters:
Return type:

TROption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 12.

_read_opt_rtralt(schema, *, options)[source]

Read IPv4 Router Alert (RTRALT) option.

Structure of IPv4 Router Alert (RTRALT) option [RFC 2113]:

+--------+--------+--------+--------+
|10010100|00000100|  2 octet value  |
+--------+--------+--------+--------+
Parameters:
Return type:

RTRALTOption

Returns:

Parsed option data.

Raises:

ProtocolError – If length is NOT 4.

_read_opt_qs(schema, *, options)[source]

Read IPv4 Quick Start (QS) option.

Structure of IPv4 Quick Start (QS) option [RFC 4782]:

  • A Quick-Start Request

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Option      |  Length=8     | Func. | Rate  |   QS TTL      |
    |               |               | 0000  |Request|               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        QS Nonce                           | R |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
  • Report of Approved Rate

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Option      |  Length=8     | Func. | Rate  |   Not Used    |
    |               |               | 1000  | Report|               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        QS Nonce                           | R |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
Parameters:
Return type:

QSOption

Returns:

Parsed option data.

Raises:

ProtocolError – If the option is malformed.

_make_ipv4_options(options)[source]

Make options for IPv4.

Parameters:

option – IPv4 options

Return type:

tuple[list[Option | bytes], int]

Returns:

Tuple of options and total length of options.

_make_opt_unassigned(kind, option=None, *, data, **kwargs)[source]

Make IPv4 unassigned options.

Parameters:
Return type:

Option

Returns:

Constructured option schema.

_make_opt_eool(kind, option=None, **kwargs)[source]

Make IPv4 End of Option List (EOOL) option.

Parameters:
Return type:

EOOLOption

Returns:

Constructured option schema.

_make_opt_nop(kind, option=None, **kwargs)[source]

Make IPv4 No Operation (NOP) option.

Parameters:
Return type:

NOPOption

Returns:

Constructured option schema.

_make_opt_sec(kind, option=None, *, level=<ClassificationLevel.Unclassified: 171>, level_default=None, level_namespace=None, level_reversed=False, authorities=None, **kwargs)[source]

Make IPv4 Security (SEC) option.

Parameters:
Return type:

SECOption

Returns:

Constructured option schema.

_make_opt_lsr(kind, option=None, *, counts=10, route=None, **kwargs)[source]

Make IPv4 Loose Source and Record Route (LSR) option.

Parameters:
Return type:

LSROption

Returns:

Constructured option schema.

_make_opt_ts(kind, option=None, *, counts=5, overflow=0, timestamp=None, **kwargs)[source]

Make IPv4 Timestamp (TS) option.

Parameters:
Return type:

TSOption

Returns:

Constructured option schema.

_make_opt_e_sec(kind, option=None, *, format=0, info=None, **kwargs)[source]

Make IPv4 Extended Security (E-SEC) option.

Parameters:
  • kind (OptionNumber) – option type code

  • option (Optional[ESECOption]) – option data

  • format (int) – additional security information format code

  • info (Optional[bytes]) – additional security information

  • **kwargs (Any) – arbitrary keyword arguments

  • Returns – Constructured option schema.

Return type:

ESECOption

_make_opt_rr(kind, option=None, *, counts=10, route=None, **kwargs)[source]

Make IPv4 Record Route (RR) option.

Parameters:
Return type:

RROption

Returns:

Constructured option schema.

_make_opt_sid(kind, option=None, *, sid=0, **kwargs)[source]

Make IPv4 Stream ID (SID) option.

Parameters:
Return type:

SIDOption

Returns:

Constructured option schema.

_make_opt_ssr(kind, option=None, *, counts=10, route=None, **kwargs)[source]

Make IPv4 Strict Source Route (SSR) option.

Parameters:
Return type:

SSROption

Returns:

Constructured option schema.

_make_opt_mtup(kind, option=None, *, mtu=0, **kwargs)[source]

Make IPv4 MTU Probe (MTUP) option.

Parameters:
Return type:

MTUPOption

Returns:

Constructured option schema.

_make_opt_mtur(kind, option=None, *, mtu=0, **kwargs)[source]

Make IPv4 MTU Reply (MTUR) option.

Parameters:
Return type:

MTUROption

Returns:

Constructured option schema.

_make_opt_tr(kind, option=None, *, id=0, out=0, ret=0, origin='127.0.0.1', **kwargs)[source]

Make IPv4 Traceroute (TR) option.

Parameters:
Return type:

TROption

Returns:

Constructured option schema.

_make_opt_rtralt(kind, option=None, *, alert=<RouterAlert.Aggregated_Reservation_Nesting_Level_0: 1>, alert_default=None, alert_namespace=None, alert_reversed=False, **kwargs)[source]

Make IPv4 Router Alert (RTRALT) option.

Parameters:
Return type:

RTRALTOption

Returns:

Constructured option schema.

_make_opt_qs(kind, option=None, *, func=<QSFunction.Quick_Start_Request: 0>, func_default=None, func_namespace=None, func_reversed=False, rate=0, ttl=0, nonce=0, **kwargs)[source]

Make IPv4 Quick-Start (QS) option.

Parameters:
  • code – option type value

  • opt – option data

  • func (QSFunction | IntEnum | IntEnum | str | int) – QS function type

  • func_default (Optional[int]) – default value for QS function type

  • func_namespace (Union[dict[str, int], dict[int, str], Type[IntEnum], Type[IntEnum], None]) – namespace for QS function type

  • func_reversed (bool) – reversed flag for QS function type

  • rate (int) – rate (in kbps)

  • ttl (timedelta | int) – time to live (in seconds)

  • nonce (int) – nonce value

  • **kwargs (Any) – arbitrary keyword arguments

Return type:

QSOption

Returns:

Constructured option schema.

classmethod __index__()[source]

Numeral registry index of the protocol.

Return type:

TransType

Returns:

Numeral registry index of the protocol in IANA.

Header Schemas

class pcapkit.protocols.schema.internet.ipv4.IPv4(dict_=None, **kwargs)[source]

Bases: Schema

Header schema for IPv4 packet.

vihl: VerIHLField = <BitField vihl>

Version and header length.

tos: ToSField = <BitField tos>

Type of service.

length: int = <UInt16Field length>

Total length.

id: int = <UInt16Field id>

Identification.

flags: Flags = <BitField flags>

Flags and fragment offset.

ttl: int = <UInt8Field ttl>

Time to live.

proto: Enum_TransType = <EnumField proto>

Protocol.

chksum: bytes = <BytesField chksum>

Header checksum.

src: IPv4Address = <IPv4AddressField src>

Source address.

dst: IPv4Address = <IPv4AddressField dst>

Destination address.

options: list[Option] = <OptionField options>

Options.

padding: bytes = <PaddingField padding>

Padding.

payload: bytes = <PayloadField payload>

Payload.

class pcapkit.protocols.schema.internet.ipv4.Option(dict_=None, **kwargs)[source]

Bases: EnumSchema[OptionNumber]

Header schema for IPv4 options.

type: Enum_OptionNumber = <EnumField type>

Option type.

length: int = <ConditionalField length>

Option length.

post_process(packet)[source]

Revise schema data after unpacking process.

Parameters:

packet (dict[str, Any]) – Unpacked data.

Return type:

Schema

Returns:

Revised schema.

class pcapkit.protocols.schema.internet.ipv4.UnassignedOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 unassigned options.

data: bytes = <BytesField data>

Option data.

class pcapkit.protocols.schema.internet.ipv4.EOOLOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 end of option list (EOOL) option.

class pcapkit.protocols.schema.internet.ipv4.NOPOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 no operation (NOP) option.

class pcapkit.protocols.schema.internet.ipv4.SECOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 security (SEC) option.

level: Enum_ClassificationLevel = <EnumField level>

Classification level.

data: bytes = <ConditionalField data>

Protection authority flags.

class pcapkit.protocols.schema.internet.ipv4.LSROption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 loose source route (LSR) option.

pointer: int = <UInt8Field pointer>

Pointer.

route: list[IPv4Address] = <ListField route>

Route.

remainder: bytes = <PaddingField remainder>

Remaining data buffer0.

class pcapkit.protocols.schema.internet.ipv4.TSOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 timestamp (TS) option.

pointer: int = <UInt8Field pointer>

Pointer.

flags: TSFlags = <BitField flags>

Overflow and flags.

ts_data: list[int] = <ListField ts_data>

Timestamps and internet addresses.

remainder: bytes = <PaddingField remainder>

Remaining data buffer.

post_process(packet)[source]

Revise schema data after unpacking process.

Parameters:

packet (dict[str, Any]) – Unpacked data.

Return type:

Schema

Returns:

Revised schema.

class pcapkit.protocols.schema.internet.ipv4.ESECOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 extended security (ESEC) option.

format: int = <UInt8Field format>

Additional security information format code.

info: bytes = <ConditionalField info>

Additional security information.

class pcapkit.protocols.schema.internet.ipv4.RROption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 record route (RR) option.

pointer: int = <UInt8Field pointer>

Pointer.

route: list[IPv4Address] = <ListField route>

Route.

remainder: bytes = <PaddingField remainder>

Remaining data buffer0.

class pcapkit.protocols.schema.internet.ipv4.SIDOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 stream identifier (SID) option.

sid: int = <UInt32Field sid>

Stream identifier.

class pcapkit.protocols.schema.internet.ipv4.SSROption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 strict source route (SSR) option.

pointer: int = <UInt8Field pointer>

Pointer.

route: list[IPv4Address] = <ListField route>

Route.

remainder: bytes = <PaddingField remainder>

Remaining data buffer0.

class pcapkit.protocols.schema.internet.ipv4.MTUPOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 MTU probe (MTUP) option.

mtu: int = <UInt16Field mtu>

MTU.

class pcapkit.protocols.schema.internet.ipv4.MTUROption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 MTU reply (MTUR) option.

mtu: int = <UInt16Field mtu>

MTU.

class pcapkit.protocols.schema.internet.ipv4.TROption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 traceroute (TR) option.

id: int = <UInt16Field id>

ID number.

out: int = <UInt16Field out>

Outbound hop count.

ret: int = <UInt16Field ret>

Return hop count.

origin: IPv4Address = <IPv4AddressField origin>

Originator IP address.

class pcapkit.protocols.schema.internet.ipv4.RTRALTOption(dict_=None, **kwargs)[source]

Bases: Option

Header schema for IPv4 router alert (RTRALT) option.

alert: Enum_RouterAlert = <EnumField alert>

Router alert value.

class pcapkit.protocols.schema.internet.ipv4._QSOption(dict_=None, **kwargs)[source]

Bases: Schema

Header schema for IPv4 quick start (QS) options in generic representation.

flags: QSTestFlags = <ForwardMatchField flags>

Flags.

data: QuickStartRequestOption | QuickStartReportOption = <SwitchField data>

QS data.

post_process(packet)[source]

Revise schema data after unpacking process.

Parameters:

packet (dict[str, Any]) – Unpacked data.

Return type:

QSOption

Returns:

Revised schema.

class pcapkit.protocols.schema.internet.ipv4.QSOption(dict_=None, **kwargs)[source]

Bases: Option, EnumSchema[QSFunction]

Header schema for IPV4 quick start (QS) options.

flags: QuickStartFlags = <BitField flags>

Flags.

class pcapkit.protocols.schema.internet.ipv4.QuickStartRequestOption(dict_=None, **kwargs)[source]

Bases: QSOption

Header schema for IPV4 quick start request options.

ttl: int = <UInt8Field ttl>

QS time-to-live (TTL).

nonce: QSNonce = <BitField nonce>

QS nonce.

class pcapkit.protocols.schema.internet.ipv4.QuickStartReportOption(dict_=None, **kwargs)[source]

Bases: QSOption

Header schema for IPV4 quick start report of approved rate options.

nonce: QSNonce = <BitField nonce>

QS nonce.

Type Stubs

class pcapkit.protocols.schema.internet.ipv4.VerIHLField[source]

Bases: TypedDict

Version and header length field.

version: int

IP version.

ihl: int

Internet header length.

class pcapkit.protocols.schema.internet.ipv4.ToSField

Bases: TypedDict

Type of service field.

class pcapkit.protocols.schema.internet.ipv4.Flags[source]

Bases: TypedDict

Flags and fragment offset field.

df: int

Don’t fragment flag.

mf: int

More fragments flag.

offset: int

Fragment offset.

class pcapkit.protocols.schema.internet.ipv4.TSFlags[source]

Bases: TypedDict

Timestamp flags field.

oflw: int

Timestamp overflow flag.

flag: int

Timestamp type flag.

class pcapkit.protocols.schema.internet.ipv4.QuickStartFlags[source]

Bases: TypedDict

Quick-Start flags.

func: int

QS function.

rate: int

Rate request/report.

class pcapkit.protocols.schema.internet.ipv4.QSTestFlags[source]

Bases: TypedDict

Quick start test flag.

func: int

QS function.

class pcapkit.protocols.schema.internet.ipv4.QSNonce[source]

Bases: TypedDict

Quick start nonce field.

nonce: int

Nonce.

Auxiliary Functions

pcapkit.protocols.schema.internet.ipv4.quick_start_data_selector(pkt)[source]

Selector function for _QSOption.data field.

Parameters:

pkt (dict[str, Any]) – Packet data.

Return type:

FieldBase

Returns:

Data Models

class pcapkit.protocols.data.internet.ipv4.IPv4(*args: VT, **kwargs: VT)[source]

Bases: Protocol

Data model for IPv4 packet.

version: Literal[4]

Version.

hdr_len: int

Internet header length.

tos: ToSField

Type of services.

len: int

Total length.

id: int

Identification.

flags: Flags

Flags.

offset: int

Fragment offset.

ttl: timedelta

Time to live.

protocol: TransType

Protocol.

checksum: bytes

Header checksum.

src: IPv4Address

Source address.

dst: IPv4Address

Destination address.

class pcapkit.protocols.data.internet.ipv4.ToSField(*args: Any, **kwargs: Any)[source]

Bases: Data

Data model for IPv4 ToS fields.

Important

Due to the preserved keyword conflict, please use from_dict() to create an instance of this data model.

del: ToSDelay

Delay.

Note

This field is conflict with del keyword. To access this field, directly use getattr() instead.

pre: ToSPrecedence

Precedence.

thr: ToSThroughput

Throughput.

rel: ToSReliability

Reliability.

ecn: ToSECN

Explicit congestion notification (ECN).

class pcapkit.protocols.data.internet.ipv4.Flags(*args: VT, **kwargs: VT)[source]

Bases: Data

Data model for IPv4 Flags.

df: bool

Don’t fragment.

mf: bool

More fragments.

class pcapkit.protocols.data.internet.ipv4.Option(dict_=None, **kwargs)[source]

Bases: Data

Data model for IPv4 options.

code: OptionNumber

Option code.

length: int

Option length.

type: OptionType

Option type.

class pcapkit.protocols.data.internet.ipv4.OptionType(*args: Any, **kwargs: Any)[source]

Bases: Data

Data model for IPv4 option type data.

class: OptionClass

Option class.

Note

This field is conflict with class keyword. To access this field, directly use getattr() instead.

change: bool

Change flag.

number: int

Number.

class pcapkit.protocols.data.internet.ipv4.UnassignedOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 unassigned option.

data: bytes

Option data.

class pcapkit.protocols.data.internet.ipv4.EOOLOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 End of Option List (EOOL) option.

class pcapkit.protocols.data.internet.ipv4.NOPOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 No Operation (NOP) option.

class pcapkit.protocols.data.internet.ipv4.SECOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Security (SEC) option.

level: ClassificationLevel

Classification level.

flags: tuple[ProtectionAuthority, ...]

Protection authority flags.

class pcapkit.protocols.data.internet.ipv4.LSROption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Loose Source Route (LSR) option.

pointer: int

Pointer.

route: tuple[IPv4Address, ...]

Route.

class pcapkit.protocols.data.internet.ipv4.TSOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Time Stamp (TS) option.

pointer: int

Pointer.

overflow: int

Overflow.

flag: TSFlag

Flag.

timestamp: tuple[timedelta | int, ...] | OrderedMultiDict[IPv4Address, timedelta | int]

Timestamp data.

class pcapkit.protocols.data.internet.ipv4.ESECOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Extended Security (ESEC) option.

format: int

Additional security information format code.

info: bytes

Additional security information.

class pcapkit.protocols.data.internet.ipv4.RROption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Record Route (RR) option.

pointer: int

Pointer.

route: Optional[tuple[IPv4Address, ...]]

Route.

class pcapkit.protocols.data.internet.ipv4.SIDOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Stream ID (SID) option.

sid: int

Stream ID.

class pcapkit.protocols.data.internet.ipv4.SSROption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Strict Source Route (SSR) option.

pointer: int

Pointer.

route: Optional[tuple[IPv4Address, ...]]

Route.

class pcapkit.protocols.data.internet.ipv4.MTUPOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 MTU Probe (MTUP) option.

mtu: int

MTU.

class pcapkit.protocols.data.internet.ipv4.MTUROption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 MTU Reply (MTUR) option.

mtu: int

MTU.

class pcapkit.protocols.data.internet.ipv4.TROption(*args: Any, **kwargs: Any)[source]

Bases: Option

Data model for IPv4 Traceroute (TR) option.

Important

Due to the preserved keyword conflict, please use from_dict() to create an instance of this data model.

return: int

Return hop count.

Note

This field is conflict with return keyword. To access this field, directly use getattr() instead.

id: int

ID number.

outbound: int

Outbound hop count.

class pcapkit.protocols.data.internet.ipv4.RTRALTOption(*args: VT, **kwargs: VT)[source]

Bases: Option

Data model for IPv4 Router Alert (RTRALT) option.

alert: RouterAlert

Router alert.

class pcapkit.protocols.data.internet.ipv4.QSOption(dict_=None, **kwargs)[source]

Bases: Option

Data model for IPv4 Quick Start (QS) option.

func: QSFunction

QS function.

rate: int

Rate request/report.

Footnotes