aboutsummaryrefslogtreecommitdiffstats
path: root/tools/bpf/bpftool/bash-completion
diff options
context:
space:
mode:
authorQuentin Monnet <quentin.monnet@netronome.com>2018-11-30 11:25:45 -0500
committerAlexei Starovoitov <ast@kernel.org>2018-11-30 17:06:06 -0500
commitcad4977344b35ea116ec5fefe91a76b1dfa113f5 (patch)
tree04ba49432fb1fb4421eddac4f84786c4fc727c23 /tools/bpf/bpftool/bash-completion
parent327e5dab6dd8559ba28739ec8873350d7b5bb080 (diff)
tools: bpftool: fix bash completion for bpftool prog (attach|detach)
Fix bash completion for "bpftool prog (attach|detach) PROG TYPE MAP" so that the list of indices proposed for MAP are map indices, and not PROG indices. Also use variables for map and prog reference types ("id", "pinned", and "tag" for programs). Fixes: b7d3826c2ed6 ("bpf: bpftool, add support for attaching programs to maps") Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/bpf/bpftool/bash-completion')
-rw-r--r--tools/bpf/bpftool/bash-completion/bpftool73
1 files changed, 49 insertions, 24 deletions
diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool
index 45c2db257d2b..b7e6c4f25ad1 100644
--- a/tools/bpf/bpftool/bash-completion/bpftool
+++ b/tools/bpf/bpftool/bash-completion/bpftool
@@ -243,16 +243,20 @@ _bpftool()
243 # Completion depends on object and command in use 243 # Completion depends on object and command in use
244 case $object in 244 case $object in
245 prog) 245 prog)
246 if [[ $command != "load" && $command != "loadall" ]]; then 246 # Complete id, only for subcommands that use prog (but no map) ids
247 case $prev in 247 case $command in
248 id) 248 show|list|dump|pin)
249 _bpftool_get_prog_ids 249 case $prev in
250 return 0 250 id)
251 ;; 251 _bpftool_get_prog_ids
252 esac 252 return 0
253 fi 253 ;;
254 esac
255 ;;
256 esac
254 257
255 local PROG_TYPE='id pinned tag' 258 local PROG_TYPE='id pinned tag'
259 local MAP_TYPE='id pinned'
256 case $command in 260 case $command in
257 show|list) 261 show|list)
258 [[ $prev != "$command" ]] && return 0 262 [[ $prev != "$command" ]] && return 0
@@ -293,22 +297,43 @@ _bpftool()
293 return 0 297 return 0
294 ;; 298 ;;
295 attach|detach) 299 attach|detach)
296 if [[ ${#words[@]} == 7 ]]; then 300 case $cword in
297 COMPREPLY=( $( compgen -W "id pinned" -- "$cur" ) ) 301 3)
298 return 0 302 COMPREPLY=( $( compgen -W "$PROG_TYPE" -- "$cur" ) )
299 fi 303 return 0
300 304 ;;
301 if [[ ${#words[@]} == 6 ]]; then 305 4)
302 COMPREPLY=( $( compgen -W "msg_verdict skb_verdict \ 306 case $prev in
303 skb_parse flow_dissector" -- "$cur" ) ) 307 id)
304 return 0 308 _bpftool_get_prog_ids
305 fi 309 ;;
306 310 pinned)
307 if [[ $prev == "$command" ]]; then 311 _filedir
308 COMPREPLY=( $( compgen -W "id pinned" -- "$cur" ) ) 312 ;;
309 return 0 313 esac
310 fi 314 return 0
311 return 0 315 ;;
316 5)
317 COMPREPLY=( $( compgen -W 'msg_verdict skb_verdict \
318 skb_parse flow_dissector' -- "$cur" ) )
319 return 0
320 ;;
321 6)
322 COMPREPLY=( $( compgen -W "$MAP_TYPE" -- "$cur" ) )
323 return 0
324 ;;
325 7)
326 case $prev in
327 id)
328 _bpftool_get_map_ids
329 ;;
330 pinned)
331 _filedir
332 ;;
333 esac
334 return 0
335 ;;
336 esac
312 ;; 337 ;;
313 load|loadall) 338 load|loadall)
314 local obj 339 local obj