Ieee8022LlcLayer

Package: inet.linklayer.ieee8022

compound module Ieee8022LlcLayer

(no description)

Ieee8022LlcLayerupperLayerIn --> socketCommandProcessor.insocketCommandProcessor.out --> classifier.inclassifier.out++ --> snapInserter.in conditional: exists(snapInserter)?classifier.out++ --> m1.in++snapInserter.out --> m1.in++ conditional: exists(snapInserter)?m1.out --> llcInserter.inclassifier.out++ --> m2.in++ conditional: exists(llcInserter)?llcInserter.out --> m2.in++ conditional: exists(llcInserter)?m2.out --> lowerLayerOutlowerLayerIn --> dp.in++dp.out++ --> llcChecker.indp.out++ --> snapChecker.inllcChecker.out --> dp.in++snapChecker.out --> dp.in++dp.out++ --> protocolChecker.inprotocolChecker.out --> socketPacketProcessor.insocketPacketProcessor.out --> upperLayerOutsocketTable: inet.linklayer.ieee8022.Ieee8022LlcSocketTable Source: socketTable: Ieee8022LlcSocketTable if hasSocketSupport { @display("p=100,100"); }socketTablesocketCommandProcessor: inet.linklayer.ieee8022.Ieee8022LlcSocketCommandProcessor (like IPacketFlow) IPacketFlow: Interface for packet flows. Source: socketCommandProcessor: <default(hasSocketSupport ? "Ieee8022LlcSocketCommandProcessor" : "")> like IPacketFlow { @display("p=400,100"); }socketCommandProcessorclassifier: inet.queueing.classifier.PacketClassifier (like IPacketClassifier) PacketClassifier: Connects one packet producer to multiple packet consumers. IPacketClassifier: Interface for packet classifier modules. Source: classifier: <default("PacketClassifier")> like IPacketClassifier { @display("p=400,200"); }classifiersnapInserter: inet.linklayer.ieee8022.Ieee8022SnapInserter (like IIeee8022SnapInserter) Source: snapInserter: <default("Ieee8022SnapInserter")> like IIeee8022SnapInserter if typename != "" { @display("p=300,300"); }snapInserterm1: inet.queueing.common.PacketMultiplexer Connects multiple packet producers to one packet consumer. Source: m1: PacketMultiplexer { @display("p=300,400"); }m1llcInserter: inet.linklayer.ieee8022.Ieee8022LlcInserter (like IIeee8022LlcInserter) Source: llcInserter: <default("Ieee8022LlcInserter")> like IIeee8022LlcInserter if typename != "" { @display("p=300,500"); }llcInserterm2: inet.queueing.common.PacketMultiplexer Connects multiple packet producers to one packet consumer. Source: m2: PacketMultiplexer { @display("p=400,600"); }m2socketPacketProcessor: inet.linklayer.ieee8022.Ieee8022LlcSocketPacketProcessor (like IPacketFlow) IPacketFlow: Interface for packet flows. Source: socketPacketProcessor: <default(hasSocketSupport ? "Ieee8022LlcSocketPacketProcessor" : "")> like IPacketFlow { @display("p=700,100"); }socketPacketProcessorprotocolChecker: inet.protocolelement.common.ProtocolChecker Source: protocolChecker: ProtocolChecker { @display("p=700,200"); }protocolCheckerllcChecker: inet.linklayer.ieee8022.Ieee8022LlcChecker (like IIeee8022LlcChecker) Source: llcChecker: <default("Ieee8022LlcChecker")> like IIeee8022LlcChecker { @display("p=600,500"); }llcCheckersnapChecker: inet.linklayer.ieee8022.Ieee8022SnapChecker (like IIeee8022SnapChecker) Source: snapChecker: <default("Ieee8022SnapChecker")> like IIeee8022SnapChecker { @display("p=800,500"); }snapCheckerdp: inet.common.MessageDispatcher Facilitates the interconnection of applications, protocols, and network interfaces, dispatching m... Source: dp: MessageDispatcher { @display("p=700,400;b=100,5,,,,1"); }dp

Usage diagram

Inheritance diagram

Parameters

Name

Type

Default value

Description

hasSocketSupport

bool

false

Properties

Name

Value

Description

display

i=block/layer

Gates

Name

Direction

Size

Description

upperLayerIn

input

upperLayerOut

output

lowerLayerIn

input

lowerLayerOut

output

Unassigned submodule parameters

Name

Type

Default value

Description

socketTable.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

socketCommandProcessor.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

socketCommandProcessor.socketTableModule

string

classifier.displayStringTextFormat

string

“classified %p pk (%l)”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

classifier.reverseOrder

bool

false

classifier.classifierClass

string

Determines the output queue of packets, the parameter must be the name of a C++ class which implements the IPacketClassifierFunction interface and is registered via Register_Class

snapInserter.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

m1.displayStringTextFormat

string

“passed %p pk (%l)”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

m1.forwardServiceRegistration

bool

true

m1.forwardProtocolRegistration

bool

true

llcInserter.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

m2.displayStringTextFormat

string

“passed %p pk (%l)”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

m2.forwardServiceRegistration

bool

true

m2.forwardProtocolRegistration

bool

true

socketPacketProcessor.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

socketPacketProcessor.socketTableModule

string

protocolChecker.displayStringTextFormat

string

“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

protocolChecker.backpressure

bool

false

llcChecker.displayStringTextFormat

string

“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

llcChecker.backpressure

bool

false

snapChecker.displayStringTextFormat

string

“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

snapChecker.backpressure

bool

false

dp.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

dp.interfaceTableModule

string

Module path to the InterfaceTable module

dp.forwardServiceRegistration

bool

true

dp.forwardProtocolRegistration

bool

true

dp.interfaceMapping

object

{}

Maps network interface names to connected submodule names (e.g. {“eth0”: “bridging”}), overrides automatically learned dispatching; * overrides all learned network interfaces, ? overrides default

dp.serviceMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ethernetmac”: “bridging”}), overrides automatically learned dispatching; * overrides all learned services, ? overrides default

dp.protocolMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ipv4”: “bridging”}), overrides automatically learned dispatching; * overrides all learned protocols, ? overrides default

Source code

module Ieee8022LlcLayer like IIeee8022LlcLayer
{
    parameters:
        bool hasSocketSupport = default(false);
        @display("i=block/layer");
    gates:
        input upperLayerIn;
        output upperLayerOut;
        input lowerLayerIn;
        output lowerLayerOut;
    submodules:
        socketTable: Ieee8022LlcSocketTable if hasSocketSupport {
            @display("p=100,100");
        }
        socketCommandProcessor: <default(hasSocketSupport ? "Ieee8022LlcSocketCommandProcessor" : "")> like IPacketFlow {
            @display("p=400,100");
        }
        classifier: <default("PacketClassifier")> like IPacketClassifier {
            @display("p=400,200");
        }
        snapInserter: <default("Ieee8022SnapInserter")> like IIeee8022SnapInserter if typename != "" {
            @display("p=300,300");
        }
        m1: PacketMultiplexer {
            @display("p=300,400");
        }
        llcInserter: <default("Ieee8022LlcInserter")> like IIeee8022LlcInserter if typename != "" {
            @display("p=300,500");
        }
        m2: PacketMultiplexer {
            @display("p=400,600");
        }
        socketPacketProcessor: <default(hasSocketSupport ? "Ieee8022LlcSocketPacketProcessor" : "")> like IPacketFlow {
            @display("p=700,100");
        }
        protocolChecker: ProtocolChecker {
            @display("p=700,200");
        }
        llcChecker: <default("Ieee8022LlcChecker")> like IIeee8022LlcChecker {
            @display("p=600,500");
        }
        snapChecker: <default("Ieee8022SnapChecker")> like IIeee8022SnapChecker {
            @display("p=800,500");
        }
        dp: MessageDispatcher {
            @display("p=700,400;b=100,5,,,,1");
        }
    connections:
        upperLayerIn --> { @display("m=n"); } --> socketCommandProcessor.in;
        socketCommandProcessor.out --> classifier.in;
        classifier.out++ --> snapInserter.in if exists(snapInserter);
        classifier.out++ --> m1.in++;
        snapInserter.out --> m1.in++ if exists(snapInserter);
        m1.out --> llcInserter.in;
        classifier.out++ --> m2.in++ if exists(llcInserter);
        llcInserter.out --> m2.in++ if exists(llcInserter);
        m2.out --> { @display("m=s"); } --> lowerLayerOut;

        lowerLayerIn --> { @display("m=s"); } --> dp.in++;
        dp.out++ --> llcChecker.in;
        dp.out++ --> snapChecker.in;
        llcChecker.out --> dp.in++;
        snapChecker.out --> dp.in++;
        dp.out++ --> protocolChecker.in;
        protocolChecker.out --> socketPacketProcessor.in;
        socketPacketProcessor.out --> { @display("m=n"); } --> upperLayerOut;
}

File: src/inet/linklayer/ieee8022/Ieee8022LlcLayer.ned