From: Kosta Pribić Date: Tue, 8 Sep 2009 18:41:29 +0000 (+0200) Subject: Implementirani linkovi u obliku L2 mostova, gašenje mostova izvedeno X-Git-Url: https://git.entuzijast.net/?a=commitdiff_plain;h=58b585989bcd24e0ce2d392f4981497c6bbe3433;p=imunes.git Implementirani linkovi u obliku L2 mostova, gašenje mostova izvedeno preko shell skripte --- diff --git a/bridge_cleanup.sh b/bridge_cleanup.sh new file mode 100755 index 0000000..a497bd5 --- /dev/null +++ b/bridge_cleanup.sh @@ -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..." diff --git a/linux/exec.tcl b/linux/exec.tcl index fe61cee..2acff90 100755 --- a/linux/exec.tcl +++ b/linux/exec.tcl @@ -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"