0
     ˆ¿¾ƒh¹ÂÁ      0100
  "   	ˆl–Ü4ý(&ÔËm
�ÆŸ¸ÓêbÑ¿¿ƒxOÃÂ  Z    	# tipc(8) completion                                       -*- shell-script -*-

_tipc_media()
{
    local optind=$1

    if ((cword == optind)); then
        COMPREPLY=($(compgen -W 'media' -- $cur))
        return 0
    elif ((cword == optind + 1)); then
        COMPREPLY=($(compgen -W 'udp eth ib' -- $cur))
        return 0
    fi

    return 1
}

_tipc_bearer()
{
    local optind=$1
    local media i

    if _tipc_media $optind; then
        return
    fi

    for ((i = 0; i < cword; i++)); do
        if [[ ${words[i]} == 'media' ]]; then
            media=${words[i + 1]}
        fi
    done

    if ((cword == optind + 2)); then
        case "$media" in
            "udp")
                COMPREPLY=($(compgen -W 'name' -- $cur))
                ;;
            "eth" | "ib")
                COMPREPLY=($(compgen -W 'device' -- $cur))
                ;;
        esac
    elif ((cword == optind + 3)); then
        case "$media" in
            "udp")
                local names=$(tipc bearer list 2>/dev/null | awk -F: '/^udp:/ {print $2}')
                COMPREPLY=($(compgen -W '$names' -- $cur))
                ;;
            "eth")
                local interfaces=$(command ls /sys/class/net/)
                COMPREPLY=($(compgen -W '$interfaces' -- $cur))
                ;;
        esac
    fi
}

_tipc_link_opts()
{
    COMPREPLY=($(compgen -W 'priority tolerance window' -- $cur))
}

_tipc_link()
{
    local optind=$1
    local filter=$2

    if ((cword == optind)); then
        COMPREPLY=($(compgen -W 'link' -- $cur))
    elif ((cword == optind + 1)); then
        # awk drops link state and last trailing :
        local links=$(tipc link list 2>/dev/null |
            awk '{print substr($1, 0, length($1))}')
        local -a exclude
        [[ $filter == peers ]] && exclude=(-X broadcast-link)
        COMPREPLY=($(compgen "${exclude[@]}" -W '$links' -- $cur))
    fi
}

_tipc()
{
    local cur prev words cword optind i p
    _init_completion || return

    optind=1
    COMPREPLY=()

    # Flags can be placed anywhere in the commandline
    case "$cur" in
        -*)
            COMPREPLY=($(compgen -W '-h --help' -- $cur))
            return
            ;;
    esac

    if ((cword == 1)); then
        COMPREPLY=($(compgen -W 'bearer link media nametable node socket' -- $cur))
        return
    fi

    case "${words[optind]}" in
        bearer)
            ((optind++))

            if ((cword == optind)); then
                COMPREPLY=($(compgen -W 'enable disable set get list' -- $cur))
                return
            fi

            case "${words[optind]}" in
                enable)
                    local media params
                    ((optind++))

                    if ((cword < optind + 4)); then
                        _tipc_bearer $optind
                        return
                    fi

                    for ((i = 0; i < cword; i++)); do
                        if [[ ${words[i]} == 'media' ]]; then
                            media=${words[i + 1]}
                        fi
                    done
                    case "$media" in
                        "udp")
                            declare -a params=("localip" "localport" "remoteip"
                                "remoteport" "domain" "priority")
                            ;;
                        "eth" | "ib")
                            declare -a params=("domain" "priority")
                            ;;
                        *)
                            return
                            ;;
                    esac

                    # If the previous word was a known parameter, we assume a value for
                    # that key. Note that this would break if the user attempts to use
                    # a known key as value.
                    for i in "${params[@]}"; do
                        if [[ $prev == "$i" ]]; then
                            return
                        fi
                    done

                    