}
}
-
- # 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
}