Simple Module ICMP

Package: inet.networklayer.ipv4
File: src/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. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

NetworkLayer (compound module)

Network layer of an IP node.

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:
        @display("i=block/control_s");
    gates:
        input localIn @labels(IPControlInfo/up);  // delivered ICMP packets
        input pingIn;  // ping requests from app
        output pingOut;  // result of ping
        output sendOut @labels(IPControlInfo/down);  // towards network
        output errorOut;  // errors
}