# ICMP

class os_ken.lib.packet.icmp.TimeExceeded(data_len=0, data=None)

  ICMP sub encoder/decoder class for Time Exceeded Message.

  This is used with os_ken.lib.packet.icmp.icmp for ICMP Time Exceeded Message.

  An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

  [RFC4884] introduced 8-bit data length attribute.

  Attribute | Description
  --- | ---
  data_len | data length
  data | Internet Header + leading octets of original datagram

class os_ken.lib.packet.icmp.dest_unreach(data_len=0, mtu=0, data=None)

  ICMP sub encoder/decoder class for Destination Unreachable Message.

  This is used with os_ken.lib.packet.icmp.icmp for ICMP Destination Unreachable Message.

  An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

  [RFC1191] reserves bits for the "Next-Hop MTU" field. [RFC4884] introduced 8-bit data length attribute.

  Attribute | Description
  --- | ---
  data_len | data length
  mtu | Next-Hop MTU NOTE: This field is required when icmp code is 4 code 4 = fragmentation needed and DF set
  data | Internet Header + leading octets of original datagram

class os_ken.lib.packet.icmp.echo(id_=0, seq=0, data=None)

  ICMP sub encoder/decoder class for Echo and Echo Reply messages.

  This is used with os_ken.lib.packet.icmp.icmp for ICMP Echo and Echo Reply messages.

  An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

  Attribute | Description
  --- | ---
  id | Identifier
  seq | Sequence Number
  data | Internet Header + 64 bits of Original Data Datagram

class os_ken.lib.packet.icmp.icmp(type_=8, code=0, csum=0, data=b'')

  ICMP (RFC 792) header encoder/decoder class.

  An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

  Attribute | Description
  --- | ---
  type | Type
  code | Code
  csum | CheckSum (0 means automatically-calculate when encoding)

  data

  Payload. Either a bytearray, or os_ken.lib.packet.icmp.echo or os_ken.lib.packet.icmp.dest_unreach or os_ken.lib.packet.icmp.TimeExceeded object NOTE for icmp.echo: This includes "unused" 16 bits and the following "Internet Header + 64 bits of Original Data Datagram" of the ICMP header. NOTE for icmp.dest_unreach and icmp.TimeExceeded: This includes "unused" 8 or 24 bits and the following "Internet Header + leading octets of original datagram" of the original packet.

  classmethod parser(buf)

    Decode a protocol header.

    This method is used only when decoding a packet.

    Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

    - An object to describe the decoded header.

    - A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

    - The rest of packet.

  serialize(payload, prev)

    Encode a protocol header.

    This method is used only when encoding a packet.

    Encode a protocol header. Returns a bytearray which contains the header.

    payload is the rest of the packet which will immediately follow this header.

    prev is a packet_base.PacketBase subclass for the outer protocol header. prev is None if the current header is the outer-most. For example, prev is ipv4 or ipv6 for tcp.serialize.

this page last updated: 2026-04-10 03:11:34

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug