Class: PacketGen::Header::IPv6::Addr
- Inherits:
-
BinStruct::Struct
- Object
- BinStruct::Struct
- PacketGen::Header::IPv6::Addr
- Includes:
- BinStruct::Structable
- Defined in:
- lib/packetgen/header/ipv6/addr.rb
Overview
IPv6 address, as a group of 8 2-byte words
Instance Attribute Summary collapse
-
#a1 ⇒ Integer
1st 2-byte word of IPv6 address.
-
#a2 ⇒ Integer
2nd 2-byte word of IPv6 address.
-
#a3 ⇒ Integer
3rd 2-byte word of IPv6 address.
-
#a4 ⇒ Integer
4th 2-byte word of IPv6 address.
-
#a5 ⇒ Integer
5th 2-byte word of IPv6 address.
-
#a6 ⇒ Integer
6th 2-byte word of IPv6 address.
-
#a7 ⇒ Integer
7th 2-byte word of IPv6 address.
-
#a8 ⇒ Integer
8th 2-byte word of IPv6 address.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Check equaliy to
other
. -
#from_human(str) ⇒ self
Read a colon-delimited address.
-
#mcast? ⇒ Boolean
Return true if this address is a multicast one.
-
#to_a ⇒ Array<Integer>
Return an array of address 16-bit words.
-
#to_human ⇒ String
Return IPv6 address in human readable form (colon-delimited hex string).
Instance Attribute Details
#a1 ⇒ Integer
1st 2-byte word of IPv6 address
24 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 24 define_attr :a1, BinStruct::Int16 |
#a2 ⇒ Integer
2nd 2-byte word of IPv6 address
28 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 28 define_attr :a2, BinStruct::Int16 |
#a3 ⇒ Integer
3rd 2-byte word of IPv6 address
32 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 32 define_attr :a3, BinStruct::Int16 |
#a4 ⇒ Integer
4th 2-byte word of IPv6 address
36 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 36 define_attr :a4, BinStruct::Int16 |
#a5 ⇒ Integer
5th 2-byte word of IPv6 address
40 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 40 define_attr :a5, BinStruct::Int16 |
#a6 ⇒ Integer
6th 2-byte word of IPv6 address
44 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 44 define_attr :a6, BinStruct::Int16 |
#a7 ⇒ Integer
7th 2-byte word of IPv6 address
48 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 48 define_attr :a7, BinStruct::Int16 |
#a8 ⇒ Integer
8th 2-byte word of IPv6 address
52 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 52 define_attr :a8, BinStruct::Int16 |
Instance Method Details
#==(other) ⇒ Boolean
Check equaliy to other
. Equal if other has the same class, and all attributes are equal
92 93 94 95 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 92 def ==(other) other.is_a?(self.class) && attributes.all? { |attr| self[attr].value == other[attr].value } end |
#from_human(str) ⇒ self
Read a colon-delimited address
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 58 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 8.times do |i| self.send(:"a#{i + 1}=", addri >> (16 * (7 - i)) & 0xffff) end self end |
#mcast? ⇒ Boolean
Return true if this address is a multicast one
85 86 87 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 85 def mcast? self.a1 & 0xff00 == 0xff00 end |
#to_a ⇒ Array<Integer>
Return an array of address 16-bit words
79 80 81 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 79 def to_a @attributes.values end |
#to_human ⇒ String
Return IPv6 address in human readable form (colon-delimited hex string)
73 74 75 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 73 def to_human IPAddr.new(to_a.map { |a| a.to_i.to_s(16) }.join(':')).to_s end |