class PacketGen::Header::IPv6::Addr
IPv6
address, as a group of 8 2-byte words @author Sylvain Daubert
Public Instance Methods
==(other)
click to toggle source
# File lib/packetgen/header/ipv6/addr.rb, line 91 def ==(other) other.is_a?(self.class) && fields.all? { |attr| self[attr].value == other[attr].value } end
from_human(str)
click to toggle source
Read a colon-delimited address @param [String] str @return [self]
# File lib/packetgen/header/ipv6/addr.rb, line 55 def from_human(str) return self if str.nil? addr = IPAddr.new(str) raise ArgumentError, 'string is not a IPv6 address' unless addr.ipv6? addri = addr.to_i self.a1 = addri >> 112 self.a2 = addri >> 96 & 0xffff self.a3 = addri >> 80 & 0xffff self.a4 = addri >> 64 & 0xffff self.a5 = addri >> 48 & 0xffff self.a6 = addri >> 32 & 0xffff self.a7 = addri >> 16 & 0xffff self.a8 = addri & 0xffff self end
mcast?()
click to toggle source
Return true if this address is a multicast one @return [Boolean]
# File lib/packetgen/header/ipv6/addr.rb, line 87 def mcast? self.a1 & 0xff00 == 0xff00 end
to_a()
click to toggle source
Return an array of address 16-bit words @return [Array<Integer>]
# File lib/packetgen/header/ipv6/addr.rb, line 81 def to_a @fields.values end
to_human()
click to toggle source
Addr6 in human readable form (colon-delimited hex string) @return [String]
# File lib/packetgen/header/ipv6/addr.rb, line 75 def to_human IPAddr.new(to_a.map { |a| a.to_i.to_s(16) }.join(':')).to_s end