Netdev Archive on lore.kernel.org help / color / mirror / Atom feed
From: Andrii Nakryiko <andrii.nakryiko@gmail.com> To: Quentin Monnet <quentin@isovalent.com> Cc: Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org> Subject: Re: [PATCH bpf-next 1/7] tools: bpftool: slightly ease bash completion updates Date: Fri, 30 Jul 2021 11:45:00 -0700 [thread overview] Message-ID: <CAEf4BzadrpVDm6yAriDSXK2WOzbzeZJoGKxbRzH+KA4YUD7SEg@mail.gmail.com> (raw) In-Reply-To: <20210729162932.30365-2-quentin@isovalent.com> On Thu, Jul 29, 2021 at 9:29 AM Quentin Monnet <quentin@isovalent.com> wrote: > > Bash completion for bpftool gets two minor improvements in this patch. > > Move the detection of attach types for "bpftool cgroup attach" outside > of the "case/esac" bloc, where we cannot reuse our variable holding the > list of supported attach types as a pattern list. After the change, we > have only one list of cgroup attach types to update when new types are > added, instead of the former two lists. > > Also rename the variables holding lists of names for program types, map > types, and attach types, to make them more unique. This can make it > slightly easier to point people to the relevant variables to update, but > the main objective here is to help run a script to check that bash > completion is up-to-date with bpftool's source code. > > Signed-off-by: Quentin Monnet <quentin@isovalent.com> > --- > tools/bpf/bpftool/bash-completion/bpftool | 57 +++++++++++++---------- > 1 file changed, 32 insertions(+), 25 deletions(-) > > diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool > index cc33c5824a2f..b2e33a2d8524 100644 > --- a/tools/bpf/bpftool/bash-completion/bpftool > +++ b/tools/bpf/bpftool/bash-completion/bpftool > @@ -404,8 +404,10 @@ _bpftool() > return 0 > ;; > 5) > - COMPREPLY=( $( compgen -W 'msg_verdict stream_verdict \ > - stream_parser flow_dissector' -- "$cur" ) ) > + local BPFTOOL_PROG_ATTACH_TYPES='msg_verdict \ > + stream_verdict stream_parser flow_dissector' > + COMPREPLY=( $( compgen -W \ > + "$BPFTOOL_PROG_ATTACH_TYPES" -- "$cur" ) ) > return 0 > ;; > 6) > @@ -464,7 +466,7 @@ _bpftool() > > case $prev in > type) > - COMPREPLY=( $( compgen -W "socket kprobe \ > + local BPFTOOL_PROG_LOAD_TYPES='socket kprobe \ > kretprobe classifier flow_dissector \ > action tracepoint raw_tracepoint \ > xdp perf_event cgroup/skb cgroup/sock \ > @@ -479,8 +481,9 @@ _bpftool() > cgroup/post_bind4 cgroup/post_bind6 \ > cgroup/sysctl cgroup/getsockopt \ > cgroup/setsockopt cgroup/sock_release struct_ops \ > - fentry fexit freplace sk_lookup" -- \ > - "$cur" ) ) > + fentry fexit freplace sk_lookup' > + COMPREPLY=( $( compgen -W \ > + "$BPFTOOL_PROG_LOAD_TYPES" -- "$cur" ) ) nit: this and similar COMPREPLY assignments now can be on a single line now, no? > return 0 > ;; > id) > @@ -698,15 +701,16 @@ _bpftool() > return 0 > ;; > type) > - COMPREPLY=( $( compgen -W 'hash array prog_array \ > - perf_event_array percpu_hash percpu_array \ > - stack_trace cgroup_array lru_hash \ > + local BPFTOOL_MAP_CREATE_TYPES='hash array \ > + prog_array perf_event_array percpu_hash \ > + percpu_array stack_trace cgroup_array lru_hash \ > lru_percpu_hash lpm_trie array_of_maps \ > hash_of_maps devmap devmap_hash sockmap cpumap \ > xskmap sockhash cgroup_storage reuseport_sockarray \ > percpu_cgroup_storage queue stack sk_storage \ > - struct_ops inode_storage task_storage' -- \ > - "$cur" ) ) > + struct_ops inode_storage task_storage' > + COMPREPLY=( $( compgen -W \ > + "$BPFTOOL_MAP_CREATE_TYPES" -- "$cur" ) ) > return 0 > ;; > key|value|flags|entries) > @@ -1017,34 +1021,37 @@ _bpftool() > return 0 > ;; > attach|detach) > - local ATTACH_TYPES='ingress egress sock_create sock_ops \ > - device bind4 bind6 post_bind4 post_bind6 connect4 connect6 \ > + local BPFTOOL_CGROUP_ATTACH_TYPES='ingress egress \ > + sock_create sock_ops device \ > + bind4 bind6 post_bind4 post_bind6 connect4 connect6 \ > getpeername4 getpeername6 getsockname4 getsockname6 \ > sendmsg4 sendmsg6 recvmsg4 recvmsg6 sysctl getsockopt \ > setsockopt sock_release' > local ATTACH_FLAGS='multi override' > local PROG_TYPE='id pinned tag name' > - case $prev in > - $command) > - _filedir > - return 0 > - ;; > - ingress|egress|sock_create|sock_ops|device|bind4|bind6|\ > - post_bind4|post_bind6|connect4|connect6|getpeername4|\ > - getpeername6|getsockname4|getsockname6|sendmsg4|sendmsg6|\ > - recvmsg4|recvmsg6|sysctl|getsockopt|setsockopt|sock_release) > + # Check for $prev = $command first > + if [ $prev = $command ]; then > + _filedir > + return 0 > + # Then check for attach type. This is done outside of the > + # "case $prev in" to avoid writing the whole list of attach > + # types again as pattern to match (where we cannot reuse > + # our variable). > + elif [[ $BPFTOOL_CGROUP_ATTACH_TYPES =~ $prev ]]; then > COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \ > "$cur" ) ) > return 0 > - ;; > + fi > + # case/esac for the other cases > + case $prev in > id) > _bpftool_get_prog_ids > return 0 > ;; > *) > - if ! _bpftool_search_list "$ATTACH_TYPES"; then > - COMPREPLY=( $( compgen -W "$ATTACH_TYPES" -- \ > - "$cur" ) ) > + if ! _bpftool_search_list "$BPFTOOL_CGROUP_ATTACH_TYPES"; then > + COMPREPLY=( $( compgen -W \ > + "$BPFTOOL_CGROUP_ATTACH_TYPES" -- "$cur" ) ) > elif [[ "$command" == "attach" ]]; then > # We have an attach type on the command line, > # but it is not the previous word, or > -- > 2.30.2 >
next prev parent reply other threads:[~2021-07-30 18:45 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-29 16:29 [PATCH bpf-next 0/7] tools: bpftool: update, synchronise and Quentin Monnet 2021-07-29 16:29 ` [PATCH bpf-next 1/7] tools: bpftool: slightly ease bash completion updates Quentin Monnet 2021-07-30 18:45 ` Andrii Nakryiko [this message] 2021-07-30 21:46 ` Quentin Monnet 2021-07-30 21:54 ` Andrii Nakryiko 2021-07-29 16:29 ` [PATCH bpf-next 2/7] selftests/bpf: check consistency between bpftool source, doc, completion Quentin Monnet 2021-07-29 16:29 ` [PATCH bpf-next 3/7] tools: bpftool: complete and synchronise attach or map types Quentin Monnet 2021-07-30 18:52 ` Andrii Nakryiko 2021-07-30 21:47 ` Quentin Monnet 2021-07-29 16:29 ` [PATCH bpf-next 4/7] tools: bpftool: update and synchronise option list in doc and help msg Quentin Monnet 2021-07-29 16:29 ` [PATCH bpf-next 5/7] selftests/bpf: update bpftool's consistency script for checking options Quentin Monnet 2021-07-29 16:29 ` [PATCH bpf-next 6/7] tools: bpftool: document and add bash completion for -L, -B options Quentin Monnet 2021-07-30 18:59 ` Andrii Nakryiko 2021-07-30 21:48 ` Quentin Monnet 2021-07-30 22:10 ` Andrii Nakryiko 2021-07-29 16:29 ` [PATCH bpf-next 7/7] tools: bpftool: complete metrics list in "bpftool prog profile" doc Quentin Monnet 2021-07-30 19:06 ` [PATCH bpf-next 0/7] tools: bpftool: update, synchronise and Andrii Nakryiko 2021-07-30 21:48 ` Quentin Monnet 2021-07-30 21:58 ` Andrii Nakryiko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAEf4BzadrpVDm6yAriDSXK2WOzbzeZJoGKxbRzH+KA4YUD7SEg@mail.gmail.com \ --to=andrii.nakryiko@gmail.com \ --cc=andrii@kernel.org \ --cc=ast@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=netdev@vger.kernel.org \ --cc=quentin@isovalent.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).