]> git.entuzijast.net Git - imunes.git/commitdiff
zamijenio polustrgani oneliner s dva tuceta redaka cisto da se vidi da se to i u...
authorJosip Rodin <joy@numa-ubuntu-vm.(none)>
Sun, 13 Sep 2009 22:11:14 +0000 (00:11 +0200)
committerJosip Rodin <joy@numa-ubuntu-vm.(none)>
Sun, 13 Sep 2009 22:11:14 +0000 (00:11 +0200)
linux/exec.tcl

index 762ee9d5a62f0f7518427e2f3dc0f476e03d5972..33e89c4911fffa3e6429593c3a3f9a21f93b7c72 100755 (executable)
@@ -796,24 +796,33 @@ proc deployCfg {} {
                                }
                        }
 
-               
-               # TODO Ovo bi trebalo elegantnije rjesiti.
-               # Naredba pokusava utvrditi da li vec postoji bridge pod tim imenom,
-               # ako ima onda ga netreba ponovo stvarati nego samo doda interface.
-               # 
-               # Problem je u nacinu kako exec radi.
-               # Ovdje ustvari ispadne $result="child process exited abnormally" za
-               # slucaj kada ne nadje rezultat natrag.
-               # Kad nadje vrijednost, vraca u obliku:
-               #          invalid command name "ime_bridgea"
-
-                       set status [catch { [exec brctl show | grep -v interfaces | awk {{ print $1 }} | grep $bridge] } result]
-                       
-                       if { $result == "invalid command name \"$bridge\""} {
+                       # Tcl pipe, string handling == the suck.
+                       set bridgelist_p [open "| brctl show"]
+                       set bridgelist_s [read $bridgelist_p]
+                       if { [catch {close $bridgelist_p} err] } {
+                           puts "brctl show failed: $err"
+                       }
+                       set bridgelist [split $bridgelist_s \n]
+                       set bridgefound false
+                       set l 0
+                       foreach bridge_line $bridgelist {
+                           set l [expr $l+1]
+                           if { $l == 1 || [string length $bridge_line] == 0 } {
+                               continue
+                           }
+                           puts "$l: $bridge_line"
+                           set nasli [string range $bridge_line 0 [expr [string length $bridge]-1] ]
+                           if { $bridge == $nasli } {
+                               set bridgefound true
+                               break
+                           }
+                       }
+
+                       if { $bridgefound == true } {
                                puts "\nBridge $bridge (L2 hub emulation) already exists."
                        } else {
-                               puts "\nCreating bridge $bridge (L2 hub emulation)"     
-                               nexec brctl addbr $bridge                               
+                               puts "\nCreating bridge $bridge (L2 hub emulation)"
+                               nexec brctl addbr $bridge
                                lappend bridges $bridge
                        }