#!/bin/sh
BR="br0"

usage() {
    echo "Usage $0 command [bridge]"
    echo "	status 		show status"
    echo "	enable		enable RSTP"
    echo "	disable		disable RSTP and forward BPDU"
    echo "	primary		configure bridge as primary root"
    echo "	secondary	configure bridge as secondary root"
    exit 1
}

status() {
    ovs-appctl rstp/show $1
}

rstp_enable() {
    echo "Enabling RSTP on '$1'"
    ovs-vsctl set bridge $1 rstp_enable=true
    ovs-vsctl set bridge $1 other-config:forward-bpdu=false
}

rstp_disable() {
    echo "Disabling RSTP on '$1'"
    ovs-vsctl set bridge $1 rstp_enable=false
    ovs-vsctl set bridge $1 other-config:forward-bpdu=true
}

rstp_setprio() {
    echo "Setting RSTP bridge priority for '$1' to $2"
    ovs-vsctl set bridge $1 other_config:rstp-priority=$2
}

[ $# -lt 1 ] && usage

br="br0"; [ -n "$2" ] && br=$2

cmd=$1
case $cmd in
    enable)
	rstp_enable $br
    ;;
    disable)
	rstp_disable $br
    ;;
    primary)
	rstp_setprio $br 24576
    ;;
    secondary)
	rstp_setprio $br 28672
    ;;
    status)
    status $br
    ;;
    *)
    usage
    ;;
esac
