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