Package: inet.networklayer.common
NetworkInterface
compound moduleServes as the base module for all network interfaces.
Display string directives:
- %i: interface ID
- %m: MAC address
- %n: interface name
- %a: network address
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.
Known subclasses
| Name | Type | Description |
|---|---|---|
| AckingWirelessInterface | compound module |
Implements a highly abstracted wireless network interface (NIC) that uses a trivial MAC protocol. It offers simplicity for scenarios where Layer 1 and 2 effects can be completely ignored, for example testing the basic functionality of a wireless ad-hoc routing protocol. |
| EthernetInterface | compound module |
Represents an Ethernet network interface. |
| EthernetPlcaInterface | compound module |
Implements a network interface that is suitable for use in Ethernet 10BASE-T1S multidrop links. Such a multidrop link uses the Ethernet Phyisical Layer Collision Avoidance (PLCA) protocol. The protocol is defined in the IEEE 802.3cg-2019 standard. This network interface can be used in any network node module (e.g. ~StandardHost) that allows replacing its network interfaces. All network interfaces on the same multidrop link must use this module. |
| ExtInterface | compound module |
A base for external network interfaces, network interface modules that connect the simulation to the network stack of the host OS. |
| Ieee80211Interface | compound module |
Implements an IEEE 802.11 network interface. It implements a large subset of the IEEE 802.11 standard, and may use radio models and wireless signal representations of varying levels of detail. It is also extremely configurable, and its component structure makes it easy to experiment with various details of the protocol. |
| Ieee802154NarrowbandInterface | compound module |
Implements an IEEE 802.15.4 narrowband network interface. |
| Ieee802154UwbIrInterface | compound module |
Implements an IEEE 802.15.4 UWB-IR network interface. |
| Interface | compound module | (no description) |
| InterfaceService | compound module | (no description) |
| LayeredEthernetInterface | compound module |
Implements an Ethernet network interface. |
| LoopbackInterface | compound module |
Implements a loopback network interface. |
| PppInterface | compound module |
Implements a PPP network interface. |
| TunInterface | compound module |
Implements a (simulated) TUN network interface. |
| VirtualInterface | compound module |
Implements a virtual network interface. |
| WirelessInterface | compound module |
Implements a generic wireless network interface. |
Extends
| Name | Type | Description |
|---|---|---|
| Module | compound module |
Base module for all INET compound modules. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| displayStringTextFormat | string | "%a (%i)\n%m" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| recordPcap | bool | false | |
| numPcapRecorders | int | recordPcap ? 1 : 0 |
Properties
| Name | Value | Description |
|---|---|---|
| class | NetworkInterface | |
| networkInterface | ||
| lifecycleSupport | ||
| display | i=block/ifcard |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| packetDropped | inet::Packet |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| packetDropInterfaceDown | packet drops: interface down | packetDropReasonIsInterfaceDown(packetDropped) | count, sum(packetBytes), vector(packetBytes) | none | ||
| packetDropNoCarrier | packet drops: no carrier | packetDropReasonIsNoCarrier(packetDropped) | count, sum(packetBytes), vector(packetBytes) | none |
Unassigned submodule parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| pcapRecorder.displayStringTextFormat | string | "rec: %n pks" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| pcapRecorder.verbose | bool | true |
Whether to log packets on the module output |
| pcapRecorder.recordEmptyPackets | bool | true |
Specifies if zero length packets are recorded or not |
| pcapRecorder.enableConvertingPackets | bool | true |
Specifies if converting packets to link type is allowed or not |
| pcapRecorder.pcapFile | string | "" |
The PCAP file to be written, suggested value: pcapFile = "${resultdir}/${configname}-#${runnumber}" + fullpath() + ".pcap" |
| pcapRecorder.fileFormat | string | "pcapng" | |
| pcapRecorder.snaplen | int | 65535 |
Maximum number of bytes to record per packet |
| pcapRecorder.timePrecision | int | 6 |
Time precision in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see 'if_tsresol' option in pcapng file format). |
| pcapRecorder.dumpBadFrames | bool | true |
Enable dump of frames with hasBitError |
| pcapRecorder.sendingSignalNames | string | "transmissionEnded" |
Space-separated list of outbound packet signals to subscribe to |
| pcapRecorder.receivingSignalNames | string | "receptionEnded" |
Space-separated list of inbound packet signals to subscribe to |
| pcapRecorder.dumpProtocols | string | "ethernetmac ppp ieee80211mac" |
Space-separated list of protocol names as defined in the Protocol class |
| pcapRecorder.packetFilter | object | "*" |
Which packets are considered, matches all packets by default |
| pcapRecorder.helpers | string | "" |
Usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper" |
| pcapRecorder.alwaysFlush | bool | false |
Flush the pcapFile after each write to ensure that all packets are captured in case of a crash |
Source code
// // Serves as the base module for all network interfaces. // // Display string directives: // - %i: interface ID // - %m: MAC address // - %n: interface name // - %a: network address // module NetworkInterface extends Module { parameters: displayStringTextFormat = default("%a (%i)\n%m"); bool recordPcap = default(false); int numPcapRecorders = default(recordPcap ? 1 : 0); pcapRecorder[*].pcapFile = default("${resultdir}/${configname}-#${runnumber}" + fullPath() + ".pcap"); **.clockModule = default(exists(clock) ? absPath(".clock") : ""); @networkInterface; @lifecycleSupport; @class(NetworkInterface); @display("i=block/ifcard"); @signal[packetDropped](type=inet::Packet); @statistic[packetDropInterfaceDown](title="packet drops: interface down"; source=packetDropReasonIsInterfaceDown(packetDropped); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetDropNoCarrier](title="packet drops: no carrier"; source=packetDropReasonIsNoCarrier(packetDropped); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); submodules: pcapRecorder[numPcapRecorders]: PcapRecorder { parameters: moduleNamePatterns = ".^"; @display("p=100,100;is=s"); } clock: <default("")> like IClock if typename != "" { parameters: @display("p=100,200;is=s"); } }File: src/inet/networklayer/common/NetworkInterface.ned