Pim

Package: inet.routing.pim

Pim

compound module

(no description)

pimSplitter : PimSplitter

~PimSplitter module dispatches PIM packets received from the network layer according to the PIM...

Source:
pimSplitter: PimSplitter {
    parameters:
        @display("p=250,150");
} pimDM : PimDm

Implementation of PIM-DM protocol (RFC 3973).

Source:
pimDM: PimDm {
    parameters:
        @display("p=400,200");
} pimSM : PimSm

Implementation of PIM-SM protocol (RFC 4601).

Source:
pimSM: PimSm {
    parameters:
        @display("p=400,100");
} pimInterfaceTable : PimInterfaceTable

The PimInterfaceTable module contains the PIM specific configuration parameters and state of the...

Source:
pimInterfaceTable: PimInterfaceTable {
    parameters:
        @display("p=100,100;is=s");
} pimNeighborTable : PimNeighborTable

The PimNeighborTable module contains information about neighboring PIM routers.

Source:
pimNeighborTable: PimNeighborTable {
    parameters:
        @display("p=100,200;is=s");
}

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

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::handleRegisterProtocolhandleRegisterProtocol

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(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;
}

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