about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Completion/Linux/Command/.distfiles2
-rw-r--r--Completion/Linux/Command/_brctl63
3 files changed, 66 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c023507f9..bf296bd7a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-08-08  Oliver Kiddle  <opk@zsh.org>
 
+	* unposted: Completion/Linux/Command/_brctl: new brctl completion
+
 	* 21566: Tobias Gruetzmacher: Completion/Unix/Command/_darcs:
 	fix to list all repositories
 
diff --git a/Completion/Linux/Command/.distfiles b/Completion/Linux/Command/.distfiles
index bf0907d0a..46621a4e7 100644
--- a/Completion/Linux/Command/.distfiles
+++ b/Completion/Linux/Command/.distfiles
@@ -1,5 +1,5 @@
 DISTFILES_SRC='
 .distfiles
-_acpi _iptables _iwconfig _losetup _mii-tool _modutils _mondo _pkgtool
+_acpi _brctl _iptables _iwconfig _losetup _mii-tool _modutils _mondo _pkgtool
 _tune2fs _uml _valgrind _yast
 '
diff --git a/Completion/Linux/Command/_brctl b/Completion/Linux/Command/_brctl
new file mode 100644
index 000000000..877326821
--- /dev/null
+++ b/Completion/Linux/Command/_brctl
@@ -0,0 +1,63 @@
+#compdef brctl
+
+local curcontext="$curcontext" expl ret=1
+local subcmd
+
+if (( CURRENT == 2 )); then
+  _describe 'brctl command' '(
+    addbr:create\ instance\ of\ ethernet\ bridge
+    delbr:deletes\ specified\ bridge\ instance
+    show:show\ all\ current\ bridge\ instances
+    addif:add\ interface\ to\ bridge
+    delif:remove\ interface\ from\ bridge
+    showmacs:show\ a\ list\ of\ learned\ MAC\ addresses
+    setageing:set\ MAC\ address\ ageing\ time
+    setgcint:set\ grabage\ collection\ interval
+    stp:control\ use\ of\ spanning\ tree\ protocol
+    setbridgeprio:set\ bridge\ priority
+    setfd:set\ bridge\ forward\ delay
+    sethello:set\ bridge\ hello\ time
+    setmaxage:set\ maximum\ message\ age
+    setpathcost:set\ cost\ of\ port
+    setportprio:set\ priority\ of\ port
+  )' && ret=0
+else
+  shift words
+  (( CURRENT-- ))
+  subcmd="$words[1]"
+  curcontext="${curcontext%:*}-${subcmd}:"
+  
+  if (( CURRENT == 2 )); then
+    _wanted bridges expl 'bridge' compadd \
+    	${${(f)"$(brctl show 2>/dev/null)"}[2,-1]%%	*} && ret=0
+  elif (( CURRENT == 3 )); then
+    case $subcmd in
+      addif|delif)
+      	_net_interfaces && ret=0
+      ;;
+      setageing|setgcint|setfd|sethello|setmaxage)
+      	_message -e time 'time (seconds)'
+      ;;
+      setbridgeprio)
+      	_message -e priority 'priority'
+      ;;
+      setpathcost|setportprio)
+        _message -e ports 'port'
+      ;;
+      stp)
+        _wanted states expl 'state' compadd on off && ret=0
+      ;;
+      *)
+        _message 'unknown subcommand: $subcmd'
+      ;;
+    esac
+  elif (( CURRENT == 4 )); then
+    if [[ $subcmd == setpathcost ]]; then
+      _message -e cost 'cost'
+    elif [[ $subcmd == setportprio ]]; then
+      _message -e priority 'priority'
+    fi
+  fi
+fi
+
+return ret