Icmpv6

Package: inet.networklayer.icmpv6

simple module Icmpv6

Implements ICMPv6 (RFC 4443): it generates and processes ICMPv6 error messages (destination unreachable, packet too big, time exceeded, parameter problem) on behalf of Ipv6, and answers Echo Requests (ping) with Echo Replies. Neighbor Discovery messages (RS/RA/NS/NA/Redirect) are not handled here but by Ipv6NeighbourDiscovery.

The transportIn/transportOut gates connect to upper-layer users such as a ping application; the ipv6In/ipv6Out gates connect to Ipv6.

See also: Ipv6, Ipv6RoutingTable, Ipv6NeighbourDiscovery

inet.networklayer.icmpv6.Icmpv6Icmpv6simple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

Ipv6NetworkLayer

compound module

Represents a complete IPv6 network layer (L3), to be used within hosts and routers. It connects to higher-layer protocols (TCP, UDP, …) on top and to the network interfaces below, and bundles the modules that together implement IPv6:

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

interfaceTableModule

string

The path to the InterfaceTable module

checksumMode

string

“declared”

mldModule

string

“”

Path to the MLD module, or “” if MLD is not enabled; MLD messages are dropped when empty

Properties

Name

Value

Description

class

Icmpv6

display

i=block/control

Gates

Name

Direction

Size

Description

transportIn

input

transportOut

output

ipv6In

input

ipv6Out

output

Source code

//
// Implements ICMPv6 (RFC 4443): it generates and processes ICMPv6 error
// messages (destination unreachable, packet too big, time exceeded, parameter
// problem) on behalf of ~Ipv6, and answers Echo Requests (ping) with Echo
// Replies. Neighbor Discovery messages (RS/RA/NS/NA/Redirect) are not handled
// here but by ~Ipv6NeighbourDiscovery.
//
// The `transportIn`/`transportOut` gates connect to upper-layer users such as a
// ping application; the `ipv6In`/`ipv6Out` gates connect to ~Ipv6.
//
// @see ~Ipv6, ~Ipv6RoutingTable, ~Ipv6NeighbourDiscovery
//
simple Icmpv6 extends SimpleModule
{
    parameters:
        @class(Icmpv6);
        string interfaceTableModule;   // The path to the InterfaceTable module
        string checksumMode @enum("declared", "computed") = default("declared");
        string mldModule = default("");  // Path to the MLD module, or "" if MLD is not enabled; MLD messages are dropped when empty
        @display("i=block/control");
    gates:
        input transportIn;
        output transportOut;
        input ipv6In;
        output ipv6Out;
}

File: src/inet/networklayer/icmpv6/Icmpv6.ned