module PacketGen::Header::MLDv2

This module contains all MLDv2 specific classes. @author Sylvain Daubert @since 2.4.0

Public Class Methods

decode(value) click to toggle source

Decode value for MLDv2 Max Resp Code. See RFC 3810 §5.1.3 @param [Integer] value value to decode @return [Integer]

# File lib/packetgen/header/mldv2.rb, line 39
def self.decode(value)
  if value < 32_768
    value
  else
    mant = value & 0xfff
    exp = (value >> 12) & 0x7
    (0x1000 | mant) << (exp + 3)
  end
end
encode(value) click to toggle source

Encode value for MLDv2 Max Resp Code. Value may be encoded as a float, so some error may occur. See RFC 3810 §5.1.3 @param [Integer] value value to encode @return [Integer]

# File lib/packetgen/header/mldv2.rb, line 19
def self.encode(value)
  if value < 32_768
    value
  elsif value > 8_387_583
    0xffff
  else
    exp = 0
    value >>= 3
    while value > 8_191
      exp += 1
      value >>= 1
    end
    0x8000 | ((exp & 7) << 12) | (value & 0xfff)
  end
end