Igmpv3Query

Igmpv3Query

class

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

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends

Name Type Description
Igmpv2Query class

FIXME Igmpv1Query and Igmpv2Query differs only value of code field.

Fields

Name Type Description
chunkLength b
resv uint8_t

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

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

maxRespTimeCode uint8_t

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

type IgmpType

1 byte

groupAddress Ipv4Address
crc 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).

crcMode CrcMode

0 bytes, inet only

mutable bool
complete bool
correct bool
properlyRepresented bool
rawBin string[]
rawHex string[]
tags RegionTagSet::cObjectRegionTag[]

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