Class: PacketGen::Header::IPv6::Addr
- Inherits:
-
Types::Fields
- Object
- Types::Fields
- PacketGen::Header::IPv6::Addr
- Includes:
- Types::Fieldable
- 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) ⇒ Object
-
#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
Addr6 in human readable form (colon-delimited hex string).
Methods included from Types::Fieldable
#format_inspect, #read, #sz, #to_s, #type_name
Methods inherited from Types::Fields
#[], #[]=, #bits_on, define_bit_fields_on, define_field, define_field_after, define_field_before, #fields, fields, inherited, #initialize, #inspect, #offset_of, #optional?, #optional_fields, #present?, #read, remove_bit_fields_on, remove_field, #sz, #to_h, #to_s, update_field
Constructor Details
This class inherits a constructor from PacketGen::Types::Fields
Instance Attribute Details
#a1 ⇒ Integer
1st 2-byte word of IPv6 address
23 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 23 define_field :a1, Types::Int16 |
#a2 ⇒ Integer
2nd 2-byte word of IPv6 address
27 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 27 define_field :a2, Types::Int16 |
#a3 ⇒ Integer
3rd 2-byte word of IPv6 address
31 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 31 define_field :a3, Types::Int16 |
#a4 ⇒ Integer
4th 2-byte word of IPv6 address
35 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 35 define_field :a4, Types::Int16 |
#a5 ⇒ Integer
5th 2-byte word of IPv6 address
39 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 39 define_field :a5, Types::Int16 |
#a6 ⇒ Integer
6th 2-byte word of IPv6 address
43 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 43 define_field :a6, Types::Int16 |
Instance Method Details
#==(other) ⇒ Object
95 96 97 98 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 95 def ==(other) other.is_a?(self.class) && fields.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 70 71 72 73 74 |
# 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 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? ⇒ Boolean
Return true if this address is a multicast one
91 92 93 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 91 def mcast? self.a1 & 0xff00 == 0xff00 end |
#to_a ⇒ Array<Integer>
Return an array of address 16-bit words
85 86 87 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 85 def to_a @fields.values end |
#to_human ⇒ String
Addr6 in human readable form (colon-delimited hex string)
79 80 81 |
# File 'lib/packetgen/header/ipv6/addr.rb', line 79 def to_human IPAddr.new(to_a.map { |a| a.to_i.to_s(16) }.join(':')).to_s end |