Simple Module Ieee8021dRelay

Package: inet.linklayer.ieee8021d.relay
File: src/inet/linklayer/ieee8021d/relay/Ieee8021dRelay.ned

C++ definition

This modul forwards frames (EtherFrame) based on their destination MAC addresses to appropriate ports.

It can work in two mode:

See also: EtherFrame, MACAddressTable, STP, RSTP

Ieee8021dRelay

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
interfaceTablePath string "^.interfaceTable"

The path to the InterfaceTable module

macTablePath string "^.macTable"

The path to the MACAddressTable module

Properties:

Name Value Description
display i=block/broadcast;bgb=425,114

Gates:

Name Direction Size Description
ifIn [ ] input
ifOut [ ] output
stpIn input
stpOut output

Signals:

Name Type Unit
packetReceivedFromLower cPacket
packetSentToLower cPacket

Source code:

//
// This modul forwards frames (~EtherFrame) based on their destination MAC addresses to appropriate ports.
//
// It can work in two mode:
// - STP unaware mode (If no module connected to its STP gate):
//     Looks up the frames destination address in the ~MACAddressTable, if it found the address, sends through
//	   that port, or otherwise broadcasts it.
// - STP aware mode (If an ~STP or ~RSTP module connected to its STP gate):
//     Handles BPDU frames.
//     If relaying a message also checks the port's status in the InterfaceTable.
//
// @see EtherFrame, MACAddressTable, STP, RSTP
//
simple Ieee8021dRelay like IMACRelayUnit
{
    parameters:
        string interfaceTablePath = default("^.interfaceTable"); // The path to the InterfaceTable module
        string macTablePath = default("^.macTable");             // The path to the MACAddressTable module
        @display("i=block/broadcast;bgb=425,114");
        @signal[packetSentToLower](type=cPacket);
        @signal[packetReceivedFromLower](type=cPacket);
    gates:
        input ifIn[];
        output ifOut[];
        input stpIn @loose;
        output stpOut @loose;
}