NED File src/inet/node/base/NetworkLayerNodeBase.ned
Name | Type | Description |
---|---|---|
NetworkLayerNodeBase | compound module | (no description) |
Source code
// // Copyright (C) OpenSim Ltd. // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see <http://www.gnu.org/licenses/>. // package inet.node.base; import inet.common.MessageDispatcher; import inet.networklayer.contract.INetworkLayer; module NetworkLayerNodeBase extends LinkLayerNodeBase { parameters: bool hasIpv4 = default(true); bool hasIpv6 = default(false); bool hasGn = default(false); bool forwarding = default(false); bool multicastForwarding = default(false); *.forwarding = forwarding; *.multicastForwarding = multicastForwarding; @figure[networkLayer](type=rectangle; pos=250,306; size=1000,130; fillColor=#00ff00; lineColor=#808080; cornerRadius=5; fillOpacity=0.1); @figure[networkLayer.title](type=text; pos=1245,311; anchor=ne; text="network layer"); submodules: ipv4: <default("Ipv4NetworkLayer")> like INetworkLayer if hasIpv4 { parameters: @display("p=375,376;q=queue"); } ipv6: <default("Ipv6NetworkLayer")> like INetworkLayer if hasIpv6 { parameters: @display("p=525,376;q=queue"); } generic: <default("")> like INetworkLayer if hasGn { parameters: @display("p=675,376;q=queue"); } nl: MessageDispatcher { parameters: @display("p=750,446;b=1000,5,,,,1"); } connections allowunconnected: ipv4.ifIn <-- nl.out++ if hasIpv4; ipv4.ifOut --> nl.in++ if hasIpv4; ipv6.ifIn <-- nl.out++ if hasIpv6; ipv6.ifOut --> nl.in++ if hasIpv6; generic.ifIn <-- nl.out++ if exists(generic); generic.ifOut --> nl.in++ if exists(generic); for i=0..numLoInterfaces-1 { nl.out++ --> lo[i].upperLayerIn; lo[i].upperLayerOut --> nl.in++; } for i=0..sizeof(radioIn)-1 { wlan[i].upperLayerOut --> nl.in++; wlan[i].upperLayerIn <-- nl.out++; } for i=0..sizeof(ethg)-1 { eth[i].upperLayerOut --> nl.in++; eth[i].upperLayerIn <-- nl.out++; } for i=0..sizeof(pppg)-1 { ppp[i].upperLayerOut --> nl.in++; ppp[i].upperLayerIn <-- nl.out++; } for i=0..numTunInterfaces-1 { tun[i].upperLayerOut --> nl.in++; tun[i].upperLayerIn <-- nl.out++; } for i=0..numVlanInterfaces-1 { vlan[i].upperLayerOut --> nl.in++; vlan[i].upperLayerIn <-- nl.out++; } }