Class: PacketGen::Header::MLDv2::MLQ
- Inherits:
-
PacketGen::Header::MLD
- Object
- BinStruct::Struct
- Base
- PacketGen::Header::MLD
- PacketGen::Header::MLDv2::MLQ
- Defined in:
- lib/packetgen/header/mldv2/mlq.rb
Overview
This class supports MLDv2 Multicast Listener Query messages.
From RFC 3810, a MLDv2 Multicast Listener Query message has the following format:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 130 | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Maximum Response Code | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| |
* Multicast Address *
| |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Resv |S| QRV | QQIC | Number of Sources (N) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| |
* Source Address [1] *
| |
* *
| |
+- -+
| |
* *
| |
* Source Address [2] *
| |
* *
| |
+- . -+
. . .
. . .
+- -+
| |
* *
| |
* Source Address [N] *
| |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
type
, code
and checksum
are attributes from ICMPv6 header.
MLQ attributes are:
-
#max_resp_code (
BinStruct::Int16
), -
#reserved (
BinStruct::Int16
), -
#flags (
BinStruct::Int8
), with sub-fields:-
a 4-bit #flag_resv field,
-
a 1-bit #flag_s boolean,
-
a 3-bit #flag_qrv field,
-
-
#qqic (
BinStruct::Int8
), -
#number_of_sources (
BinStruct::Int16
), -
and #source_addr, a IPv6::ArrayOfAddr.
Max Resp Delay
Max Resp Delay is the real delay value. Max Resp Code is the encoded delay. So #max_resp_delay and #max_resp_code attributes reflect this difference.
Instance Attribute Summary collapse
-
#flag_qrv ⇒ Integer
3-bit QRV (Querier’s Robustness Variable).
-
#flag_resv ⇒ Integer
4-bit reserved field in #flags.
-
#flag_s ⇒ Integer
S Flag (Suppress Router-Side Processing).
-
#flags ⇒ Integer
8-bit flags.
-
#number_of_sources ⇒ Integer
16-bit number of sources.
-
#qqic ⇒ Integer
Get QQIC value.
-
#source_addr ⇒ IPv6::ArrayOfAddr
Array of IPv6 source addresses.
Attributes inherited from PacketGen::Header::MLD
Instance Method Summary collapse
-
#max_resp_delay ⇒ Integer
Getter for
max_resp_code
for MLDv2 packets. -
#max_resp_delay=(value) ⇒ Integer
Setter for
max_resp_code
for MLDv2 packets.
Methods inherited from PacketGen::Header::MLD
Methods inherited from Base
bind, calculate_and_set_length, #header_id, inherited, #initialize, #ip_header, #ll_header
Methods included from PacketGen::Headerable
#added_to_packet, included, #method_name, #packet, #packet=, #parse?, #protocol_name, #read, #to_s
Constructor Details
This class inherits a constructor from PacketGen::Header::Base
Instance Attribute Details
#flag_qrv ⇒ Integer
3-bit QRV (Querier’s Robustness Variable)
92 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 92 define_bit_attr_before :body, :flags, flag_resv: 4, flag_s: 1, flag_qrv: 3 |
#flag_resv ⇒ Integer
4-bit reserved field in #flags
92 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 92 define_bit_attr_before :body, :flags, flag_resv: 4, flag_s: 1, flag_qrv: 3 |
#flag_s ⇒ Integer
S Flag (Suppress Router-Side Processing)
92 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 92 define_bit_attr_before :body, :flags, flag_resv: 4, flag_s: 1, flag_qrv: 3 |
#flags ⇒ Integer
8-bit flags
92 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 92 define_bit_attr_before :body, :flags, flag_resv: 4, flag_s: 1, flag_qrv: 3 |
#number_of_sources ⇒ Integer
16-bit number of sources
100 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 100 define_attr_before :body, :number_of_sources, BinStruct::Int16 |
#qqic ⇒ Integer
May return a different value from value previously set, as a float encoding is used to encode big values. See IGMPv3.decode.
Get QQIC value
96 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 96 define_attr_before :body, :qqic, BinStruct::Int8 |
#source_addr ⇒ IPv6::ArrayOfAddr
Array of IPv6 source addresses
104 105 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 104 define_attr_before :body, :source_addr, IPv6::ArrayOfAddr, builder: ->(h, t) { t.new(counter: h[:number_of_sources]) } |
Instance Method Details
#max_resp_delay ⇒ Integer
May return a different value from value previously set, as a float encoding is used to encode big values. See PacketGen::Header::MLDv2.decode.
Getter for max_resp_code
for MLDv2 packets. Use PacketGen::Header::MLDv2.decode.
111 112 113 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 111 def max_resp_delay MLDv2.decode(self[:max_resp_delay].to_i) end |
#max_resp_delay=(value) ⇒ Integer
Setter for max_resp_code
for MLDv2 packets. Use PacketGen::Header::MLDv2.encode.
119 120 121 |
# File 'lib/packetgen/header/mldv2/mlq.rb', line 119 def max_resp_delay=(value) self[:max_resp_delay].value = MLDv2.encode(value) end |