#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 hairpin:toggle\ hairpin\ mode\ on\ a\ port 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 showstp:show\ bridge\ stp\ info 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|hairpin) _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' elif [[ $subcmd == hairpin ]]; then _message -e onoff 'on|off' fi fi fi return ret