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:
-
a
type
field ({Types::Int8} type), -
a
code
field ({Types::Int8} type), -
a
checksum
field ({Types::Int16} type), -
and a
body
.
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