proc IgmpJoinLeaveNgpf { port igmpGroupAddrList action } { # This API allows you to specify port(s) to either join or leave an igmp group address. # port = The port to join or leave the igmp group address. # igmpGroupAddrList = One or more igmp group address in a list to join or leave. # action = igmpJoinGroup or igmpLeaveGroup set root [ixNet getRoot] set portDiscoveredFlag 0 foreach topology [ixNet getList $root topology] { foreach portObj [ixNet getList $topology port] { set vport [ixNet getAttribute $portObj -vport] # ::ixNet::OBJ-/availableHardware/chassis:"10.10.10.2"/card:1/port:1 set connectedTo [ixNet getAttribute $vport -connectedTo] set chassis [lindex [split $connectedTo /] 3] set cardNum [lindex [split [lindex [split $connectedTo /] 3] :] end] set portNum [lindex [split [lindex [split $connectedTo /] 4] :] end] if {$port == "$cardNum/$portNum"} { set portDiscoveredFlag 1 foreach deviceGroup [ixNet getList $topology deviceGroup] { foreach ethernet [ixNet getList $deviceGroup ethernet] { foreach ipv4 [ixNet getList $ethernet ipv4] { set protocolObjDiscovered [ixNet getList $ipv4 igmpHost] if {$protocolObjDiscovered != ""} { foreach igmpGroupRangeObj [ixNet getList $protocolObjDiscovered igmpMcastIPv4GroupList] { foreach igmpPortObj [ixNet getList $igmpGroupRangeObj port] { # igmpPortObj = ::ixNet::OBJ-/topology:1/deviceGroup:1/ethernet:1/ipv4:1/igmpHost:1/igmpMcastIPv4GroupList/port:1 foreach rangeObj [ixNet getList $igmpPortObj item] { #rangeObj = ::ixNet::OBJ-/topology:1/deviceGroup:1/ethernet:1/ipv4:1/igmpHost:1/igmpMcastIPv4GroupList/port:1/item:1 set igmpHostGroupAddr [ixNet getAttribute $rangeObj -startMcastAddr] if {[lsearch $igmpGroupAddrList $igmpHostGroupAddr] != -1} { catch {ixNet execute $action $rangeObj} errMsg if {$errMsg != "::ixNet::OK"} { puts "\nError IgmpJoinLeaveNgpf: Faied to $action NGPF on $port" return 1 } else { puts "\nIgmpJoinLeaveNgpf Success: $action $port NGPF" } } } } } } else { puts "\nError IgmpJoinLeaveNgpf: $protocol is not configured on $port. If $protocol is configured on $port, verify correct protocol spelling:\n\n$supportedProtocols\n" return 1 } } } } } } } if {$portDiscoveredFlag == 0} { puts "\nError IgmpJoinLeaveNgpf: No such port configured: $port" return 1 } }