summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-07-01 21:41:37 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-07-01 21:41:37 +0000
commit6b936c3d296c68d4b32861300ddc5a27ed85af03 (patch)
tree0e38c0d8c9cda7ca238013d4ae25db20a957e32d
parent5d46210ce518b07472363d27a7d094ce56a59dda (diff)
downloadzsh-6b936c3d296c68d4b32861300ddc5a27ed85af03.tar.gz
zsh-6b936c3d296c68d4b32861300ddc5a27ed85af03.zip
Tomasz Pala: users/11599: _ip improvements
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Unix/Command/_ip21
2 files changed, 22 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ab465c6a..22e57dac5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-07-01 Peter Stephenson <p.w.stephenson@ntlworld.com>
+
+ * Tomasz Pala: users/11599: Completion/Unix/Command/_ip:
+ improvements for VLAN interfaces, deleting addresses,
+ abbreviations.
+
2007-07-01 Clint Adams <clint@zsh.org>
* 23628: Completion/Unix/Command/_git: merge in from Nikolai
diff --git a/Completion/Unix/Command/_ip b/Completion/Unix/Command/_ip
index 66b6923e4..e37ca5141 100644
--- a/Completion/Unix/Command/_ip
+++ b/Completion/Unix/Command/_ip
@@ -9,7 +9,7 @@
# Values encoding simple types
#
local -a subcmd_dev
-subcmd_dev=(/$'[[:alpha:]]##[[:digit:]]##\0'/ ':interfaces:network interface:_net_interfaces')
+subcmd_dev=(/$'[[:alpha:]]##[[:digit:]]##(\.[[:digit:]]##)#\0'/ ':interfaces:network interface:_net_interfaces')
local -a subcmd_onoff
subcmd_onoff=(/$'(on|off)\0'/ ':onoff:state (on or off):(on off)')
@@ -31,6 +31,14 @@ subcmd_ipaddr=(
':ipaddress:IP address (v4 or v6) with optional /<network-prefix-length>:( )'
)
+local -a subcmd_ipaddrs
+local PATH=$PATH
+PATH=/sbin:$PATH
+subcmd_ipaddrs=(
+ /$'(<->(.<->(.<->(.<->|)|)|)|[:[:xdigit]]#:[:[:xdigit:]]#)(|/<->)\0'/
+ ":ipaddress:IP address (v4 or v6) currently set:( $(ip addr show | sed -n 's/^ *inet6* \([0-9a-f\.:/]*\) .*$/\1/p') )"
+)
+
local -a subcmd_scope
_regex_words scope "IP address scope" \
'global:address globally valid' \
@@ -190,7 +198,7 @@ link_cmds=("$reply[@]")
#
local -a addr_add_cmds
# TODO: broadcast can take + or =
-_regex_words addr-add-commands "addr add/change/replace commands" \
+_regex_words addr-add-commands "addr add/remove/change/replace commands" \
'dev:specify device:$subcmd_dev' \
'lo*cal:specify local IP address:$subcmd_ipaddr' \
'p*eer:specify peer IP address (point-to-point):$subcmd_ipaddr' \
@@ -200,6 +208,9 @@ _regex_words addr-add-commands "addr add/change/replace commands" \
# can complete IP address with no keyword
addr_add_cmds=("(" $subcmd_ipaddr "|" ")" "$reply[@]" "#" )
+local -a addr_del_cmds
+addr_del_cmds=("(" $subcmd_ipaddrs "|" "$reply[@]" ")" "#" )
+
local -a addr_show_cmds
# TODO: broadcast can take + or =
_regex_words addr-show-commands "addr show commands" \
@@ -223,7 +234,7 @@ _regex_words \
'a*dd:add new protocol address:$addr_add_cmds' \
'c*hange:change existing protocol address:$addr_add_cmds' \
'r*replace:add or update protocol address:$addr_add_cmds' \
- 'd*elete:delete protocol address:$addr_add_cmds' \
+ 'd*elete:delete protocol address:$addr_del_cmds' \
's*how:show protocol address:$addr_show_cmds' \
'f*lush:flush protocol address:$addr_show_cmds'
addr_cmds=("$reply[@]")
@@ -495,11 +506,11 @@ _regex_words \
commands "ip command" \
'l*ink:configure network device:$link_cmds' \
'a*ddr:manage protocol address:$addr_cmds' \
- 'ro*ute:manage routing table:$route_cmds' \
+ 'r*oute:manage routing table:$route_cmds' \
'ru*le:manage routing policy database:$rule_cmds' \
'n*eigh:manage neighbour/ARP tables:$neigh_cmds' \
't*unnel:configure tunnel:$tunnel_cmds' \
- 'ma*ddr:manage multicast addresses:$maddr_cmds' \
+ 'm*addr:manage multicast addresses:$maddr_cmds' \
'mr*oute:manage multicast routing cache:$mroute_cmds' \
'mo*nitor:monitor state:$monitor_cmds'
args+=("$reply[@]")