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).

Author:: Andras Varga

InterfaceTable

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.

EtherSwitch 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 Ipv4MulticastGroupInfo
ipv4MulticastGroupJoined Ipv4MulticastGroupInfo
ipv4McastChange Ipv4MulticastGroupSourceInfo
ipv4MulticastGroupRegistered Ipv4MulticastGroupInfo
interfaceDeleted InterfaceEntry
interfaceStateChanged InterfaceEntryChangeDetails
interfaceIpv6ConfigChanged InterfaceEntryChangeDetails
ipv6MulticastGroupJoined Ipv6MulticastGroupInfo
interfaceIpv4ConfigChanged InterfaceEntryChangeDetails
ipv6MulticastGroupLeft Ipv6MulticastGroupInfo
interfaceConfigChanged InterfaceEntryChangeDetails
ipv4MulticastGroupUnregistered Ipv4MulticastGroupInfo
interfaceGnpConfigChanged InterfaceEntryChangeDetails
interfaceCreated InterfaceEntry

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).
//
// @author: Andras Varga
//
simple InterfaceTable
{
    parameters:
        bool displayAddresses = default(false);  // whether to display IP addresses on links
        @display("i=block/table");
        @signal[interfaceCreated](type=InterfaceEntry);
        @signal[interfaceDeleted](type=InterfaceEntry);
        @signal[interfaceStateChanged](type=InterfaceEntryChangeDetails);
        @signal[interfaceConfigChanged](type=InterfaceEntryChangeDetails);
        @signal[interfaceIpv4ConfigChanged](type=InterfaceEntryChangeDetails);
        @signal[interfaceIpv6ConfigChanged](type=InterfaceEntryChangeDetails);
        @signal[interfaceGnpConfigChanged](type=InterfaceEntryChangeDetails);
        @signal[ipv4MulticastGroupJoined](type=Ipv4MulticastGroupInfo);
        @signal[ipv4MulticastGroupLeft](type=Ipv4MulticastGroupInfo);
        @signal[ipv4McastChange](type=Ipv4MulticastGroupSourceInfo);
        @signal[ipv4MulticastGroupRegistered](type=Ipv4MulticastGroupInfo);
        @signal[ipv4MulticastGroupUnregistered](type=Ipv4MulticastGroupInfo);
        @signal[ipv6MulticastGroupJoined](type=Ipv6MulticastGroupInfo);
        @signal[ipv6MulticastGroupLeft](type=Ipv6MulticastGroupInfo);
}

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