Pim.ned
NED File src/inet/routing/pim/Pim.ned
| Name | Type | Description |
|---|---|---|
| Pim | compound module |
Implements the Protocol Independent Multicast (PIM) routing protocol for IP multicast. This module integrates both PIM-DM (Dense Mode) and PIM-SM (Sparse Mode) implementations, using a splitter to direct packets to the appropriate mode based on interface configuration. PIM builds distribution trees for efficient multicast data delivery across IP networks. |
| PimChecksumInsertionHook | simple module |
Provides CRC (Cyclic Redundancy Check) insertion functionality for PIM packets. This hook ensures data integrity by calculating and inserting CRC values into outgoing PIM protocol messages before they are transmitted over the network. |
Source code
// // Copyright (C) 2013 Brno University of Technology (http://nes.fit.vutbr.cz/ansa) // // SPDX-License-Identifier: LGPL-3.0-or-later // // Authors: Veronika Rybova, Vladimir Vesely ([email protected]), // Tamas Borbely ([email protected]) package inet.routing.pim; import inet.common.SimpleModule; import inet.common.Module; import inet.routing.contract.IPim; import inet.routing.pim.modes.PimDm; import inet.routing.pim.modes.PimSm; import inet.routing.pim.tables.PimInterfaceTable; import inet.routing.pim.tables.PimNeighborTable; // // Implements the Protocol Independent Multicast (PIM) routing protocol for // IP multicast. This module integrates both PIM-DM (Dense Mode) and PIM-SM // (Sparse Mode) implementations, using a splitter to direct packets to the // appropriate mode based on interface configuration. PIM builds distribution // trees for efficient multicast data delivery across IP networks. // module Pim extends Module like IPim { parameters: @class(Pim); @display("i=block/network2"); string interfaceTableModule; string routingTableModule; string checksumMode @enum("declared", "computed") = default("declared"); *.interfaceTableModule = default(absPath(this.interfaceTableModule)); *.routingTableModule = default(absPath(this.routingTableModule)); *.pimInterfaceTableModule = default("^.pimInterfaceTable"); *.pimNeighborTableModule = default("^.pimNeighborTable"); gates: input networkLayerIn; output networkLayerOut; submodules: pimSplitter: PimSplitter { parameters: @display("p=250,150"); } pimDM: PimDm { parameters: @display("p=400,200"); } pimSM: PimSm { parameters: @display("p=400,100"); } pimInterfaceTable: PimInterfaceTable { parameters: @display("p=100,100;is=s"); } pimNeighborTable: PimNeighborTable { parameters: @display("p=100,200;is=s"); } connections: // pimDM pimSplitter.pimDMOut --> pimDM.ipIn; pimSplitter.pimDMIn <-- pimDM.ipOut; // pimSM pimSplitter.pimSMOut --> pimSM.ipIn; pimSplitter.pimSMIn <-- pimSM.ipOut; // splitter out pimSplitter.ipOut --> { @display("m=s"); } --> networkLayerOut; pimSplitter.ipIn <-- { @display("m=s"); } <-- networkLayerIn; } // // Provides CRC (Cyclic Redundancy Check) insertion functionality for PIM packets. // This hook ensures data integrity by calculating and inserting CRC values into // outgoing PIM protocol messages before they are transmitted over the network. // simple PimChecksumInsertionHook extends SimpleModule { parameters: @class(PimChecksumInsertionHook); }