igmp

igmp - configure the IGMP parameters for a port on a card on a chassis

SYNOPSIS

igmp sub-command options

DESCRIPTION

The igmp command is used to configure the IGMP-specific information used when building IGMP-type packets. Note that stream get must be called before this command's get sub-command.

In the case of an IGMP v.3 membership report, the use of an additional command, igmpGroupRecord, is needed to hold the group record component of the message. Group records are built in the igmpGroupRecord command and added to this command with the addGroupRecord sub-command.

STANDARD OPTIONS
enableS true | false

This option is only used for an IGMP v.3 group membership request (that is, type = membershipQuery and version = igmpVersion3). It is the suppress router-side processing flag. If set, receiving multicast routers will not send timer updates in the normal manner when a query is received. (default = false).

groupIpAddress

IP Multicast group address of the group being joined or left. (default = 0.0.0.0)

maxResponseTime

The maximum allowed time before sending a responding report in units of 1/10 second. Values from 0 to 127 are represented exactly, values from 128 to 255 are encoded into a floating point number with three bits of exponent and 4 bits of mantissa. A value higher than 255 is silently forced to 255. (default = 100)

mode

Describes how to vary the groupIpAddress when repeatCount is greater than 1.

Option

Value

Usage

igmpIdle

0

(default)

igmpIncrement

1

 

igmpDecrement

2

 

igmpContIncrement

3

 

igmpContDecrement

4

 

qqic

This option is only used for an IGMP v.3 group membership request (that is, type = membershipQuery and version = igmpVersion3). The querier's query interval code, expressed in second. Values from 0 to 127 are represented exactly, values from 128 to 255 are encoded into a floating point number with three bits of exponent and 4 bits of mantissa. A value higher than 255 is silently forced to 255. (default = 127)

qrv

This option is only used for an IGMP v.3 group membership request (that is, type = membershipQuery and version = igmpVersion3). The querier's robustness value, as a value from 0 to 7. (default = 0)

repeatCount

Number of times of IGMP messages to be sent. (default = 1)

sourceIpAddressList

This option is only used for an IGMP v.3 group membership request (that is, type = membershipQuery and version = igmpVersion3). The list of source addresses for the query. (default = {})

type

The type of IGMP message to be sent. Options are:

Option

Value

Usage

membershipQuery

17

General or group specific query messages sent by the DUT

membershipReport1

18

(default) An IGMP version 1 message sent by client to inform the DUT of its interest to join a group

dvmrpMessage

19

Distance-Vector Multicast Routing Protocol message

membershipReport2

22

An IGMP version 2 message sent by client to inform the DUT of its interest to join a group

leaveGroup

23

An IGMP version21message sent by client to inform the DUT of its interest to leave a group

membershipReport3

34

An IGMP version 3 message sent by a client to inform the DUT of its interest in joining a group.

validChecksum

If set, this causes a valid header checksum to be generated. If unchecked, then the one's complement of the correct checksum is generated. (default = true)

version

The version number of IGMP. Options are:

Option

Value

Usage

igmpVersion1

1

version 1

igmpVersion2

2

(default)version 2

igmpVersion3

3

version 3

COMMANDS

The igmp command is invoked with the following sub-commands. If no sub-command is specified, returns a list of all sub-commands available.

igmp addGroupRecord

This sub-command is only used for an IGMP v.3 group membership report (that is, type = membershipReport3 and version = igmpVersion3). The group record described in igmpGroupRecord is added to the list in this command. Specific errors are:

igmp cget option

Returns the current value of the configuration option given by option. Option may have any of the values accepted by the igmp command.

igmp clearGroupRecords

All of the group records in this command are removed.

igmp config option value

Modify the IGMP configuration options of the port. If no option is specified, returns a list describing all of the available IGMP options (see STANDARD OPTIONS) for port.

igmp decode capFrame [chasID cardID portID]

Decodes a captured frame in the capture buffer and updates TclHal. igmp cget option command can be used after decoding to get the option data. Specific errors are:

igmp clearGroupRecords index

This sub-command is only used for an IGMP v.3 group membership report (that is, type = membershipReport3 and version = igmpVersion3). The group record at the position in the list indicated by index is deleted; the first member in the list has an index of 1.

igmp get chasID cardID portID

Gets the current IGMP configuration of the port with id portID on card cardID, chassis chasID. Note that stream get must be called before this command's get sub-command. Call this command before calling igmp cget option value to get the value of the configuration option. Specific errors are:

igmp getFirstGroupRecord

This sub-command is only used for an IGMP v.3 group membership report (that is, type = membershipReport3 and version = igmpVersion3). The first group record in the list is accessed; the first member in the list has an index of 1. The values are available through the igmpGroupRecord command. Specific errors are:

igmp getGroupRecord index

This sub-command is only used for an IGMP v.3 group membership report (that is, type = membershipReport3 and version = igmpVersion3). The group record at the position in the list indicated by index is accessed; the first member in the list has an index of 1. The values are available through the igmpGroupRecord command. Specific errors are:

igmp getNextGroupRecord

This sub-command is only used for an IGMP v.3 group membership report (that is, type = membershipReport3 and version = igmpVersion3). The next group record in the list is accessed; the values are available through the igmpGroupRecord command. Specific errors are:

igmp set chasID cardID portID

Sets the IGMP configuration of the port with id portID on card cardID, chassis chasID by reading the configuration option values set by the igmp config option value command. Specific errors are:

igmp setDefault

Sets to IxTclHal default values for all configuration options.

EXAMPLES

package require IxTclHal

 

set host 400-031561

set username user

 

# Check if we're running on UNIX - connect to the TCL Server

# which must be running on the chassis

if [isUNIX] {

if [ixConnectToTclServer $host] {

ixPuts "Could not connect to $host"

return 1

}

}

 

# Now connect to the chassis

if [ixConnectToChassis $host] {

ixPuts $::ixErrorInfo

return 1

}

 

# Get the chassis ID to use in port lists

set chas [ixGetChassisID $host]

 

set card 1

set port 1

 

set portList [list [list $chas $card $port]]

# Login before taking ownership

if [ixLogin $username] {

ixPuts $::ixErrorInfo

return 1

}

# Take ownership of the ports we'll use

if [ixTakeOwnership $portList] {

ixPuts $::ixErrorInfo

return 1

}

 

set portMAC {00 00 00 01 01 01}

set portIP {192.168.18.1}

set portMask {255.255.255.0}

 

set destMAC {00 00 00 01 01 02}

set destIP {192.168.18.2}

set destMask {255.255.255.0}

 

port setFactoryDefaults $chas $card $port

port setDefault

 

# Stream: 256 packets

stream setDefault

stream config -numFrames 256

stream config -sa $portMAC

stream config -da $destMAC

stream config -dma stopStream

 

# Set up IP

ip setDefault

ip config -ipProtocol igmp

ip config -sourceIpAddr $portIP

ip config -sourceIpMask $portMask

ip config -sourceClass classC

ip config -destIpAddr $destIP

ip config -destIpMask $destMask

ip config -destClass classC

ip set $chas $card $port

 

protocol setDefault

protocol config -name ipV4

protocol config -ethernetType ethernetII

 

igmp setDefault

igmp config -groupIpAddress {224.0.0.1}

igmp config -type membershipQuery

igmp set $chas $card $port

 

stream set $chas $card $port 1

port set $chas $card $port

 

ixWritePortsToHardware portList

 

# Let go of the ports that we reserved

ixClearOwnership $portList

# Disconnect from the chassis we're using

ixDisconnectFromChassis $host

# If we're running on UNIX, disconnect from the TCL Server

if [isUNIX] {

ixDisconnectTclServer $host

}

SEE ALSO

stream, ip, udp.