proc CreateEthernetNgpf {args} { set direction increment set step 00:00:00:00:00:00 set enableVlan false set paramList {} set argIndex 0 while {$argIndex < [llength $args]} { set currentArg [lindex $args $argIndex] switch -exact -- $currentArg { -deviceGroupObj { set deviceGroupObj [lindex $args [expr $argIndex + 1]] incr argIndex 2 } -name { set name [lindex $args [expr $argIndex + 1]] #append paramList " -name $name" incr argIndex 2 } -macAddress { set macAddress [lindex $args [expr $argIndex + 1]] append paramList " -start $macAddress" incr argIndex 2 } -direction { set direction [lindex $args [expr $argIndex + 1]] append paramList " -direction $direction" incr argIndex 2 } -step { set step [lindex $args [expr $argIndex + 1]] append paramList " -step $step" incr argIndex 2 } -macAddressPortStep { set macAddressPortStep [lindex $args [expr $argIndex + 1]] incr argIndex 2 } -enableVlan { set enableVlan [lindex $args [expr $argIndex + 1]] incr argIndex 2 } default { puts "Connect: No such parameter: $currentArg" return 1 } } } puts "\nCreateEthernetNgpf: Adding new Ethernet stack" set ethernetObj [ixNet add $deviceGroupObj ethernet] if {[info exists name]} { ixNet setAttribute $ethernetObj -name $name } ixNet commit set ethernetMultivalue [ixNet getAttribute $ethernetObj -mac] puts "\n\tEtherent params: $paramList" if {[catch {eval ixNet setMultiAttribute $ethernetMultivalue/counter $paramList} errMsg]} { puts "\nCreateEthernetNgpf failed: $errMsg \n$paramList" return 1 } ixNet commit set ethernetObj [lindex [ixNet remapIds $ethernetObj] 0] if {[info exists macAddressPortStep]} { ixNet setAttribute $ethernetMultivalue/nest:1 -step $macAddressPortStep ixNet commit } if {$enableVlan == "true"} { puts "\nEnabling vlan for: $ethernetObj" set enableVlanMultivalue [ixNet getAttribute $ethernetObj -enableVlans] if {[catch {ixNet setAttribute $enableVlanMultivalue/singleValue -value true} errMsg]} { puts "\nEnabling vlan failed for $ethernetObj" return 1 } ixNet commit } return $ethernetObj }