Igmpv3Query

Namespace inet

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.

Extends

Name Type Description
Igmpv2Query (unknown -- not in documented files)

Fields

Name Type Description
chunkLength

12 + sourceListArraySize * 4

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

Packet operations (observed)

actionmodule
insertAtFrontIgmpv3
peekAtFrontIgmpv3

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