function _opensips-complete() {
    local cur prev opts completed_args
    COMPREPLY=()

    cur="${COMP_WORDS[COMP_CWORD]}"

    prev="${COMP_WORDS[COMP_CWORD-1]}"

    completed_args=""
    if [[ "${prev:0:1}" != "-" ]]; then
        if [[ $COMP_CWORD -ge 2 ]]; then
            completed_args="${COMP_WORDS[@]:1:COMP_CWORD-2}"
            if [[ "${COMP_WORDS[COMP_CWORD-2]:0:1}" == "-" ]]; then
                completed_args="$completed_args $prev"
            fi
        fi

        if [[ "${cur:0:1}" == "-" ]]; then
            opts="$($1 $completed_args -bc params)"
        else
            opts="$($1 $completed_args -bc)"
        fi
    else
        while [[ "${prev:0:1}" == "-" ]]; do
            prev="${prev:1}"
        done
        completed_args="${COMP_WORDS[@]:1:COMP_CWORD-2}"
        opts="$($1 -bc $prev)"
    fi

    COMPREPLY=( $(compgen -W "$opts" -- "$cur") )
}

complete -F _opensips-complete opensips-mi opensips-event
