about summary refs log tree commit diff
path: root/Completion/Linux/Command/_brctl
blob: 4d053d5cbac86ad3429333adf12fc7d018604161 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#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\ garbage\ 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