Package: inet.networklayer.ipv4
Igmpv3
simple module(no description)
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| enabled | bool | true | |
| interfaceTableModule | string | ||
| routingTableModule | string | ||
| crcMode | string | "declared" | |
| robustnessVariable | int | 2 |
IGMP is roboust to (roboustnessVariable-1) packet loss |
| queryInterval | double | 125s | |
| queryResponseInterval | double | 10s | |
| groupMembershipInterval | double | (robustnessVariable * queryInterval) + queryResponseInterval | |
| otherQuerierPresentInterval | double | (robustnessVariable * queryInterval) + (queryResponseInterval / 2) | |
| startupQueryInterval | double | queryInterval / 4 | |
| startupQueryCount | int | robustnessVariable | |
| lastMemberQueryInterval | double | 1s | |
| lastMemberQueryCount | int | robustnessVariable | |
| unsolicitedReportInterval | double | 10s |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/cogwheel |
double version1RouterPresentInterval @unit(s) = default(400s); |
| selfMessageKinds | inet::IgmpTimerKind |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| ipIn | input |
delivered IGMP packets |
|
| ipOut | output |
to Ipv4 |
|
| routerIn | input | ||
| routerOut | output |
Scheduled messages (observed)
| msg | kind | ctrl | tags | msgname | context |
|---|---|---|---|---|---|
| omnetpp::cMessage | 0 | IgmpvN General Query timer | filled | ||
| omnetpp::cMessage | 3 | IgmpvN Host General Timer | filled |
Direct method calls (observed)
| call to | function | info |
|---|---|---|
| MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
| MessageDispatcher | inet::MessageDispatcher::handleRegisterProtocol | handleRegisterProtocol |
| InterfaceTable | inet::InterfaceTable::interfaceChanged | interfaceChanged |
| Igmpv3 | inet::Igmpv3::receiveSignal | ipv4McastChange |
Called methods (observed)
| function | info | call from |
|---|---|---|
| inet::Igmpv3::receiveSignal | ipv4McastChange | Igmpv3 |
Incoming messages (observed)
| gate | msg | kind | ctrl | srcModule | tags |
|---|---|---|---|---|---|
| ipIn | Packet | 0 | Ipv4 | DispatchProtocolReq, DscpInd, EcnInd, HopLimitInd, InterfaceInd, L3AddressInd, MacAddressInd, NetworkProtocolInd, PacketProtocolTag, TosInd |
Outgoing messages (observed)
| gate | msg | kind | ctrl | destModule | tags |
|---|---|---|---|---|---|
| ipOut | Packet | 0 | Ipv4 | DispatchProtocolInd, DispatchProtocolReq, HopLimitReq, InterfaceReq, Ipv4OptionsReq, L3AddressReq, PacketProtocolTag, DscpReq? |
Packet operations (observed)
| chunkType | packetAction |
|---|---|
| IgmpMessage | peekAtFront |
| Igmpv3Query | insertAtFront, peekAtFront |
| Igmpv3Report | insertAtFront, peekAtFront |
Shared Tagging operations (observed)
| tagType | tagAction |
|---|---|
| DispatchProtocolInd | addTagIfAbsent |
| DispatchProtocolReq | addTagIfAbsent |
| DscpReq | addTag |
| HopLimitReq | addTagIfAbsent |
| InterfaceInd | getTag |
| InterfaceReq | addTagIfAbsent |
| Ipv4OptionsReq | addTag |
| L3AddressInd | getTag |
| L3AddressReq | addTagIfAbsent |
| PacketProtocolTag | addTagIfAbsent |
Tagging operations (observed)
| tagType | tagAction |
|---|---|
| inet::Ipv4InterfaceData | findTagForUpdate, getTag, getTagForUpdate |
Source code
simple Igmpv3 like IIgmp { parameters: bool enabled = default(true); string interfaceTableModule; string routingTableModule; string crcMode @enum("declared","computed") = default("declared"); int robustnessVariable = default(2); // IGMP is roboust to (roboustnessVariable-1) packet loss double queryInterval @unit(s) = default(125s); double queryResponseInterval @unit(s) = default(10s); double groupMembershipInterval @unit(s) = default((robustnessVariable * queryInterval) + queryResponseInterval); double otherQuerierPresentInterval @unit(s) = default((robustnessVariable * queryInterval) + (queryResponseInterval / 2)); double startupQueryInterval @unit(s) = default(queryInterval / 4); int startupQueryCount = default(robustnessVariable); double lastMemberQueryInterval @unit(s) = default(1s); int lastMemberQueryCount = default(robustnessVariable); double unsolicitedReportInterval @unit(s) = default(10s); // double version1RouterPresentInterval @unit(s) = default(400s); @display("i=block/cogwheel"); @selfMessageKinds(inet::IgmpTimerKind); gates: input ipIn @labels(Ipv4ControlInfo/up); // delivered IGMP packets output ipOut @labels(Ipv4ControlInfo/down); // to ~Ipv4 input routerIn @labels(Ipv4ControlInfo/up); output routerOut @labels(Ipv4ControlInfo/down); }File: src/inet/networklayer/ipv4/Igmpv3.ned