X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=planetlab%2Fscripts%2Fsliver-ovs.in;h=f7a777868c18747722ebc1803d8563405b010a48;hb=6d7d2ace1494936d11b8cabcec26c7e4d0fdda68;hp=2c9b062fa4b872bcddcaef6889ff39fda16aa813;hpb=7934111cdba68dd98c199b1ee23a55935d1572b7;p=sliver-openvswitch.git diff --git a/planetlab/scripts/sliver-ovs.in b/planetlab/scripts/sliver-ovs.in index 2c9b062fa..f7a777868 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 @@ -97,19 +97,15 @@ function start_db () { [ -d $RUN_DIR ] || { echo "Could not initialize $RUN_DIR - exiting" ; exit 1 ; } ## run the stuff - if [ ! -f "$RUN_DIR/ovsdb-server.pid" ]; then ovsdb-server $DB_CONF_FILE \ --remote=punix:$DB_SOCKET \ - --remote=db:Open_vSwitch,manager_options \ - --private-key=db:SSL,private_key \ - --certificate=db:SSL,certificate \ - --bootstrap-ca-cert=db:SSL,ca_cert \ + --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ + --private-key=db:Open_vSwitch,SSL,private_key \ + --certificate=db:Open_vSwitch,SSL,certificate \ + --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ --pidfile \ --log-file=$DB_LOG \ --detach >& /dev/null - else - echo 'ovsdb-server appears to be running already, *not* starting' - fi wait_server $RUN_DIR/ovsdb-server.pid ovsdb-server 30 } @@ -119,15 +115,11 @@ function start_switch () { # ensure ovsdb-server is running is_db_running || { echo "ovsdb-server not running" >&2 ; exit 1 ; } - if [ ! -f "$RUN_DIR/ovs-vswitchd.pid" ] ; then ovs-vswitchd \ --pidfile \ --log-file=$SWITCH_LOG \ --detach \ unix:$DB_SOCKET >& /dev/null - else - echo 'ovs-vswitchd appears to be running already, *not* starting' - fi wait_server $RUN_DIR/ovs-vswitchd.pid ovs-vswitchd 30 } @@ -177,6 +169,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 () { @@ -286,6 +284,35 @@ function show () { ovs-vsctl --db=unix:$DB_SOCKET show } +function get_local_ip () { + + get_params "bridge" "$@" + + set -e + ovs-vsctl --db=unix:$DB_SOCKET br-exists "$bridge" || return + local ip=$(ovs-vsctl get interface "$bridge" options:local_ip) + local netmask=$(ovs-vsctl get interface "$bridge" options:local_netmask) + eval echo $ip/$netmask +} + +function get_local_links () { + + get_params "bridge" "$@" + + set -e + ovs-vsctl --db=unix:$DB_SOCKET br-exists "$bridge" || return + 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 @@ -338,7 +365,8 @@ 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" +set_controller del_controller gmap_probe +get_local_ip get_local_links get_mac" function main () { message="Usage: $COMMAND ...