IArp

Package: inet.networklayer.contract

IArp

module interface

Interface for Address Resolution Protocol (ARP) implementations. Provides address resolution services for mapping network layer addresses (e.g., IPv4) to link layer addresses (e.g., MAC). Modules implementing this interface maintain a cache of address mappings and handle resolution requests from the network layer.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Implemented by

Name Type Description
Arp simple module

Implements the Address Resolution Protocol for IPv4 and IEEE 802 6-byte MAC addresses.

GlobalArp simple module

Provides global address resolution without exchanging packets.

Used in compound modules

Name Type Description
ExtUpperIpv4NetworkLayer compound module

Provides a network layer that connects the simulation to a real network on the host computer using a TUN device. Allows simulated applications to send and receive packets through the host's networking stack at the IP layer. Contains standard components like routing table and ARP, and uses ~ExtUpperIpv4 with a TUN device for external connectivity.

Ipv4NetworkLayer compound module

Network(1,2,3,4) layer of an IPv4 node.

SimpleNetworkLayer compound module

Provides a simple network layer.

Properties

Name Value Description
display i=block/layer

Signals

Name Type Unit Description
arpResolutionInitiated inet::IArp::Notification
arpResolutionFailed inet::IArp::Notification
arpResolutionCompleted inet::IArp::Notification

Source code

//
// Interface for Address Resolution Protocol (ARP) implementations. Provides
// address resolution services for mapping network layer addresses (e.g., IPv4)
// to link layer addresses (e.g., MAC). Modules implementing this interface
// maintain a cache of address mappings and handle resolution requests from
// the network layer.
//
moduleinterface IArp
{
    parameters:
        @display("i=block/layer");
        @signal[arpResolutionInitiated](type=inet::IArp::Notification);
        @signal[arpResolutionCompleted](type=inet::IArp::Notification);
        @signal[arpResolutionFailed](type=inet::IArp::Notification);
    gates:
        input ifIn @labels(ArpPacket,Ieee802Ctrl);
        output ifOut @labels(ArpPacket,Ieee802Ctrl);
}

File: src/inet/networklayer/contract/IArp.ned