PimPacket

Namespace: inet

class PimPacket

Header

Usage diagram

Inheritance diagram

Extends

Name

Type

Description

FieldsChunk

class

(no description)

Known subclasses

Name

Type

Description

PimAssert

class

Assert message DM, SM

PimHello

class

Hello message DM, SM

PimJoinPrune

class

Join/Prune message DM, SM

PimRegister

class

Register message SM

PimRegisterStop

class

Register-Stop message SM

PimStateRefresh

class

State Refresh message DM

Fields

Name

Type

Description

id

int

mutable

bool

complete

bool

correct

bool

properlyRepresented

bool

chunkLength

b

rawBin

string[]

rawHex

string[]

regionTags

SharingRegionTagSet::TagBaseRegionTag[]

version

short

type

PimPacketType

reserved

short

8 bits

checksum

uint16_t

The checksum is a standard IP checksum, i.e., the 16-bit one’s complement of the one’s complement sum of the entire PIM message, excluding the “Multicast data packet” section of the Register message. For computing the checksum, the checksum field is zeroed. If the packet’s length is not an integral number of 16-bit words, the packet is padded with a trailing byte of zero before performing the checksum. For IPv6, the checksum also includes the IPv6 “pseudo-header”, as specified in RFC 2460, Section 8.1 [5]. This “pseudo-header” is prepended to the PIM header for the purposes of calculating the checksum. The “Upper-Layer Packet Length” in the pseudo- header is set to the length of the PIM message, except in Register messages where it is set to the length of the PIM register header (8). The Next Header value used in the pseudo- header is 103.

checksumMode

ChecksumMode

Properties

Name

Value

Description

beforeChange

handleChange()

descriptor

readonly

existingClass

packetData

Source code

///////////////////////////////////////////////////////////////////////////////////////////////
// Header
class PimPacket extends FieldsChunk
{
    short          version = 2;
    PimPacketType  type;
    short          reserved = 0;    // 8 bits
    uint16_t       checksum = 0;         // The checksum is a standard IP checksum, i.e., the 16-bit one's
                                    // complement of the one's complement sum of the entire PIM
                                    // message, excluding the "Multicast data packet" section of the
                                    // Register message.  For computing the checksum, the checksum
                                    // field is zeroed.  If the packet's length is not an integral
                                    // number of 16-bit words, the packet is padded with a trailing
                                    // byte of zero before performing the checksum.
                                    //
                                    // For IPv6, the checksum also includes the IPv6 "pseudo-header",
                                    // as specified in RFC 2460, Section 8.1 [5].  This "pseudo-header"
                                    // is prepended to the PIM header for the purposes of calculating
                                    // the checksum.  The "Upper-Layer Packet Length" in the pseudo-
                                    // header is set to the length of the PIM message, except in
                                    // Register messages where it is set to the length of the PIM
                                    // register header (8).  The Next Header value used in the pseudo-
                                    // header is 103.
    ChecksumMode        checksumMode = CHECKSUM_MODE_UNDEFINED;
}

File: src/inet/routing/pim/PimPacket.msg