# SUCH DAMAGE.
#
-# $Id: annotations.tcl,v 1.9 2008/01/02 12:08:46 marko Exp $
+# $Id: annotations.tcl,v 1.10 2008/01/05 18:06:25 marko Exp $
#****h* imunes/annotations.tcl
proc drawOval {oval} {
upvar 0 ::cf::[set ::curcfg]::$oval $oval
- global defFillColor zoom curcanvas
- global defTextFontFamily defTextFontSize
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global defFillColor defTextFontFamily defTextFontSize
set coords [getNodeCoords $oval]
set x1 [expr {[lindex $coords 0] * $zoom}]
proc drawRect {rectangle} {
upvar 0 ::cf::[set ::curcfg]::$rectangle $rectangle
- global defFillColor zoom curcanvas
- global defTextFontFamily defTextFontSize
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global defFillColor defTextFontFamily defTextFontSize
set coords [getNodeCoords $rectangle]
if {$coords == ""} {
proc backgroundImage { c file } {
- global sizex sizey zoom
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global sizex sizey
set e_sizex [expr {int($sizex * $zoom)}]
set e_sizey [expr {int($sizey * $zoom)}]
proc textEnter { c x y } {
upvar 0 ::cf::[set ::curcfg]::annotation_list annotation_list
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
set object [newObjectId annotation]
set newtext [$c create text $x $y -text "" \
proc drawText {text} {
upvar 0 ::cf::[set ::curcfg]::$text $text
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
global defTextColor defTextFont defTextFontFamily defTextFontSize
- global zoom curcanvas newfontsize
+ global newfontsize
set coords [getNodeCoords $text]
if {$coords == ""} {
-# $Id: canvas.tcl,v 1.13 2008/01/02 12:08:46 marko Exp $
+# $Id: canvas.tcl,v 1.14 2008/01/05 18:06:25 marko Exp $
#
#
# Copyright 2005-2008 University of Zagreb, Croatia.
# SUCH DAMAGE.
#
-# $Id: canvas.tcl,v 1.13 2008/01/02 12:08:46 marko Exp $
+# $Id: canvas.tcl,v 1.14 2008/01/05 18:06:25 marko Exp $
#****h* imunes/canvas.tcl
#****
proc selectBkgImage {} {
- global bkgImage imageFileTypes showBkgImage curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ global bkgImage imageFileTypes showBkgImage
set imageFileTypes {{"GIF images" {.gif}}
{"All files" {*} }}
# SUCH DAMAGE.
#
-# $Id: copypaste.tcl,v 1.1 2008/01/03 13:47:54 marko Exp $
+# $Id: copypaste.tcl,v 1.2 2008/01/05 18:06:25 marko Exp $
proc cutSelection {} {
proc paste {} {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::link_list link_list
- global curcanvas changed
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ global changed
# Nothing to do if clipboard is empty
if {[set ::cf::clipboard::node_list] == {}} {
# and Technology through the research contract #IP-2003-143.
#
-# $Id: editor.tcl,v 1.87 2008/01/03 13:47:54 marko Exp $
+# $Id: editor.tcl,v 1.88 2008/01/05 18:06:25 marko Exp $
#****h* imunes/editor.tcl
#****
proc updateUndoLog {} {
- global changed undolog undolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::undolog undolog
+ global changed
if { $changed } {
- global t_undolog undolog
+ global t_undolog
set t_undolog ""
dumpCfg string t_undolog
incr undolevel
#****
proc undo {} {
- global undolevel undolog oper_mode
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::undolog undolog
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
if {$oper_mode == "edit" && $undolevel > 0} {
.menubar.edit entryconfigure "Redo" -state normal
#****
proc redo {} {
- global undolevel redolevel undolog oper_mode
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::undolog undolog
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
if {$oper_mode == "edit" && $redolevel > $undolevel} {
incr undolevel
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::link_list link_list
upvar 0 ::cf::[set ::curcfg]::annotation_list annotation_list
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
global background sizex sizey grid
- global curcanvas zoom
global showBkgImage showAnnotations showGrid bkgImage
.bottom.zoom config -text "zoom [expr {int($zoom * 100)}]%"
set e_sizex [expr {int($sizex * $zoom)}]
#****
proc drawNode { node } {
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
global showNodeLabels
global router pc host lanswitch frswitch rj45 hub pseudo
- global curcanvas zoom
set type [nodeType $node]
set coords [getNodeCoords $node]
#****
proc calcDxDy { lnode } {
- global showIfIPaddrs showIfIPv6addrs zoom
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global showIfIPaddrs showIfIPv6addrs
upvar dx x
upvar dy y
#****
proc redrawAllLinks {} {
upvar 0 ::cf::[set ::curcfg]::link_list link_list
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
foreach link $link_list {
set nodes [linkPeers $link]
# * link -- link id
#****
proc splitGUILink { link } {
- global changed zoom
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global changed
set peer_nodes [linkPeers $link]
set new_nodes [splitLink $link pseudo]
}
proc selectAdjacent {} {
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
set selected [selectedNodes]
set adjacent {}
proc button3link { c x y } {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
- global oper_mode env eid
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
set link [lindex [$c gettags {link && current}] 1]
if { $link == "" } {
proc button3node { c x y } {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
- global oper_mode env eid curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ upvar 0 ::cf::[set ::curcfg]::eid eid
set node [lindex [$c gettags {node && current}] 1]
if { $node == "" } {
# * cmd -- the path to the shell.
#****
proc spawnShell { node cmd } {
- global eid remote_exec exec_host gui_unix
+ upvar 0 ::cf::[set ::curcfg]::eid eid
+ global remote_exec exec_host gui_unix
set node_id $eid\.$node
# * iface -- interface name
#****
proc startethereal { node iface } {
- global eid
+ upvar 0 ::cf::[set ::curcfg]::eid eid
set interface "$iface@$eid\.$node"
nexec wireshark -i $interface -f " " &
#****
proc button1 { c x y button } {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
- global curcanvas zoom
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
global activetool newlink curobj changed def_router_model
global router pc host lanswitch frswitch rj45 hub
global oval rectangle text
proc button1-motion { c x y } {
global activetool newlink changed
global lastX lastY sizex sizey selectbox background
- global oper_mode newoval newrect resizemode
+ global newoval newrect resizemode
set x [$c canvasx $x]
set y [$c canvasy $y]
#****
proc button1-release { c x y } {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::undolog undolog
global activetool newlink curobj grid
- global changed undolog undolevel redolevel selectbox
- global lastX lastY sizex sizey zoom
+ global changed selectbox
+ global lastX lastY sizex sizey
global autorearrange_enabled
global resizemode resizeobj
+
set redrawNeeded 0
set x [$c canvasx $x]
# * c -- canvas id
#****
proc popupConfigDialog { c } {
- global activetool router_model link_color supp_router_models oper_mode
- global badentry curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ global activetool router_model link_color supp_router_models
+ global badentry
set wi .popup
catch {destroy $wi}
# set to 0.
#****
proc popupConfigApply { wi object_type target phase } {
- global changed oper_mode router_model link_color badentry
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ upvar 0 ::cf::[set ::curcfg]::eid eid
+ global changed router_model link_color badentry
global customEnabled ipsecEnabled
- global eid
global showIPsecConfig
$wi config -cursor watch
proc align2grid {} {
- global sizex sizey grid zoom changed
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global sizex sizey grid changed
set node_objects [.c find withtag node]
if { [llength $node_objects] == 0 } {
#****
proc rearrange { mode } {
upvar 0 ::cf::[set ::curcfg]::link_list link_list
- global autorearrange_enabled sizex sizey curcanvas zoom
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
+ global autorearrange_enabled sizex sizey
set autorearrange_enabled 1
.menubar.tools entryconfigure "Auto rearrange all" -state disabled
#****
proc switchCanvas { direction } {
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
global sizex sizey
set i [lsearch $canvas_list $curcanvas]
# Tk widget for renaming the canvas.
#****
proc renameCanvasPopup { x y } {
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
set w .entry1
catch {destroy $w}
}
proc resizeCanvasPopup {} {
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
set w .entry1
catch {destroy $w}
# * w -- tk widget (rename canvas popup dilog box)
#****
proc renameCanvasApply { w } {
- global curcanvas changed
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ global changed
set newname [$w.e1 get]
destroy $w
}
proc resizeCanvasApply { w } {
- global curcanvas changed
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ global changed
set x [$w.size.x get]
set y [$w.size.y get]
# different for edit and exec mode.
#****
proc animate {} {
- global animatephase oper_mode
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ global animatephase
.c itemconfigure "selectmark || selectbox" -dashoffset $animatephase
incr animatephase 2
proc zoom { dir } {
- global zoom
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
set stops ".25 .5 .75 1.0 1.5 2.0 4.0"
# set i [lsearch $stops $zoom]
}
proc setZoom { x y } {
- global curcanvas
- global zoom
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
set w .entry1
catch {destroy $w}
}
proc setZoomApply { w } {
- global zoom changed
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
set newzoom [expr [$w.e1 get] / 100.0]
if { $newzoom != $zoom } {
}
proc selectZoom { x y } {
- global curcanvas
- global zoom
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::zoom zoom
set stops ".25 .5 .75 1.0 1.5 2.0 4.0"
# and Technology through the research contract #IP-2003-143.
#
-# $Id: exec.tcl,v 1.68 2008/01/02 12:08:46 marko Exp $
+# $Id: exec.tcl,v 1.69 2008/01/05 18:06:25 marko Exp $
#****f* exec.tcl/nexec
#****
proc setOperMode { mode } {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
- global oper_mode eid activetool
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ upvar 0 ::cf::[set ::curcfg]::eid eid
+ global activetool
global editor_only remote_exec execSock
- global undolevel redolevel
if { $mode == "exec" } { ;# let's try something, sockets should be opened
nexec id -u
# * node -- node id
#****
proc l3node.instantiate { eid node } {
- global ngnodemap
+ upvar 0 ::cf::[set ::curcfg]::ngnodemap ngnodemap
global mac_byte4 mac_byte5
+
set node_id "$eid\.$node"
nexec vimage -c $node_id
nexec vimage $node_id hostname [getNodeName $node]
proc deployCfg {} {
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::link_list link_list
- global eid
+ upvar 0 ::cf::[set ::curcfg]::ngnodemap ngnodemap
+ upvar 0 ::cf::[set ::curcfg]::eid eid
global supp_router_models
global mac_byte4 mac_byte5
global remote_exec
- global ngnodemap
set mac_byte4 0
set mac_byte5 0
# and Technology through the research contract #IP-2003-143.
#
-# $Id: filemgmt.tcl,v 1.15 2008/01/02 12:08:46 marko Exp $
+# $Id: filemgmt.tcl,v 1.16 2008/01/05 18:06:25 marko Exp $
##****h* imunes/filemgmt.tcl
#****
proc newFile {} {
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
- global currentFile oper_mode eid
- global curcanvas undolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::oper_mode oper_mode
+ upvar 0 ::cf::[set ::curcfg]::eid eid
+ global currentFile
if { $oper_mode == "exec" } {
vimageCleanup $eid
#****
proc openFile {} {
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ upvar 0 ::cf::[set ::curcfg]::undolevel undolevel
+ upvar 0 ::cf::[set ::curcfg]::redolevel redolevel
+ upvar 0 ::cf::[set ::curcfg]::undolog undolog
global currentFile
- global undolevel redolevel undolog activetool
- global curcanvas
+ global activetool
set fileName [file tail $currentFile]
wm title . "IMUNES $fileName"
# and Technology through the research contract #IP-2003-143.
#
-# $Id: hub.tcl,v 1.13 2008/01/01 18:22:59 marko Exp $
+# $Id: hub.tcl,v 1.14 2008/01/05 18:06:25 marko Exp $
#****h* imunes/hub.tcl
#****
proc $MODULE.instantiate { eid node } {
- global ngnodemap
+ upvar 0 ::cf::[set ::curcfg]::ngnodemap ngnodemap
catch {exec vimage $eid ngctl mkpeer hub anchor anchor | tail -1} resp
catch {exec vimage $eid ngctl l | fgrep " Name: " | cut -c51-58 | xargs echo } nglist
# and Technology through the research contract #IP-2003-143.
#
-# $Id: imunes.tcl,v 1.33 2008/01/03 13:47:54 marko Exp $
+# $Id: imunes.tcl,v 1.34 2008/01/05 18:06:25 marko Exp $
#****h* imunes/imunes.tcl
#****
set execMode interactive
-set eid i[format %04x [pid]]
+set eid_base i[format %04x [pid]]
while { [string index [lindex $argv 0] 0] == "-" } {
switch -exact -- [lindex $argv 0] {
}
"-e" -
"--eid" {
- set eid [lindex $argv 1]
+ set eid_base [lindex $argv 1]
set argv [lrange $argv 2 end]
}
default {
set cf::cfg0::link_list {}
set cf::cfg0::annotation_list {}
set cf::cfg0::canvas_list {}
+set cf::cfg0::eid $eid_base
+set cfg_list cfg0
set curcfg cfg0
# Clipboard
loadCfg $cfg
deployCfg
} else {
- vimageCleanup $eid
+ vimageCleanup $eid_base
}
}
# and Technology through the research contract #IP-2003-143.
#
-# $Id: initgui.tcl,v 1.43 2008/01/03 13:47:54 marko Exp $
+# $Id: initgui.tcl,v 1.44 2008/01/05 18:06:25 marko Exp $
#****h* imunes/initgui.tcl
set selected ""
newCanvas ""
+set ::cf::cfg0::undolevel 0
+set ::cf::cfg0::redolevel 0
+set ::cf::cfg0::undolog(0) ""
+set ::cf::cfg0::curcanvas [lindex [set ::cf::cfg0::canvas_list] 0]
+set ::cf::cfg0::zoom 1.0
+set ::cf::cfg0::oper_mode edit
+
set animatephase 0
-set undolevel 0
-set redolevel 0
-set undolog(0) ""
set changed 0
set badentry 0
set cursorState 0
set clock_seconds 0
-set oper_mode edit
set grid 24
set showGrid 1
-set zoom 1.0
-set curcanvas [lindex [set ::cf::[set ::curcfg]::canvas_list] 0]
set autorearrange_enabled 0
# resize Oval/Rectangle, "false" or direction: north/west/east/...
# and Technology through the research contract #IP-2003-143.
#
-# $Id: lanswitch.tcl,v 1.13 2008/01/01 18:22:59 marko Exp $
+# $Id: lanswitch.tcl,v 1.14 2008/01/05 18:06:25 marko Exp $
#****h* imunes/lanswitch.tcl
#****
proc $MODULE.instantiate { eid node } {
- global ngnodemap
+ upvar 0 ::cf::[set ::curcfg]::ngnodemap ngnodemap
catch {exec vimage $eid ngctl mkpeer bridge anchor anchor | tail -1} resp
catch {exec vimage $eid ngctl l | fgrep " Name: " | cut -c51-58 | xargs echo } nglist
# and Technology through the research contract #IP-2003-143.
#
-# $Id: linkcfg.tcl,v 1.20 2008/01/02 12:08:46 marko Exp $
+# $Id: linkcfg.tcl,v 1.21 2008/01/05 18:06:25 marko Exp $
#****h* imunes/linkcfg.tcl
upvar 0 ::cf::[set ::curcfg]::link_list link_list
upvar 0 ::cf::[set ::curcfg]::$lnode1 $lnode1
upvar 0 ::cf::[set ::curcfg]::$lnode2 $lnode2
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
global defEthBandwidth defSerBandwidth defSerDelay
global defLinkColor defLinkWidth
- global curcanvas
if { [nodeType $lnode1] == "frswitch" && \
[nodeType $lnode2] != "router" && \
# SUCH DAMAGE.
#
-# $Id: ns2imunes.tcl,v 1.5 2008/01/02 12:08:46 marko Exp $
+# $Id: ns2imunes.tcl,v 1.6 2008/01/05 18:06:25 marko Exp $
#****h* imunes/ns2imunes.tcl
upvar 0 ::cf::[set ::curcfg]::node_list node_list
upvar 0 ::cf::[set ::curcfg]::link_list link_list
upvar 0 ::cf::[set ::curcfg]::canvas_list canvas_list
- global curcanvas
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
global cfg
+
set cfg {}
set node_list {}
set link_list {}
# and Technology through the research contract #IP-2003-143.
#
-# $Id: rj45.tcl,v 1.11 2008/01/01 18:22:59 marko Exp $
+# $Id: rj45.tcl,v 1.12 2008/01/05 18:06:25 marko Exp $
#****h* imunes/rj45.tcl
#****
proc $MODULE.instantiate { eid node } {
- global ngnodemap
+ upvar 0 ::cf::[set ::curcfg]::ngnodemap ngnodemap
set ifname [getNodeName $node]
set ngnodemap($ifname) $ifname
# SUCH DAMAGE.
#
-# $Id: topogen.tcl,v 1.5 2008/01/01 18:22:59 marko Exp $
+# $Id: topogen.tcl,v 1.6 2008/01/05 18:06:25 marko Exp $
menu .menubar.t_g -tearoff 0
}
proc newNodes { n } {
- global curcanvas grid sizex sizey activetool
+ upvar 0 ::cf::[set ::curcfg]::curcanvas curcanvas
+ global grid sizex sizey activetool
set v {}
set r [expr {($n - 1) * (1 + 4 / $n) * $grid / 2}]