Class: PacketGen::Header::IPv6::Addr
- Inherits:
-
Base
- Object
- Types::Fields
- Base
- PacketGen::Header::IPv6::Addr
- Defined in:
- lib/packetgen/header/ipv6.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.
Attributes inherited from Base
Instance Method Summary collapse
-
#from_human(str) ⇒ self
Read a colon-delimited address.
-
#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 inherited from Base
bind_header, #header_id, inherited, #ip_header, known_headers, #parse?, #protocol_name
Methods inherited from Types::Fields
#[], #[]=, #body=, define_bit_fields_on, define_field, define_field_after, define_field_before, #fields, #force_binary, inherited, #initialize, #inspect, #read, #sz, #to_h, #to_s
Constructor Details
This class inherits a constructor from PacketGen::Types::Fields
Instance Attribute Details
#a1 ⇒ Integer
1st 2-byte word of IPv6 address
55 |
# File 'lib/packetgen/header/ipv6.rb', line 55 define_field :a1, Types::Int16 |
#a2 ⇒ Integer
2nd 2-byte word of IPv6 address
59 |
# File 'lib/packetgen/header/ipv6.rb', line 59 define_field :a2, Types::Int16 |
#a3 ⇒ Integer
3rd 2-byte word of IPv6 address
63 |
# File 'lib/packetgen/header/ipv6.rb', line 63 define_field :a3, Types::Int16 |
#a4 ⇒ Integer
4th 2-byte word of IPv6 address
67 |
# File 'lib/packetgen/header/ipv6.rb', line 67 define_field :a4, Types::Int16 |
#a5 ⇒ Integer
5th 2-byte word of IPv6 address
71 |
# File 'lib/packetgen/header/ipv6.rb', line 71 define_field :a5, Types::Int16 |
#a6 ⇒ Integer
6th 2-byte word of IPv6 address
75 |
# File 'lib/packetgen/header/ipv6.rb', line 75 define_field :a6, Types::Int16 |
#a7 ⇒ Integer
7th 2-byte word of IPv6 address
79 |
# File 'lib/packetgen/header/ipv6.rb', line 79 define_field :a7, Types::Int16 |
#a8 ⇒ Integer
8th 2-byte word of IPv6 address
83 |
# File 'lib/packetgen/header/ipv6.rb', line 83 define_field :a8, Types::Int16 |
Instance Method Details
#from_human(str) ⇒ self
Read a colon-delimited address
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/packetgen/header/ipv6.rb', line 88 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 |
#to_a ⇒ Array<Integer>
Return an array of address 16-bit words
112 113 114 |
# File 'lib/packetgen/header/ipv6.rb', line 112 def to_a @fields.values end |
#to_human ⇒ String
Addr6 in human readable form (colon-delimited hex string)
106 107 108 |
# File 'lib/packetgen/header/ipv6.rb', line 106 def to_human IPAddr.new(to_a.map { |a| a.to_i.to_s(16) }.join(':')).to_s end |