Mldv2Query¶
Namespace: inet
class Mldv2Query
MLDv2 Multicast Listener Query (RFC 3810 §5.1, ICMPv6 type 130).
The first 24 bytes coincide with the MLDv1 Query (MldQuery), so an MLDv1 node can
parse the common part; an MLDv2 node recognizes the longer form by its length. The
inherited maxRespDelay field holds the 16-bit Maximum Response Code (RFC 3810 §5.1.3:
0-32767 in ms, else floating point 1eee mmmm mmmm mmmm).
Usage diagram¶
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
class |
Base class for MLDv1 messages (RFC 2710). Carried as ICMPv6 type 130 (Query), 131 (Report), 132 (Done). Inherits type, chksum, and checksumMode from Icmpv6Header. |
Fields¶
Name |
Type |
Description |
|---|---|---|
id |
int |
|
mutable |
bool |
|
complete |
bool |
|
correct |
bool |
|
properlyRepresented |
bool |
|
chunkLength |
||
rawBin |
string[] |
|
rawHex |
string[] |
|
regionTags |
||
chunkLength |
||
type |
1 byte int code; // 1 byte //TODO this should be specific to different ICMP types. |
|
chksum |
int |
2 bytes |
checksumMode |
4 bytes ‘type’ specific values |
|
code |
int |
always 0 for MLD (RFC 2710 §3) |
maxRespDelay |
uint16_t |
Maximum Response Delay, ms (16 bits) |
reserved |
uint16_t |
reserved (16 bits, must be 0) |
multicastAddress |
128-bit multicast group address |
|
chunkLength |
24 (MLDv1 Query) + 1 (Resv/S/QRV) + 1 (QQIC) + 2 (Nr of Sources); + sourceList*16 |
|
type |
130 |
|
resv |
uint8_t |
4 bits, reserved |
suppressRouterProc |
bool |
1 bit, S flag (suppress router-side processing) |
robustnessVariable |
uint8_t |
3 bits, QRV (Querier’s Robustness Variable) |
queryIntervalCode |
uint8_t |
8 bits, QQIC (Querier’s Query Interval Code) |
sourceList |
Nr of Sources (16 bits) + N * 128 bits |
Properties¶
Name |
Value |
Description |
|---|---|---|
beforeChange |
handleChange() |
|
descriptor |
readonly |
|
existingClass |
||
packetData |
Source code¶
//
// MLDv2 Multicast Listener Query (RFC 3810 §5.1, ICMPv6 type 130).
//
// The first 24 bytes coincide with the MLDv1 Query (~MldQuery), so an MLDv1 node can
// parse the common part; an MLDv2 node recognizes the longer form by its length. The
// inherited `maxRespDelay` field holds the 16-bit Maximum Response Code (RFC 3810 §5.1.3:
// 0-32767 in ms, else floating point 1eee mmmm mmmm mmmm).
//
class Mldv2Query extends MldMessage
{
chunkLength = B(28); // 24 (MLDv1 Query) + 1 (Resv/S/QRV) + 1 (QQIC) + 2 (Nr of Sources); + sourceList*16
type = ICMPv6_MLD_QUERY; // 130
uint8_t resv = 0; // 4 bits, reserved
bool suppressRouterProc = false; // 1 bit, S flag (suppress router-side processing)
uint8_t robustnessVariable = 0; // 3 bits, QRV (Querier's Robustness Variable)
uint8_t queryIntervalCode = 0; // 8 bits, QQIC (Querier's Query Interval Code)
Ipv6AddressVector sourceList; // Nr of Sources (16 bits) + N * 128 bits
}