]> git.entuzijast.net Git - imunes.git/commitdiff
Implementirani linkovi u obliku L2 mostova, gašenje mostova izvedeno
authorKosta Pribić <kosta.pribic@gmail.com>
Tue, 8 Sep 2009 18:41:29 +0000 (20:41 +0200)
committerKosta Pribić <kosta.pribic@gmail.com>
Tue, 8 Sep 2009 18:41:29 +0000 (20:41 +0200)
preko shell skripte

bridge_cleanup.sh [new file with mode: 0755]
linux/exec.tcl

diff --git a/bridge_cleanup.sh b/bridge_cleanup.sh
new file mode 100755 (executable)
index 0000000..a497bd5
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# TODO: ili prepisatu u tcl ili korigirati tako da ignorira prvi red
+
+BRIDGES=`brctl show | awk '{print $1}'`
+
+echo "  Krece brisanje mostova..."
+for bridge in $BRIDGES; do 
+    echo "      Brisem \"$bridge\" ..."
+       sudo ifconfig $bridge down; 
+       sudo brctl delbr $bridge; 
+done
+echo "  Gotovo brisanje mostova..."
index fe61ceec6715176ddd3b96a940085b2c1ec4d69b..2acff90de8ea201a9079262a07923feefd8fa411 100755 (executable)
@@ -641,52 +641,66 @@ proc deployCfg {} {
        }
     }
 
-## TODO: podesavanje L2 parametara linka ne podrzavamo
-
-#    for { set pending_links $link_list } { $pending_links != "" } {} {
-#      set link [lindex $pending_links 0]
-#      set i [lsearch -exact $pending_links $link]
-#      set pending_links [lreplace $pending_links $i $i]
-
-#      set lnode1 [lindex [linkPeers $link] 0]
-#      set lnode2 [lindex [linkPeers $link] 1]
-#      set ifname1 [ifcByPeer $lnode1 $lnode2]
-#      set ifname2 [ifcByPeer $lnode2 $lnode1]
-
-#      if { [getLinkMirror $link] != "" } {
-#          set mirror_link [getLinkMirror $link]
-#          set i [lsearch -exact $pending_links $mirror_link]
-#          set pending_links [lreplace $pending_links $i $i]
-
-#          statline "Creating link $link/$mirror_link"
-
-#          set p_lnode2 $lnode2
-#          set lnode2 [lindex [linkPeers $mirror_link] 0]
-#          set ifname2 [ifcByPeer $lnode2 [getNodeMirror $p_lnode2]]
-#      } else {
-#          statline "Creating link $link"
-#      }
+## TODO: kreiranje linkova i podesavanje l2 parametara
+
+    for { set pending_links $link_list } { $pending_links != "" } {} {
+       set link [lindex $pending_links 0]
+       set i [lsearch -exact $pending_links $link]
+       set pending_links [lreplace $pending_links $i $i]
+
+       set lnode1 [lindex [linkPeers $link] 0]
+       set lnode2 [lindex [linkPeers $link] 1]
+       set ifname1 [ifcByPeer $lnode1 $lnode2]
+       set ifname2 [ifcByPeer $lnode2 $lnode1]
+
+       if { [getLinkMirror $link] != "" } {
+           set mirror_link [getLinkMirror $link]
+           set i [lsearch -exact $pending_links $mirror_link]
+           set pending_links [lreplace $pending_links $i $i]
 
-#      set lname $lnode1-$lnode2
-#      set bandwidth [expr [getLinkBandwidth $link] + 0]
-#      set delay [expr [getLinkDelay $link] + 0]
-#      set ber [expr [getLinkBER $link] + 0]
-#      set dup [expr [getLinkDup $link] + 0]
-
-#      set peer1 \
-#          [lindex [[typemodel $lnode1].nghook $eid $lnode1 $ifname1] 0]
-#      set peer2 \
-#          [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 0]
-#      set ngpeer1 $ngnodemap($peer1)
-#      set ngpeer2 $ngnodemap($peer2)
-#      set nghook1 \
-#          [lindex [[typemodel $lnode1].nghook $eid $lnode1 $ifname1] 1]
-#      set nghook2 \
-#          [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 1]
+           statline "Creating link $link/$mirror_link"
+
+           set p_lnode2 $lnode2
+           set lnode2 [lindex [linkPeers $mirror_link] 0]
+           set ifname2 [ifcByPeer $lnode2 [getNodeMirror $p_lnode2]]
+       } else {
+           statline "Creating link $link"
+       }
 
+       set lname $lnode1-$lnode2
+       set bandwidth [expr [getLinkBandwidth $link] + 0]
+       set delay [expr [getLinkDelay $link] + 0]
+       set ber [expr [getLinkBER $link] + 0]
+       set dup [expr [getLinkDup $link] + 0]
+
+       set peer1 \
+           [lindex [[typemodel $lnode1].nghook $eid $lnode1 $ifname1] 0]
+       set peer2 \
+           [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 0]
+       set ngpeer1 $ngnodemap($peer1)
+       set ngpeer2 $ngnodemap($peer2)
+       set nghook1 \
+           [lindex [[typemodel $lnode1].nghook $eid $lnode1 $ifname1] 1]
+       set nghook2 \
+           [lindex [[typemodel $lnode2].nghook $eid $lnode2 $ifname2] 1]
+           
+#   puts ">>>>>>>>>>kreiranje linkova"
 #      puts "  nexec vimage $eid ngctl mkpeer $ngpeer1: pipe $nghook1 upper            "
 #      puts "  nexec vimage $eid ngctl name $ngpeer1:$nghook1 $lname                   "
 #      puts "  nexec vimage $eid ngctl connect $lname: $ngpeer2: lower $nghook2        "
+#   puts ">>>>>>>>>>kreiranje linkova"
+    
+    set host_if_a $ngpeer1
+    set host_if_b $ngpeer2
+    set bridge $lname
+    
+    puts "\nCreating bridge $bridge"
+    nexec brctl addbr $bridge
+    nexec brctl addif $bridge $host_if_a
+    nexec brctl addif $bridge $host_if_b
+    nexec ifconfig $bridge up
+    puts "  Bridge $bridge is up, connected interfaces $host_if_a and $host_if_b"
+
 
 # FreeBSD-specific
 #      # Ethernet frame has a 14-byte header - this is a temp. hack!!!
@@ -848,8 +862,14 @@ proc vimageCleanup { eid } {
        nexec vzctl destroy $node
     }
 
-       puts "  TODO: missing bridge cleanup in main host"
-
+    #TODO:  prebaciti u tcl kod, error handling i modificirati da ne
+    #       brise bridgeove bez diskriminacije nego one koje je imunes
+    #       napravio
+    
+       puts "\nBridge cleanup in main host"
+    catch { nexec ./bridge_cleanup.sh }
+    
+    
 # FreeBSD metoda:
 #    foreach vimage $vimages {
 #      set stattxt "Shutting down vimage $vimage"