summaryrefslogtreecommitdiff
path: root/completions/ip
diff options
context:
space:
mode:
Diffstat (limited to 'completions/ip')
-rw-r--r--completions/ip237
1 files changed, 145 insertions, 92 deletions
diff --git a/completions/ip b/completions/ip
index f7e6e7c2..12ad9aa3 100644
--- a/completions/ip
+++ b/completions/ip
@@ -2,9 +2,9 @@
_iproute2_etc()
{
- COMPREPLY+=( $(compgen -W \
+ COMPREPLY+=($(compgen -W \
"$(awk '!/#/ { print $2 }' /etc/iproute2/$1 2>/dev/null)" \
- -- "$cur") )
+ -- "$cur"))
}
_ip()
@@ -13,100 +13,99 @@ _ip()
_init_completion || return
case $prev in
- -V|-Version|-rc|-rcvbuf)
+ -V | -Version | -rc | -rcvbuf)
return
;;
- -f|-family)
- COMPREPLY=( $(compgen -W 'inet inet6 ipx dnet link' -- "$cur") )
+ -f | -family)
+ COMPREPLY=($(compgen -W 'inet inet6 ipx dnet link' -- "$cur"))
return
;;
- -b|-batch)
+ -b | -batch)
_filedir
return
;;
-force)
- COMPREPLY=( $(compgen -W '-batch' -- "$cur") )
+ COMPREPLY=($(compgen -W '-batch' -- "$cur"))
return
;;
esac
- local subcword cmd subcmd
- for (( subcword=1; subcword < ${#words[@]}-1; subcword++ )); do
+ local subcword cmd subcmd=""
+ for ((subcword = 1; subcword < ${#words[@]} - 1; subcword++)); do
[[ ${words[subcword]} == -b?(atch) ]] && return
- [[ -n $cmd ]] && subcmd=${words[subcword]} && break
+ [[ -v cmd ]] && subcmd=${words[subcword]} && break
[[ ${words[subcword]} != -* && \
- ${words[subcword-1]} != -@(f?(amily)|rc?(vbuf)) ]] && \
+ ${words[subcword - 1]} != -@(f?(amily)|rc?(vbuf)) ]] &&
cmd=${words[subcword]}
done
- if [[ -z $cmd ]]; then
+ if [[ ! -v cmd ]]; then
case $cur in
-*)
local c="-Version -statistics -details -resolve -family
-oneline -timestamp -batch -rcvbuf"
- [[ $cword -eq 1 ]] && c+=" -force"
- COMPREPLY=( $(compgen -W "$c" -- "$cur") )
- return
+ ((cword == 1)) && c+=" -force"
+ COMPREPLY=($(compgen -W "$c" -- "$cur"))
;;
*)
- COMPREPLY=( $(compgen -W "help $($1 help 2>&1 | command sed -e \
+ COMPREPLY=($(compgen -W "help $($1 help 2>&1 | command sed -e \
'/OBJECT := /,/}/!d' -e \
's/.*{//' -e \
's/}.*//' -e \
- 's/|//g')" -- "$cur") )
- return
+ 's/|//g')" -- "$cur"))
;;
esac
+ return
fi
[[ $subcmd == help ]] && return
case $cmd in
- l|link)
+ l | link)
case $subcmd in
add)
# TODO
;;
delete)
- case $(($cword-$subcword)) in
+ case $((cword - subcword)) in
1)
_available_interfaces
;;
2)
- COMPREPLY=( $(compgen -W 'type' -- "$cur") )
+ COMPREPLY=($(compgen -W 'type' -- "$cur"))
;;
3)
- [[ $prev == type ]] && \
- COMPREPLY=( $(compgen -W 'vlan veth vcan dummy
- ifb macvlan can' -- "$cur") )
+ [[ $prev == type ]] &&
+ COMPREPLY=($(compgen -W 'vlan veth vcan dummy
+ ifb macvlan can' -- "$cur"))
;;
esac
;;
set)
- if [[ $cword-$subcword -eq 1 ]]; then
+ if ((cword - subcword == 1)); then
_available_interfaces
else
case $prev in
- arp|dynamic|multicast|allmulticast|promisc|\
- trailers)
- COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
- ;;
- txqueuelen|name|address|broadcast|mtu|netns|alias)
+ arp | dynamic | multicast | allmulticast | promisc | \
+ trailers)
+ COMPREPLY=($(compgen -W 'on off' -- "$cur"))
;;
+ txqueuelen | name | address | broadcast | mtu | netns | alias) ;;
+
*)
local c="arp dynamic multicast allmulticast
promisc trailers txqueuelen name address
broadcast mtu netns alias"
[[ $prev != @(up|down) ]] && c+=" up down"
- COMPREPLY=( $(compgen -W "$c" -- "$cur") )
+ COMPREPLY=($(compgen -W "$c" -- "$cur"))
;;
esac
fi
;;
show)
- if [[ $cword -eq $subcword+1 ]]; then
+ if ((cword == subcword + 1)); then
_available_interfaces
- COMPREPLY+=( $(compgen -W 'dev group up' -- "$cur") )
+ COMPREPLY+=($(compgen -W 'dev group up' -- "$cur"))
elif [[ $prev == dev ]]; then
_available_interfaces
elif [[ $prev == group ]]; then
@@ -114,16 +113,16 @@ _ip()
fi
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help add delete set show' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add delete set show' \
+ -- "$cur"))
;;
esac
;;
- a|addr|address)
+ a | addr | address)
case $subcmd in
- add|change|replace)
+ add | change | replace)
if [[ $prev == dev ]]; then
_available_interfaces
elif [[ $prev == scope ]]; then
@@ -141,12 +140,12 @@ _ip()
: # TODO
fi
;;
- show|flush)
- if [[ $cword -eq $subcword+1 ]]; then
+ show | flush)
+ if ((cword == subcword + 1)); then
_available_interfaces
- COMPREPLY+=( $(compgen -W 'dev scope to label dynamic
+ COMPREPLY+=($(compgen -W 'dev scope to label dynamic
permanent tentative deprecated dadfailed temporary
- primary secondary up' -- "$cur") )
+ primary secondary up' -- "$cur"))
elif [[ $prev == dev ]]; then
_available_interfaces
elif [[ $prev == scope ]]; then
@@ -154,16 +153,16 @@ _ip()
fi
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help add change replace del
- show flush' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add change replace del
+ show flush' -- "$cur"))
;;
esac
;;
addrlabel)
case $subcmd in
- list|add|del|flush)
+ list | add | del | flush)
if [[ $prev == dev ]]; then
_available_interfaces
else
@@ -171,16 +170,16 @@ _ip()
fi
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help list add del flush' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help list add del flush' \
+ -- "$cur"))
;;
esac
;;
- route)
+ r | route)
case $subcmd in
- list|flush)
+ list | flush)
if [[ $prev == proto ]]; then
_iproute2_etc rt_protos
else
@@ -190,44 +189,79 @@ _ip()
get)
# TODO
;;
- add|del|change|append|replace|monitor)
- # TODO
+ a | add | d | del | change | append | r | replace | monitor)
+ if [[ $prev == via ]]; then
+ COMPREPLY=($(compgen -W "$($1 r | command sed -ne \
+ 's/.*via \([0-9.]*\).*/\1/p')" -- "$cur"))
+ elif [[ $prev == "$subcmd" ]]; then
+ COMPREPLY=($(compgen -W "table default \
+ $($1 r | cut -d ' ' -f 1)" -- "$cur"))
+ elif [[ $prev == dev ]]; then
+ _available_interfaces -a
+ elif [[ $prev == table ]]; then
+ COMPREPLY=($(compgen -W 'local main default' -- "$cur"))
+ else
+ COMPREPLY=($(compgen -W 'via dev weight' -- "$cur"))
+ fi
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help list flush get add del
- change append replace monitor' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help list flush get add del
+ change append replace monitor' -- "$cur"))
;;
esac
;;
rule)
case $subcmd in
- add|del)
- # TODO
+ add | del | list | lst)
+ case $prev in
+ from | to | tos | dsfield | fwmark | uidrange | ipproto | sport | \
+ dport | priority | protocol | suppress_prefixlength | \
+ suppress_ifgroup | realms | nat | goto) ;;
+
+ iif | oif)
+ _available_interfaces -a
+ ;;
+ table | lookup)
+ COMPREPLY=($(compgen -W 'local main default' -- "$cur"))
+ ;;
+ *)
+ COMPREPLY=($(compgen -W 'from to tos dsfield fwmark
+ uidrange ipproto sport dport priority table lookup
+ protocol suppress_prefixlength suppress_ifgroup realms
+ nat goto iif oif not' -- "$cur"))
+ ;;
+ esac
;;
- flush|show|list|lst)
+ flush | save)
+ if [[ $prev == protocol ]]; then
+ :
+ else
+ COMPREPLY=($(compgen -W 'protocol' -- "$cur"))
+ fi
;;
+ restore | show) ;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help list add del flush' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add del list flush save
+ restore show' -- "$cur"))
;;
esac
;;
neigh)
case $subcmd in
- add|del|change|replace)
+ add | del | change | replace)
# TODO
;;
- show|flush)
+ show | flush)
# TODO
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help add del change replace
- show flush' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add del change replace
+ show flush' -- "$cur"))
;;
esac
;;
@@ -241,45 +275,45 @@ _ip()
# TODO
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help change show' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help change show' \
+ -- "$cur"))
;;
esac
;;
tunnel)
case $subcmd in
- show)
- ;;
- add|change|del|prl|6rd)
+ show) ;;
+
+ add | change | del | prl | 6rd)
# TODO
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help add change del show prl
- 6rd' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add change del show prl
+ 6rd' -- "$cur"))
;;
esac
;;
maddr)
case $subcmd in
- add|del)
+ add | del)
# TODO
;;
show)
if [[ $cword -eq $subcword+1 || $prev == dev ]]; then
_available_interfaces
- [[ $prev != dev ]] && \
- COMPREPLY=( $(compgen -W '${COMPREPLY[@]} dev' \
- -- "$cur") )
+ [[ $prev != dev ]] &&
+ COMPREPLY=($(compgen -W '${COMPREPLY[@]} dev' \
+ -- "$cur"))
fi
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help add del show' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add del show' \
+ -- "$cur"))
;;
esac
;;
@@ -290,8 +324,8 @@ _ip()
# TODO
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help show' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help show' -- "$cur"))
;;
esac
;;
@@ -300,26 +334,45 @@ _ip()
case $subcmd in
all) ;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'help all' -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help all' -- "$cur"))
+ ;;
+ esac
+ ;;
+
+ netns)
+ case $subcmd in
+ list | monitor) ;;
+
+ add | identify | list-id)
+ # TODO
+ ;;
+ delete | exec | pids | set)
+ [[ $prev == "$subcmd" ]] &&
+ COMPREPLY=($(compgen -W "$($1 netns list)" -- "$cur"))
+ ;;
+ *)
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'help add delete exec
+ identify list list-id monitor pids set' -- "$cur"))
;;
esac
;;
xfrm)
case $subcmd in
- state|policy|monitor)
+ state | policy | monitor)
# TODO
;;
*)
- [[ $cword -eq $subcword ]] && \
- COMPREPLY=( $(compgen -W 'state policy monitor' \
- -- "$cur") )
+ ((cword == subcword)) &&
+ COMPREPLY=($(compgen -W 'state policy monitor' \
+ -- "$cur"))
;;
esac
;;
esac
} &&
-complete -F _ip ip
+ complete -F _ip ip
# ex: filetype=sh