InterfaceTable

Package: inet.networklayer.common

InterfaceTable

simple module

Keeps the table of network interfaces.

Interfaces are dynamically registered by the corresponding L2 modules, e.g. PppInterface. In addition to registered interfaces, a loopback interface will also be created. This table only contains protocol-independent properties of interfaces -- IPv4 or IPv6 specific per-interface data (addresses etc) are kept in Ipv4RoutingTable and Ipv6RoutingTable. Must be named as "interfaceTable".

This module has no gates; all functionality can be accessed via member functions of the C++ module class. For detailed info, please see the C++ documentation of the class (Doxygen).

Used in compound modules

Name Type Description
AccessPoint compound module

A generic access point supporting multiple wireless radios, and multiple ethernet ports. The type of the ethernet MAC, relay unit and wireless card can be specified as parameters.

EthernetHost compound module

An example host with one Ethernet port and a traffic generator that generates request-reply traffic directly over Ethernet. This host model does not contain higher layer protocols (IP, TCP). By default it is configured to use half-duplex MAC (CSMA/CD).

EthernetSwitch compound module

Model of an Ethernet switch.

LdpMplsRouter compound module

An LDP-capable router.

LinkLayerNodeBase compound module (no description)
RsvpMplsRouter compound module

An RSVP-TE capable router.

Parameters

Name Type Default value Description
displayAddresses bool false

whether to display IP addresses on links

Properties

Name Value Description
display i=block/table

Signals

Name Type Unit
ipv4MulticastGroupLeft inet::Ipv4MulticastGroupInfo
ipv4MulticastGroupJoined inet::Ipv4MulticastGroupInfo
ipv4McastChange inet::Ipv4MulticastGroupSourceInfo
ipv4MulticastGroupRegistered inet::Ipv4MulticastGroupInfo
interfaceDeleted inet::NetworkInterface
interfaceStateChanged inet::NetworkInterfaceChangeDetails
interfaceIpv6ConfigChanged inet::NetworkInterfaceChangeDetails
ipv6MulticastGroupJoined inet::Ipv6MulticastGroupInfo
interfaceIpv4ConfigChanged inet::NetworkInterfaceChangeDetails
ipv6MulticastGroupLeft inet::Ipv6MulticastGroupInfo
interfaceConfigChanged inet::NetworkInterfaceChangeDetails
ipv4MulticastGroupUnregistered inet::Ipv4MulticastGroupInfo
interfaceGnpConfigChanged inet::NetworkInterfaceChangeDetails
interfaceCreated inet::NetworkInterface

Direct method calls (observed)

call tofunctioninfo
EthernetMacLayerinet::EthernetMacLayer::receiveSignalinterfaceStateChanged
Rstpinet::Rstp::receiveSignalinterfaceStateChanged
GlobalArpinet::GlobalArp::receiveSignalinterfaceIpv4ConfigChanged
GlobalArpinet::GlobalArp::receiveSignalinterfaceIpv6ConfigChanged
Ipv4NodeConfiguratorinet::Ipv4NodeConfigurator::receiveSignalinterfaceStateChanged
Ipv4RoutingTableinet::Ipv4RoutingTable::receiveSignalinterfaceConfigChanged
Ipv4RoutingTableinet::Ipv4RoutingTable::receiveSignalinterfaceIpv4ConfigChanged
Ipv4RoutingTableinet::Ipv4RoutingTable::receiveSignalinterfaceStateChanged
Ipv6RoutingTableinet::Ipv6RoutingTable::receiveSignalinterfaceConfigChanged
Ipv6RoutingTableinet::Ipv6RoutingTable::receiveSignalinterfaceIpv6ConfigChanged
Ipv6RoutingTableinet::Ipv6RoutingTable::receiveSignalinterfaceStateChanged
NextHopRoutingTableinet::NextHopRoutingTable::receiveSignalinterfaceConfigChanged
NextHopRoutingTableinet::NextHopRoutingTable::receiveSignalinterfaceIpv4ConfigChanged
NextHopRoutingTableinet::NextHopRoutingTable::receiveSignalinterfaceStateChanged
Ieee80211ScalarRadioMediuminet::physicallayer::RadioMedium::receiveSignalinterfaceConfigChanged
EigrpIpv4Pdminet::eigrp::EigrpIpv4Pdm::receiveSignalinterfaceConfigChanged
EigrpIpv4Pdminet::eigrp::EigrpIpv4Pdm::receiveSignalinterfaceStateChanged
EigrpIpv6Pdminet::eigrp::EigrpIpv6Pdm::receiveSignalinterfaceConfigChanged
EigrpIpv6Pdminet::eigrp::EigrpIpv6Pdm::receiveSignalinterfaceStateChanged
Ospfv2inet::ospfv2::Ospfv2::receiveSignalinterfaceStateChanged
Ripinet::Rip::receiveSignalinterfaceStateChanged

Called methods (observed)

functioninfocall from
inet::InterfaceTable::findFirstLoopbackInterfacefindFirstLoopbackInterfaceIpv4, Ipv4RoutingTable
inet::InterfaceTable::findFirstMulticastInterfacefindFirstMulticastInterfaceIpv4
inet::InterfaceTable::findFirstNonLoopbackInterfacefindFirstNonLoopbackInterfaceFlooding, AdaptiveProbabilisticBroadcast, ProbabilisticBroadcast, WiseRoute
inet::InterfaceTable::findInterfaceByNamefindInterfaceByNameDhcpClient, DhcpServer, EtherAppClient, EtherTrafGen, NetPerfMeter, PingApp, SctpClient, TcpSessionApp, TunnelApp, AckingWirelessInterface, BMacInterface, WirelessInterface, CsmaCaInterface, EthernetInterface, LayeredEthernetInterface, MacForwardingTable, EthernetCutthroughInterface, Ieee80211Interface, Ieee802154NarrowbandInterface, Gptp, LMacInterface, LoopbackInterface, PppInterface, ShortcutInterface, TunInterface, VirtualInterface, VirtualTunnel, XMacInterface, HostAutoConfigurator, Ipv4NetworkConfigurator, Ipv4RoutingTable, Mpls, RsvpTe, LinkStateRouting, Aodv, EigrpIpv4Pdm, EigrpIpv6Pdm, Gpsr, Ospfv2, Ospfv3Splitter, Ospfv3Process
inet::InterfaceTable::findInterfaceByNodeInputGateIdfindInterfaceByNodeInputGateIdFailureProtectionConfigurator, MacForwardingTableConfigurator, StreamRedundancyConfigurator, EagerGateScheduleConfigurator, Z3GateScheduleConfigurator, Ipv4NetworkConfigurator, Ipv6FlatNetworkConfigurator, NextHopNetworkConfigurator, SingleRateThreeColorMeter, TokenBucketMeter, Ted, ShortcutRadio
inet::InterfaceTable::findInterfaceByNodeOutputGateIdfindInterfaceByNodeOutputGateIdFailureProtectionConfigurator, MacForwardingTableConfigurator, StreamRedundancyConfigurator, EagerGateScheduleConfigurator, Z3GateScheduleConfigurator, StpTester, Ipv4NetworkConfigurator, Ipv6FlatNetworkConfigurator, NextHopNetworkConfigurator
inet::InterfaceTable::handleOperationStagehandleOperationStageScenarioManager, SimpleEpEnergyManagement, SimpleEpEnergyStorage
inet::InterfaceTable::interfaceChangedinterfaceChangedDhcpClient, AckingMac, AckingWirelessInterface, BMac, BMacInterface, WirelessInterface, L2NodeConfigurator, CsmaCaInterface, CsmaCaMac, EthernetInterface, LayeredEthernetInterface, EthernetCsmaMac, EthernetMac, EthernetCutthroughInterface, Ieee80211Interface, Ieee80211Mac, Ieee802154Mac, Ieee802154NarrowbandInterface, Ieee802154NarrowbandMac, LMac, LMacInterface, Loopback, LoopbackInterface, Ppp, PppInterface, ShortcutInterface, ShortcutMac, TunInterface, VirtualInterface, VirtualTunnel, XMac, XMacInterface, HostAutoConfigurator, Ipv4NodeConfigurator, Ipv6NeighbourDiscovery, Igmpv2, Igmpv3, Ipv4RoutingTable, Ipv6RoutingTable, NextHopRoutingTable, Dsdv, Dymo, EigrpIpv4Pdm, EigrpIpv6Pdm, Gpsr, Ospfv2, Ospfv3Splitter, Ospfv3Process, PimDm, PimSm, Udp

Tagging operations (observed)

tagTypetagAction
clearTags
inet::Ipv4InterfaceDatafindTag

Source code

//
// Keeps the table of network interfaces.
//
// Interfaces are dynamically registered by the corresponding L2 modules, e.g.
// ~PppInterface. In addition to registered interfaces, a loopback interface
// will also be created. This table only contains protocol-independent
// properties of interfaces -- IPv4 or IPv6 specific per-interface data
// (addresses etc) are kept in ~Ipv4RoutingTable and ~Ipv6RoutingTable.
// Must be named as "interfaceTable".
//
// This module has no gates; all functionality can be accessed via member
// functions of the C++ module class. For detailed info, please see the C++
// documentation of the class (Doxygen).
//
simple InterfaceTable
{
    parameters:
        bool displayAddresses = default(false);  // whether to display IP addresses on links
        @display("i=block/table");
        @signal[interfaceCreated](type=inet::NetworkInterface);
        @signal[interfaceDeleted](type=inet::NetworkInterface);
        @signal[interfaceStateChanged](type=inet::NetworkInterfaceChangeDetails);
        @signal[interfaceConfigChanged](type=inet::NetworkInterfaceChangeDetails);
        @signal[interfaceIpv4ConfigChanged](type=inet::NetworkInterfaceChangeDetails);
        @signal[interfaceIpv6ConfigChanged](type=inet::NetworkInterfaceChangeDetails);
        @signal[interfaceGnpConfigChanged](type=inet::NetworkInterfaceChangeDetails);
        @signal[ipv4MulticastGroupJoined](type=inet::Ipv4MulticastGroupInfo);
        @signal[ipv4MulticastGroupLeft](type=inet::Ipv4MulticastGroupInfo);
        @signal[ipv4McastChange](type=inet::Ipv4MulticastGroupSourceInfo);
        @signal[ipv4MulticastGroupRegistered](type=inet::Ipv4MulticastGroupInfo);
        @signal[ipv4MulticastGroupUnregistered](type=inet::Ipv4MulticastGroupInfo);
        @signal[ipv6MulticastGroupJoined](type=inet::Ipv6MulticastGroupInfo);
        @signal[ipv6MulticastGroupLeft](type=inet::Ipv6MulticastGroupInfo);
}

File: src/inet/networklayer/common/InterfaceTable.ned