Pim

Package: inet.routing.pim

Pim

compound module

(no description)

PimSplitter PimDm PimSm PimInterfaceTable PimNeighborTable

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.

Parameters

Name Type Default value Description
interfaceTableModule string
routingTableModule string
crcMode string "declared"

Properties

Name Value Description
class Pim
display i=block/network2

Gates

Name Direction Size Description
networkLayerIn input
networkLayerOut output

Unassigned submodule parameters

Name Type Default value Description
pimSplitter.interfaceTableModule string
pimSplitter.pimInterfaceTableModule string
pimDM.interfaceTableModule string
pimDM.routingTableModule string
pimDM.pimInterfaceTableModule string
pimDM.pimNeighborTableModule string
pimDM.holdTime double 3.5 * helloPeriod
pimSM.interfaceTableModule string
pimSM.routingTableModule string
pimSM.pimInterfaceTableModule string
pimSM.pimNeighborTableModule string
pimSM.RP string ""
pimSM.designatedRouterPriority int -1
pimSM.holdTime double 3.5 * helloPeriod
pimSM.joinPrunePeriod double 60s

period between Join/Prune messages (called t_periodic in the RFC)

pimInterfaceTable.interfaceTableModule string
pimInterfaceTable.pimConfig xml xml("")

Source code

module Pim like IPim
{
    parameters:
        @class(Pim);
        @display("i=block/network2");
        string interfaceTableModule;
        string routingTableModule;
        string crcMode @enum("declared","computed") = default("declared");
        *.interfaceTableModule = default(absPath(interfaceTableModule));
        *.routingTableModule = default(absPath(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;
}

File: src/inet/routing/pim/Pim.ned