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:
- Invalid parameters in the igmpGroupRecord command.
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:
- No connection to a chassis
- Invalid port number
- The captured frame is not a valid Igmp frame
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:
- No connection to a chassis
- Invalid port number
- stream get has not been called yet
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:
- There are no members in the group record list.
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:
- The index does not correspond to an entry in the list.
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:
- There are no more members in the group record list.
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:
- No connection to a chassis
- Invalid port number
- The port is being used by another user
- The configured parameters are not valid for this port
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
}