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

MldMessage

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

b

rawBin

string[]

rawHex

string[]

regionTags

SharingRegionTagSet::TagBaseRegionTag[]

chunkLength

type

Icmpv6Type

1 byte int code; // 1 byte //TODO this should be specific to different ICMP types.

chksum

int

2 bytes

checksumMode

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

Ipv6Address

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

Ipv6AddressVector

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
}

File: src/inet/networklayer/icmpv6/Mldv2Message.msg