Igmpv3Query

Namespace: inet

class Igmpv3Query

Igmpv3Query extends Igmpv2Query, because Igmpv2 routers must accept Igmpv3Query packets.

Note: in Igmpv3Query the maxResponseTime field is renamed to maxResponseCode and it is interpreted differently than in Igmpv2.

Usage diagram

Inheritance diagram

Extends

Name

Type

Description

Igmpv2Query

class

(no description)

Fields

Name

Type

Description

id

int

mutable

bool

complete

bool

correct

bool

properlyRepresented

bool

chunkLength

b

rawBin

string[]

rawHex

string[]

regionTags

SharingRegionTagSet::TagBaseRegionTag[]

type

IgmpType

1 byte

checksum

uint16_t

2 bytes, The checksum is the 16-bit one’s complement of the one’s complement sum of the whole IGMP message (the entire IP payload).

checksumMode

ChecksumMode

0 bytes, inet only

type

groupAddress

Ipv4Address

chunkLength

maxRespTimeCode

uint8_t

stored in code in units of 1/10 second, 0.1-25.5s

chunkLength

12 + sourceListArraySize * 4 maxRespTime stored in code in units of 1/10 second 0-127: 0-12.7s 128-255: 1eeemmmm : (mant | 0x10) << (exp + 3)

resv

uint8_t

4 bit

suppressRouterProc

bool

1 bit, S flag

robustnessVariable

uint8_t

3 bit, QRV

queryIntervalCode

uint8_t

8 bit, QQIC, in seconds, format similar to macRespTime (0nnnnnnn or 1eeemmmm)

sourceList

Ipv4AddressVector

16 + n*32 bit

Properties

Name

Value

Description

beforeChange

handleChange()

descriptor

readonly

existingClass

packetData

Source code

//
// Igmpv3Query extends Igmpv2Query, because
// Igmpv2 routers must accept Igmpv3Query packets.
//
// Note: in Igmpv3Query the maxResponseTime field is
// renamed to maxResponseCode and it is interpreted
// differently than in Igmpv2.
class Igmpv3Query extends Igmpv2Query
{
    chunkLength = B(12);    // 12 + sourceListArraySize * 4
    // maxRespTime stored in `code` in units of 1/10 second
    //     0-127: 0-12.7s
    //   128-255: 1eeemmmm : (mant | 0x10) << (exp + 3)
    uint8_t resv = 0;    // 4 bit
    bool suppressRouterProc;    // 1 bit, S flag
    uint8_t robustnessVariable;    // 3 bit, QRV
    uint8_t queryIntervalCode;    // 8 bit, QQIC, in seconds, format similar to macRespTime (0nnnnnnn or 1eeemmmm)
    Ipv4AddressVector sourceList;    // 16 + n*32 bit
}

File: src/inet/networklayer/ipv4/IgmpMessage.msg