proc GetIgmpQuerierLearnedInfo { deviceGroup } { # ::ixNet::OBJ-/topology:1/deviceGroup:1 # This API will group all common info by ID numbers like below: #7: Querier_Working_Version : v2 #7: Elected_Querier_Address : 10.10.10.6 #7: Group_Address : 229.0.0.1 #7: Group_Timer_(sec) : 136 #7: Filter_Mode : N/A #7: Compatibility_Mode : v2 #7: Compatibility_Timer_(sec) : 0 #7: Source_Address : removePacket[N/A] #7: Source_Timer_(sec) : 0 # # On your script, you can do a foreach to view all : # foreach {property value} $learnedInfo {} # # Or use for loop to get a set of IDs using regexp. regexp "(::ixNet::OBJ-)?(/topology:\[0-9]+/deviceGroup:\[0-9]+)" $deviceGroup - parsedDeviceGroup set id 0 if {[info exists parsedDeviceGroup]} { # /topology:2/deviceGroup:1/ethernet:1/ipv4:1/igmpQuerier:1 foreach ethernet [ixNet getList ::ixNet::OBJ-$deviceGroup ethernet] { foreach ipv4 [ixNet getList $ethernet ipv4] { foreach igmpQuerier [ixNet getList $ipv4 igmpQuerier] { foreach learnedInfo [ixNet getList $igmpQuerier learnedInfo] { set currentValues [ixNet getAttribute $learnedInfo -values] set columnNames [ixNet getAttribute $learnedInfo -columns] #puts "\ncurrentValues: $currentValues\n" #puts "\ncurrentNames: $columnNames\n" foreach valueList $currentValues { incr id foreach name $columnNames value $valueList { set igmpLearnedInfo($id,[join $name _]) $value #puts "$id: [join $name _] : $value" } } } } } } } else { puts "\nError GetIgmpQuerierLearnedInfo: No such device group exists: $deviceGroup\n" return 0 } array get igmpLearnedInfo }