class PacketGen::Header::ICMPv6

ICMPv6 header ({tools.ietf.org/html/rfc4443 RFC 4443})

 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      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

A ICMPv6 header consists of:

Create a ICMPv6 header

# standalone
icmpv6 = PacketGen::Header::ICMPv6.new
# in a packet
pkt = PacketGen.gen('IPv6').add('ICMPv6')
# access to ICMPv6 header
pkt.icmpv6     # => PacketGen::Header::ICMPv6

ICMPv6 attributes

icmpv6.code = 0
icmpv6.type = 200
icmpv6.checksum = 0x248a
icmpv6.body.read 'this is a body'

@author Sylvain Daubert

Constants

IP_PROTOCOL

ICMPv6 internet protocol number

Public Instance Methods

calc_checksum() click to toggle source

Compute checksum and set checksum field @return [Integer]

# File lib/packetgen/header/icmpv6.rb, line 42
def calc_checksum
  sum = ip_header(self).pseudo_header_checksum
  sum += self.sz
  sum += IP_PROTOCOL
  sum += IP.sum16(self)
  self.checksum = IP.reduce_checksum(sum)
end