IPv6-Frag - Fragment Header for IPv6

pcapkit.protocols.internet.ipv6_frag.protocol contains IPv6_Frag only, which implements the extractor for Fragment Header for IPv6 (IPv6-Frag) [*], whose structure is:

Octets

Bits

Name

Description

0

0

frag.next

Next Header

1

8

frag.reserved_octet

Reserved

2

16

frag.offset

Fragment Offset

3

29

frag.reserved

Reserved

3

31

frag.mf

More Flag

4

32

frag.id

Identification

class pcapkit.protocols.internet.ipv6_frag.protocol.IPv6_Frag(file=None, length=None, **kwargs)[source]

Bases: IPv6_Ext[IPv6_Frag, IPv6_Frag]

This class implements Fragment Header for IPv6.

Changed in version 1.5.0: A rebuild keeps the reserved bits (#1235).

Changed in version 1.6.0: next of make() takes a member or an int code, resolved with the enumeration’s get; a name, a bool, or a code that does not fit in one octet raises ProtocolError, rather than resolving against an enumeration inferred from the caller’s frame or writing a different value (#2594).

make() raises ProtocolError for a reserved_octet that is not one octet, rather than padding or cutting it (#2676).

Removed in version 1.6.0: The next_default, next_namespace and next_reversed arguments of make(); resolve a name with resolve_index() first (#2594).

property name: Literal['Fragment Header for IPv6']

Name of current protocol.

property alias: Literal['IPv6-Frag']

Acronym of corresponding protocol.

property length: Literal[8]

Header length of current protocol.

property payload: ProtocolBase | NoReturn

Payload of current instance.

Raises:

UnsupportedCall – if the protocol is used as an IPv6 extension header

property protocol: str | None | NoReturn

Name of next layer protocol (if any).

Raises:

UnsupportedCall – if the protocol is used as an IPv6 extension header

property protochain: ProtoChain | NoReturn

Protocol chain of current instance.

Raises:

UnsupportedCall – if the protocol is used as an IPv6 extension header

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

Read Fragment Header for IPv6.

Structure of IPv6-Frag header [RFC 8200]:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Header  |   Reserved    |      Fragment Offset    |Res|M|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Identification                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Parameters:
  • length (int | None) – Length of packet data.

  • extension (bool) – If the packet is used as an IPv6 extension header.

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

Return type:

IPv6_Frag

Returns:

Parsed packet data.

make(next=TransType.UDP, reserved_octet=b'\x00', offset=0, reserved=0, mf=False, id=0, payload=b'', **kwargs)[source]

Make (construct) packet data.

Parameters:
  • next (TransType | int) – Next header.

  • reserved_octet (bytes) – The reserved octet after the next header.

  • offset (int) – Fragment offset, in on-wire 8-octet units (RFC 8200 Section 4.5). Note that the data model’s offset is in octets, so it must be divided by 8 before being passed here.

  • reserved (int) – Reserved bits (Res) between the offset and the M flag.

  • mf (bool) – More fragments flag.

  • id (int) – Identification.

  • payload (bytes | ProtocolBase | Schema) – Payload of current instance.

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

Return type:

IPv6_Frag

Returns:

Constructed packet data.

Raises:

ProtocolError – If next is a name, a bool, or a member or code that does not fit in one octet, or reserved_octet is not one octet.

Changed in version 1.5.0: Takes reserved_octet ahead of offset (#1223) and reserved ahead of mf (#1235), which shifts every later positional argument.

classmethod id()[source]

Index ID of the protocol.

Return type:

tuple[Literal['IPv6_Frag']]

Returns:

Index ID of the protocol.

__post_init__(file=None, length=None, *, extension=False, **kwargs)[source]

Post initialisation hook.

Overloads:
Parameters:
  • file (IO[bytes] | bytes | None) – Source packet stream.

  • length (int | None) – Length of packet data.

  • extension (bool) – If the protocol is used as an IPv6 extension header.

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

See also

For construction arguments, please refer to self.make.

classmethod __index__()[source]

Numeral registry index of the protocol.

Return type:

TransType

Returns:

Numeral registry index of the protocol in IANA.

classmethod _make_data(data)[source]

Create key-value pairs from data for protocol construction.

Parameters:

data (IPv6_Frag) – protocol data

Return type:

dict[str, Any]

Returns:

Key-value pairs for protocol construction.

Header Schemas

Removed in version 1.6.0: pcapkit.protocols.schema.internet.ipv6_frag, with no alias: the module moved here (#2534).

class pcapkit.protocols.internet.ipv6_frag.schema.IPv6_Frag(next=NO_VALUE, reserved=NO_VALUE, flags=NO_VALUE, id=NO_VALUE, payload=NO_VALUE, *, __packet__=None, **kwargs)[source]

Bases: Schema

Header schema for IPv6-Frag packet.

next: TransType = <EnumField next>

Next header.

reserved: bytes = <PaddingField reserved>

Reserved.

flags: Flags = <BitField flags>

Fragment offset and flags.

id: int = <UInt32Field id>

Identification.

payload: bytes = <PayloadField payload>

Payload.

Data Models

Removed in version 1.6.0: pcapkit.protocols.data.internet.ipv6_frag, with no alias: the module moved here (#2534).

class pcapkit.protocols.internet.ipv6_frag.data.IPv6_Frag(next, reserved_octet, offset, reserved, mf, id)[source]

Bases: Protocol

Data model for IPv6 fragment header.

Changed in version 1.5.0: New required fields reserved_octet (#1223) and reserved (#1235).

next: TransType

Next header.

reserved_octet: bytes

The reserved octet after the next header, as captured.

offset: int

Fragment offset.

reserved: int

Reserved bits (Res) between the offset and the M flag, carried verbatim so that a rebuild reproduces them.

mf: bool

More flag.

id: int

Identification.

Footnotes