proc DeviceGroupProtocolStacksNgpf { deviceGroup ipType} { # This Proc is an internal API for VerifyArpNgpf. # It's created because each deviceGroup has IPv4/IPv6 and # a deviceGroup could have inner deviceGroup that has IPv4/IPv6. # Therefore, you can loop device groups. set unresolvedArpList {} foreach ethernet [ixNet getList $deviceGroup ethernet] { foreach ipProtocol [ixNet getList $ethernet $ipType] { # sessionStatus could be: down, up, notStarted set sessionStatus [ixNet getAttribute $ipProtocol -sessionStatus] set resolvedGatewayMac [ixNet getAttribute $ipProtocol -resolvedGatewayMac] #puts "resolvedGatewayMac: $resolvedGatewayMac" #puts "sessionStatus: $sessionStatus" # Only care for unresolved ARPs. # resolvedGatewayMac: 00:01:01:01:00:01 00:01:01:01:00:02 removePacket[Unresolved] # Search each mac to see if they're resolved or not. for {set index 0} {$index < [llength $resolvedGatewayMac]} {incr index} { if {[regexp ".*Unresolved.*" [lindex $resolvedGatewayMac $index]] == 1} { # Getting in here means the interface should be up set multiValueNumber [ixNet getAttribute $ipProtocol -address] set srcIpAddrNotResolved [lindex [ixNet getAttribute [ixNet getRoot]$multiValueNumber -values] $index] puts "\tFailed to resolve ARP: $srcIpAddrNotResolved" lappend unresolvedArpList "$srcIpAddrNotResolved" } } } } if {$unresolvedArpList == ""} { puts "\tARP is resolved" return "" } else { return $unresolvedArpList } }