Simple Module ICMP

Package: inet.networklayer.ipv4
File: src/inet/networklayer/ipv4/ICMP.ned

C++ definition

ICMP implementation

Receive ICMP message from localDeliver and process it:

Receive echo/timestamp message from pingIn: encapsulate in ICMP header and send to IPSend

author: Jochen Reber date: 2.5.00, 9.5.00, 20.5.00, 9.6.00 redesign: Andras Varga 1.3.2004

ICMP

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.

Used in compound modules:

Name Type Description
IPv4NetworkLayer compound module

Network layer of an IPv4 node.

Parameters:

Name Type Default value Description
interfaceTableModule string

The path to the InterfaceTable module

routingTableModule string

Properties:

Name Value Description
display i=block/control_s

Gates:

Name Direction Size Description
localIn input

delivered ICMP packets

pingIn [ ] input

ping requests from app

pingOut [ ] output

result of ping

sendOut output

towards network

errorOut output

errors

Source code:

//
// ICMP implementation
//
// Receive ICMP message from localDeliver and process it:
//   - echo/timestamp reply: strip ICMP header and send to pingOut
//   - echo/timestamp request: create reply and send to IPSend
//   - destination unreachable: ignore/send to IPRouting (static)?
//   - time exceeded: ignore ?
//   - parameter problem: ignore ?
//   - redirect ?
//#FIXME question marks above...
//
// Receive echo/timestamp message from pingIn: encapsulate in ICMP header
// and send to IPSend
//
// author: Jochen Reber
// date: 2.5.00, 9.5.00, 20.5.00, 9.6.00
// redesign: Andras Varga 1.3.2004
//
simple ICMP
{
    parameters:
        string interfaceTableModule;   // The path to the InterfaceTable module
        string routingTableModule;
        @display("i=block/control_s");
    gates:
        input localIn @labels(IPv4ControlInfo/up);  // delivered ICMP packets
        input pingIn[];  // ping requests from app
        output pingOut[];  // result of ping
        output sendOut @labels(IPv4ControlInfo/down);  // towards network
        output errorOut;  // errors
}