X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fscripts%2Fsliver-ovs.in;h=5326dc2b8aa4c742689ada94da13d28974a08ee9;hb=3f0cbe2df696701ad07f61add08692a1eca54f67;hp=1a63bf02e4df8b13ef94e6d8e6b6c98268dfd416;hpb=85b20fd6ee585f462e012fbcc7f966a81edab2ed;p=sliver-openvswitch.git diff --git a/planetlab/scripts/sliver-ovs.in b/planetlab/scripts/sliver-ovs.in index 1a63bf02e..5326dc2b8 100755 --- a/planetlab/scripts/sliver-ovs.in +++ b/planetlab/scripts/sliver-ovs.in @@ -67,10 +67,10 @@ function wait_server () { } function wait_device () { - tapname=$1; shift - timeout=$1; shift + local tapname=$1; shift + local timeout=$1; shift - expire=$(($(date +%s) + $timeout)) + local expire=$(($(date +%s) + $timeout)) while ! ip link show up | egrep -q "^[0-9]+: +$tapname:"; do echo "Waiting for $tapname to come UP...$(($expire - $(date +%s)))s left" >&2 @@ -177,6 +177,12 @@ function create_bridge () { -- set bridge "$bridge" datapath_type=planetlab \ -- set interface "$bridge" options:local_ip="$IP" option:local_netmask="$PREFIX" \ -- "$@" + + # check that the bridge has actually been created + if [ -z "$W" ]; then + local tap=$(ovs-appctl netdev-pltap/get-tapname "$bridge") + wait_device $tap 10 + fi } function create_port () { @@ -306,6 +312,15 @@ function get_local_links () { ovs-vsctl --db=unix:$DB_SOCKET list-ifaces "$bridge" } +function get_mac () { + + get_params "bridge" "$@" + + set -e + local tap=$(ovs-appctl netdev-pltap/get-tapname "$bridge") + ifconfig "$tap" | awk '/HWaddr/ { print $5 }' +} + ### for demos - connect to an ndnmap deployment to visualize links bandwidth # this expects 3 arguments # an interface name, L- based on your ids in conf.mk @@ -353,32 +368,13 @@ function gmap_probe () { echo $! > $pid_file } -#################### -# xxx tmp for a demo -# there *must* be a better way to do that -# the thing is the slice sees several tap devices at this point, which is odd... -# for now I'm searching the tapname based on some hint - the vnet ip range -VNET=10.0.16 -function show_mac () { - ifnames=$(grep : /proc/net/dev | cut -d: -f1 | awk '{print $1;}') - tapname="" - for ifname in $ifnames; do - ifconfig $ifname | grep -q "$VNET" && tapname=$ifname - done - if [ -z "$tapname" ] ; then - echo "no-tap-found-for$VNET" - exit 1 - fi - ifconfig $tapname | grep -i hwaddr | awk '{print $5;}' -} - #################### SUPPORTED_SUBCOMMANDS="start stop status start_db stop_db start_switch stop_switch create_bridge create_port del_bridge del_port show get_local_endpoint set_remote_endpoint set_controller del_controller gmap_probe -get_local_ip get_local_links show_mac" +get_local_ip get_local_links get_mac" function main () { message="Usage: $COMMAND ...