Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a827a164 authored by Quentin Monnet's avatar Quentin Monnet Committed by Daniel Borkmann
Browse files

tools: bpftool: add bash completion for cgroup commands



Add bash completion for "bpftool cgroup" command family. While at it,
also fix the formatting of some keywords in the man page for cgroups.

Fixes: 5ccda64d ("bpftool: implement cgroup bpf operations")
Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 55f3538c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -26,8 +26,8 @@ MAP COMMANDS
|	**bpftool** **cgroup help**
|
|	*PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
|	*ATTACH_TYPE* := { *ingress* | *egress* | *sock_create* | *sock_ops* | *device* }
|	*ATTACH_FLAGS* := { *multi* | *override* }
|	*ATTACH_TYPE* := { **ingress** | **egress** | **sock_create** | **sock_ops** | **device** }
|	*ATTACH_FLAGS* := { **multi** | **override** }

DESCRIPTION
===========
+60 −4
Original line number Diff line number Diff line
@@ -52,16 +52,24 @@ _bpftool_once_attr()
    done
}

# Takes a list of words in argument; adds them all to COMPREPLY if none of them
# is already present on the command line. Returns no value.
_bpftool_one_of_list()
# Takes a list of words as argument; if any of those words is present on the
# command line, return 0. Otherwise, return 1.
_bpftool_search_list()
{
    local w idx
    for w in $*; do
        for (( idx=3; idx < ${#words[@]}-1; idx++ )); do
            [[ $w == ${words[idx]} ]] && return 1
            [[ $w == ${words[idx]} ]] && return 0
        done
    done
    return 1
}

# Takes a list of words in argument; adds them all to COMPREPLY if none of them
# is already present on the command line. Returns no value.
_bpftool_one_of_list()
{
    _bpftool_search_list $* && return 1
    COMPREPLY+=( $( compgen -W "$*" -- "$cur" ) )
}

@@ -351,6 +359,54 @@ _bpftool()
                    ;;
            esac
            ;;
        cgroup)
            case $command in
                show|list)
                    _filedir
                    return 0
                    ;;
                attach|detach)
                    local ATTACH_TYPES='ingress egress sock_create sock_ops \
                        device'
                    local ATTACH_FLAGS='multi override'
                    local PROG_TYPE='id pinned tag'
                    case $prev in
                        $command)
                            _filedir
                            return 0
                            ;;
                        ingress|egress|sock_create|sock_ops|device)
                            COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \
                                "$cur" ) )
                            return 0
                            ;;
                        id)
                            _bpftool_get_prog_ids
                            return 0
                            ;;
                        *)
                            if ! _bpftool_search_list "$ATTACH_TYPES"; then
                                COMPREPLY=( $( compgen -W "$ATTACH_TYPES" -- \
                                    "$cur" ) )
                            elif [[ "$command" == "attach" ]]; then
                                # We have an attach type on the command line,
                                # but it is not the previous word, or
                                # "id|pinned|tag" (we already checked for
                                # that). This should only leave the case when
                                # we need attach flags for "attach" commamnd.
                                _bpftool_one_of_list "$ATTACH_FLAGS"
                            fi
                            return 0
                            ;;
                    esac
                    ;;
                *)
                    [[ $prev == $object ]] && \
                        COMPREPLY=( $( compgen -W 'help attach detach \
                            show list' -- "$cur" ) )
                    ;;
            esac
            ;;
    esac
} &&
complete -F _bpftool bpftool