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
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Name | Type | Description |
---|---|---|
IPv4NetworkLayer | compound module |
Network layer of an IPv4 node. |
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string |
The path to the InterfaceTable module |
|
routingTableModule | string |
Name | Value | Description |
---|---|---|
display | i=block/control_s |
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 |
// // 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 }