From 9388b2a009451aaa2c5382121df60f01fd780b56 Mon Sep 17 00:00:00 2001 From: miljenko Date: Wed, 13 Jul 2005 12:45:13 +0000 Subject: [PATCH] exec changed to nexec. Added procedure nexec to exec.tcl. nexec currently calls exec, in future some RPC "exec" Bug found by: Submitted by: Requested by: Reviewed by: Approved by: Obtained from: --- editor.tcl | 4 +- exec.tcl | 117 ++++++++++++++++++++++++++------------------------ hub.tcl | 4 +- imunes.tcl | 3 ++ lanswitch.tcl | 4 +- quagga.tcl | 2 +- rj45.tcl | 2 +- static.tcl | 2 +- xorp.tcl | 2 +- 9 files changed, 73 insertions(+), 67 deletions(-) diff --git a/editor.tcl b/editor.tcl index d82952c..76d9321 100755 --- a/editor.tcl +++ b/editor.tcl @@ -798,7 +798,7 @@ proc button3 { c x y } { if { $node != "" && $oper_mode == "exec" } { set cmd [[typemodel $node].shellcmd $node] if { $cmd != "" } { - exec xterm -sb -rightbar \ + nexec xterm -sb -rightbar \ -T "IMUNES: [getNodeName $node] (console)" \ -e "vimage $node_id $cmd" & } @@ -824,7 +824,7 @@ proc startethereal { c } { set interface "[ifcByPeer $n1 $n0]@$eid\_$n1" } if { $interface != "" } { - exec ethereal -i $interface & + nexec ethereal -i $interface & } return } diff --git a/exec.tcl b/exec.tcl index 3fd75a3..677fabb 100755 --- a/exec.tcl +++ b/exec.tcl @@ -33,6 +33,9 @@ # and Technology through the research contract #IP-2003-143. # +proc nexec { args } { + eval exec $args +} proc setOperMode { mode } { global oper_mode activetool nodes @@ -40,7 +43,7 @@ proc setOperMode { mode } { # Verify that links to external interfaces are properly configured if { $mode == "exec" } { - set extifcs [exec ifconfig -l] + set extifcs [nexec ifconfig -l] set extifcs \ [lreplace $extifcs [lsearch $extifcs lo0] [lsearch $extifcs lo0]] foreach node $nodes { @@ -67,21 +70,21 @@ proc setOperMode { mode } { .bottom.oper_mode configure -text "$mode mode" set activetool select .left.select configure -state active - if { "$mode" == "exec" && [exec id -u] == 0} { + if { "$mode" == "exec" && [nexec id -u] == 0} { .menubar.experiment entryconfigure "Execute" -state disabled .menubar.experiment entryconfigure "Terminate" -state normal .menubar.edit entryconfigure "Undo" -state disabled .menubar.edit entryconfigure "Redo" -state disabled set oper_mode exec - set nmbufs [lindex [split [exec sysctl kern.ipc.nmbufs]] 1] - set nmbclusters [lindex [split [exec sysctl kern.ipc.nmbclusters]] 1] + set nmbufs [lindex [split [nexec sysctl kern.ipc.nmbufs]] 1] + set nmbclusters [lindex [split [nexec sysctl kern.ipc.nmbclusters]] 1] monitor_loop deployCfg } else { if {$oper_mode != "edit"} { vimageCleanup } - if {[exec id -u] == 0} { + if {[nexec id -u] == 0} { .menubar.experiment entryconfigure "Execute" -state normal } else { .menubar.experiment entryconfigure "Execute" -state disabled @@ -108,7 +111,7 @@ proc statline {line} { proc createIfc {type hook} { - catch {exec ngctl mkpeer $type $hook $hook | tail -1} resp + catch {nexec ngctl mkpeer $type $hook $hook | tail -1} resp foreach elem [split [lindex [split $resp "\{\}"] 1]] { if {[string equal -length 6 $elem "name=\""]} { set name [string range $elem 6 [expr [string length $elem] - 2]] @@ -122,28 +125,28 @@ set mac_byte5 0 proc l3node.instantiate { eid node } { global mac_byte5 set node_id "$eid\_$node" - exec vimage -c $node_id - exec vimage $node_id hostname [getNodeName $node] + nexec vimage -c $node_id + nexec vimage $node_id hostname [getNodeName $node] foreach ifc [ifcList $node] { switch -exact [string range $ifc 0 2] { eth { set ifid [createIfc eiface ether] - exec vimage -i $node_id $ifid $ifc - exec vimage $node_id ifconfig $ifc + nexec vimage -i $node_id $ifid $ifc + nexec vimage $node_id ifconfig $ifc set ether 40:00:aa:aa:00:$mac_byte5 incr mac_byte5 - exec vimage $node_id ifconfig $ifc link $ether + nexec vimage $node_id ifconfig $ifc link $ether } ser { set ifnum [string range $ifc 3 end] set ifid [createIfc iface inet] - exec ngctl mkpeer $ifid: cisco inet inet - exec ngctl connect $ifid: $ifid:inet inet6 inet6 - exec ngctl msg $ifid: broadcast - exec ngctl name $ifid:inet hdlc$ifnum\@$node_id - exec vimage -i $node_id $ifid $ifc - exec vimage $node_id ifconfig $ifc + nexec ngctl mkpeer $ifid: cisco inet inet + nexec ngctl connect $ifid: $ifid:inet inet6 inet6 + nexec ngctl msg $ifid: broadcast + nexec ngctl name $ifid:inet hdlc$ifnum\@$node_id + nexec vimage -i $node_id $ifid $ifc + nexec vimage $node_id ifconfig $ifc } } } @@ -153,18 +156,18 @@ proc l3node.instantiate { eid node } { set cpumax [lindex [lsearch -inline $cpuconf {max *}] 1] set cpuweight [lindex [lsearch -inline $cpuconf {weight *}] 1] if { $cpumin != "" } { - exec vimage -m $node_id cpumin $cpumin + nexec vimage -m $node_id cpumin $cpumin } if { $cpumax != "" } { - exec vimage -m $node_id cpumax $cpumax + nexec vimage -m $node_id cpumax $cpumax } if { $cpuweight != "" } { - exec vimage -m $node_id cpuweight $cpuweight + nexec vimage -m $node_id cpuweight $cpuweight } - exec vimage $node_id sysctl net.inet.icmp.bmcastecho=1 - exec vimage $node_id sysctl net.inet.icmp.icmplim=0 - exec vimage $node_id ifconfig lo0 inet localhost + nexec vimage $node_id sysctl net.inet.icmp.bmcastecho=1 + nexec vimage $node_id sysctl net.inet.icmp.icmplim=0 + nexec vimage $node_id ifconfig lo0 inet localhost } @@ -190,10 +193,10 @@ proc deployCfg {} { vimageCleanup - catch { exec mv /etc/resolv.conf /etc/resolv.conf.bak } - catch { exec kldload ng_ether } - catch { exec kldload ng_iface } - catch { exec kldload ng_eiface } + catch { nexec mv /etc/resolv.conf /etc/resolv.conf.bak } + catch { nexec kldload ng_ether } + catch { nexec kldload ng_iface } + catch { nexec kldload ng_eiface } foreach node $nodes { set node_id "$eid\_$node" @@ -224,15 +227,15 @@ proc deployCfg {} { [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 0] set nghook2 \ [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 1] - exec ngctl mkpeer $ngpeer1: pipe $nghook1 upper - exec ngctl name $ngpeer1:$nghook1 $lname - exec ngctl connect $lname: $ngpeer2: lower $nghook2 + nexec ngctl mkpeer $ngpeer1: pipe $nghook1 upper + nexec ngctl name $ngpeer1:$nghook1 $lname + nexec ngctl connect $lname: $ngpeer2: lower $nghook2 -#exec ngctl msg $lname: setcfg "{ header_offset=14 }" ethernet -#exec ngctl msg $lname: setcfg "{ header_offset=14 }" HDLC ??? +#nexec ngctl msg $lname: setcfg "{ header_offset=14 }" ethernet +#nexec ngctl msg $lname: setcfg "{ header_offset=14 }" HDLC ??? # Link parameters - exec ngctl msg $lname: setcfg \ + nexec ngctl msg $lname: setcfg \ "{ bandwidth=$bandwidth delay=$delay \ upstream={ BER=$ber duplicate=$dup } \ downstream={ BER=$ber duplicate=$dup } }" @@ -253,12 +256,12 @@ proc deployCfg {} { } } - exec rm -fr /var/run/quagga - exec rm -f /usr/local/etc/quagga/Quagga.conf - exec ln -s /tmp/@ /var/run/quagga - exec ln -s /tmp/@/boot.conf /usr/local/etc/quagga/Quagga.conf + nexec rm -fr /var/run/quagga + nexec rm -f /usr/local/etc/quagga/Quagga.conf + nexec ln -s /tmp/@ /var/run/quagga + nexec ln -s /tmp/@/boot.conf /usr/local/etc/quagga/Quagga.conf foreach file { bgpd.conf ospfd.conf ripd.conf vtysh.conf zebra.conf } { - exec cp /dev/null /usr/local/etc/quagga/$file + nexec cp /dev/null /usr/local/etc/quagga/$file } foreach node $nodes { @@ -268,12 +271,12 @@ proc deployCfg {} { set type [nodeType $node] set model [getNodeModel $node] if { [lsearch -exact {router pc host} $type] >= 0 } { - exec rm -fr /tmp/$node_id - exec mkdir /tmp/$node_id - exec chmod 1777 /tmp/$node_id + nexec rm -fr /tmp/$node_id + nexec mkdir /tmp/$node_id + nexec chmod 1777 /tmp/$node_id foreach ifc [ifcList $node] { set mtu [getIfcMTU $node $ifc] - exec vimage $node_id ifconfig $ifc mtu $mtu + nexec vimage $node_id ifconfig $ifc mtu $mtu } if { [getCustomEnabled $node] == true } { @@ -292,7 +295,7 @@ proc deployCfg {} { puts $fileId $line } close $fileId - catch "exec vimage $node_id $bootcmd /tmp/$node_id/boot.conf &" + catch "nexec vimage $node_id $bootcmd /tmp/$node_id/boot.conf &" } } @@ -302,28 +305,28 @@ proc deployCfg {} { proc vimageCleanup {} { set t_start [clock seconds] - set vimages [join [exec vimage -l | fgrep -v " " | cut -d: -f 1]] + set vimages [join [nexec vimage -l | fgrep -v " " | cut -d: -f 1]] set defindex [lsearch $vimages default] set vimages [lreplace $vimages $defindex $defindex] # Detach / destroy / reassign interfaces pipe, eiface, iface, bridge - set ngnodes [split [exec ngctl l | tail -n +3] " "] + set ngnodes [split [nexec ngctl l | tail -n +3] " "] foreach ngline $ngnodes { set node [lindex [eval list $ngline] 1] statline "Shutting down netgraph node $node" - catch "exec ngctl msg $node: shutdown" + catch "nexec ngctl msg $node: shutdown" } # Shut down all vimages foreach vimage $vimages { statline "Shutting down vimage $vimage" - catch {exec vimage $vimage kill -9 -1 2> /dev/null} - exec rm -fr /tmp/$vimage - exec vimage -d $vimage + catch {nexec vimage $vimage kill -9 -1 2> /dev/null} + nexec rm -fr /tmp/$vimage + nexec vimage -d $vimage } - catch { exec rm -f /usr/local/etc/quagga/Quagga.conf } - catch { exec rm -f /usr/local/xorp/config.boot } - catch { exec mv /etc/resolv.conf.bak /etc/resolv.conf } + catch { nexec rm -f /usr/local/etc/quagga/Quagga.conf } + catch { nexec rm -f /usr/local/xorp/config.boot } + catch { nexec mv /etc/resolv.conf.bak /etc/resolv.conf } statline "Cleanup completed in [expr [clock seconds] - $t_start] seconds." } @@ -338,11 +341,11 @@ proc monitor_loop {} { return } - set cpu_load [expr ([lindex [split [exec sysctl kern.cp_time_avg]] end] + \ + set cpu_load [expr ([lindex [split [nexec sysctl kern.cp_time_avg]] end] + \ 5000) / 10000] .bottom.cpu_load config -text "CPU $cpu_load%" - set nstout [split [exec netstat -m] ] + set nstout [split [nexec netstat -m] ] set mbufs [lindex [split [lindex $nstout 0] /] 0] set clusts [lindex [split [lsearch -inline $nstout "*/$nmbclusters"] /] 0] set mbufp [expr $mbufs * 100 / $nmbufs] @@ -383,7 +386,7 @@ proc execSetIfcQDisc { eid node ifc qdisc } { WFQ { set qdisc wfq } DRR { set qdisc drr } } - exec ngctl msg $ngnode: setcfg "{ $dir={ $qdisc=1 } }" + nexec ngctl msg $ngnode: setcfg "{ $dir={ $qdisc=1 } }" } @@ -396,7 +399,7 @@ proc execSetIfcQDrop { eid node ifc qdrop } { drop-head { set qdrop drophead } drop-tail { set qdrop droptail } } - exec ngctl msg $ngnode: setcfg "{ $dir={ $qdrop=1 } }" + nexec ngctl msg $ngnode: setcfg "{ $dir={ $qdrop=1 } }" } @@ -405,5 +408,5 @@ proc execSetIfcQLen { eid node ifc qlen } { set peers [linkEndpoints [lindex $target 0]] set dir [lindex $target 1] set ngnode "$eid\_[lindex $peers 0]-[lindex $peers 1]" - exec ngctl msg $ngnode: setcfg "{ $dir={ queuelen=$qlen } }" + nexec ngctl msg $ngnode: setcfg "{ $dir={ queuelen=$qlen } }" } diff --git a/hub.tcl b/hub.tcl index 9907d4a..05001c0 100755 --- a/hub.tcl +++ b/hub.tcl @@ -38,11 +38,11 @@ set MODULE hub proc $MODULE.instantiate { eid node } { - catch {exec ngctl mkpeer hub anchor anchor | tail -1} resp + catch {nexec ngctl mkpeer hub anchor anchor | tail -1} resp foreach elem [split [lindex [split $resp "\{\}"] 1]] { if {[string equal -length 5 $elem "id=0x"]} { set id [string range $elem 5 end] - catch {exec ngctl name \[$id\]: "$eid\_$node"} + catch {nexec ngctl name \[$id\]: "$eid\_$node"} } } return diff --git a/imunes.tcl b/imunes.tcl index b2f76b2..7d37f83 100755 --- a/imunes.tcl +++ b/imunes.tcl @@ -112,6 +112,9 @@ if { [file exists /usr/local/xorp/bin/xorp_rtrmgr] } { set supp_router_models "xorp $supp_router_models" } +#proc nexec { args } { + #exec $args +#} # # Initialization should be complete now, so let's start doing something... diff --git a/lanswitch.tcl b/lanswitch.tcl index e555102..c34b1d4 100755 --- a/lanswitch.tcl +++ b/lanswitch.tcl @@ -38,11 +38,11 @@ set MODULE lanswitch proc $MODULE.instantiate { eid node } { - catch {exec ngctl mkpeer bridge anchor anchor | tail -1} resp + catch {nexec ngctl mkpeer bridge anchor anchor | tail -1} resp foreach elem [split [lindex [split $resp "\{\}"] 1]] { if {[string equal -length 5 $elem "id=0x"]} { set id [string range $elem 5 end] - catch {exec ngctl name \[$id\]: "$eid\_$node"} + catch {nexec ngctl name \[$id\]: "$eid\_$node"} } } return diff --git a/quagga.tcl b/quagga.tcl index 36a4959..231a673 100755 --- a/quagga.tcl +++ b/quagga.tcl @@ -93,7 +93,7 @@ proc $MODULE.shellcmd { node } { proc $MODULE.instantiate { eid node } { set node_id "$eid\_$node" l3node.instantiate $eid $node - exec vimage $node_id sysctl net.inet.ip.forwarding=1 + nexec vimage $node_id sysctl net.inet.ip.forwarding=1 return } diff --git a/rj45.tcl b/rj45.tcl index 128d3c5..0b76a1b 100755 --- a/rj45.tcl +++ b/rj45.tcl @@ -36,7 +36,7 @@ proc rj45.instantiate { eid node } { set ifname [getNodeName $node] - exec ifconfig $ifname up + nexec ifconfig $ifname up return } diff --git a/static.tcl b/static.tcl index 9db3efb..423bcae 100755 --- a/static.tcl +++ b/static.tcl @@ -79,7 +79,7 @@ proc $MODULE.shellcmd { node } { proc $MODULE.instantiate { eid node } { set node_id "$eid\_$node" l3node.instantiate $eid $node - exec vimage $node_id sysctl net.inet.ip.forwarding=1 + nexec vimage $node_id sysctl net.inet.ip.forwarding=1 return } diff --git a/xorp.tcl b/xorp.tcl index 051732a..1a0256a 100755 --- a/xorp.tcl +++ b/xorp.tcl @@ -165,7 +165,7 @@ proc $MODULE.shellcmd { node } { proc $MODULE.instantiate { eid node } { set node_id "$eid\_$node" l3node.instantiate $eid $node - exec vimage $node_id sysctl net.inet.ip.forwarding=1 + nexec vimage $node_id sysctl net.inet.ip.forwarding=1 return } -- 2.39.5