# bash completion for mstpctl                                -*- shell-script -*-

_mstpctl()
{
    local cur prev words cword
    _init_completion || return

    local command=${words[1]}

    case $cword in
        1)
            COMPREPLY=( $( compgen -W " addbridge createtree deletetree \
                delbridge debuglevel portmcheck setmstconfid setvid2fid \
                setfid2mstid setmaxage setfdelay setmaxhops setforcevers \
                settxholdcount settreeprio setportpathcost setportadminedge \
                setportautoedge setportp2p setportrestrrole setportrestrtcn \
                setbpduguard settreeportprio settreeportcost showbridge \
                showmstilist showmstconfid showvid2fid showfid2mstid showport \
                showportdetail showtree showtreeport showall sethello \
                setageing setportnetwork setportbpdufilter \
                cleartreeportdispute" -- "$cur" ) )
            ;;
        2)
            case $command in
                debuglevel|showall)
                    ;;
                *)
                    COMPREPLY=( $( compgen -W "$( brctl show | \
                        grep 'yes\|no' | awk '{print $1}')" -- "$cur" ) )
            esac
            ;;
        3)
            case $command in
                showport|showportdetail|showtreeport|showportpathcode|\
                setportadminedge|setportautoedge|setportp2p|\
                setportrestrrole|setportrestrtcn|portmcheck|setbpduguard|\
                settreeportprio|settreeportcost|setportnetwork|\
                setportbpdufilter|cleartreeportdispute)
                    COMPREPLY=( $( compgen -W "$(for x in \
                        `ls /sys/class/net/${words[2]}/brif/`; do echo $x; \
                        done)" -- "$cur" ) )
                    ;;
                setforcevers)
                    COMPREPLY=( $( compgen -W 'mstp rstp stp' -- "$cur" ) )
                    ;;
                showbridge)
                    COMPREPLY=( $( compgen -W 'enabled bridge-id \
                        designated-root regional-root root-port path-cost \
                        internal-path-cost max-age bridge-max-age \
                        forward-delay bridge-forward-delay tx-hold-count \
                        max-hops force-protocol-version \
                        time-since-topology-change topology-change-count \
                        topology-change hello-time ageing-time' -- "$cur" ) )
                    ;;
            esac
            ;;
        4)
            case $command in
                setportadminedge|setportautoedge|setportrestrrole|\
                setportrestrtcn|setbpduguard|setportnetwork|setportbpdufilter)
                    COMPREPLY=( $( compgen -W 'yes no' -- "$cur" ) )
                    ;;
                setportp2p)
                    COMPREPLY=( $(compgen -W 'yes no auto' -- "$cur" ) )
                    ;;
                showport|showportdetail)
                    COMPREPLY=( $( compgen -W 'enabled role \
                        state port-id external-port-cost admin-external-cost \
                        internal-port-cost admin-internal-cost designated-root \
                        dsgn-external-cost dsgn-regional-root \
                        dsgn-internal-cost designated-bridge designated-port \
                        admin-edge-port auto-edge-port oper-edge-port \
                        topology-change-ack point-to-point \
                        admin-point-to-point restricted-role restricted-TCN \
                        port-hello-time disputed bpdu-guard-port \
                        bpdu-guard-error network-port ba-inconsistent \
                        bpdufilter-port' -- "$cur" ) )
                    ;;
            esac
            ;;
    esac
} &&
complete -F _mstpctl -o default mstpctl

# ex: ts=4 sw=4 et filetype=sh
