zsh-workers
 help / color / mirror / code / Atom feed
90e30d6c24086be5bf6f7c75394f17d4a6c0d127 blob 3173 bytes (raw)

  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
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
 
#compdef arp

local state line expl curcontext="$curcontext" ret=1
typeset -A opt_args
local -a cmds args vopt flags

flags=( temp pub )
cmds=(
  '(2 3)-a[show entries for all hosts]'
  '(2 -d)-d[delete entry from table]'
  '(-n -v)-s[create an arp entry]'
  '(2 3 -n -v)-f[read multiple entries from file]'
)
args=( '-n[show numeric addresses]' )
vopt='-v[be verbose]'

if (( ${+words[(r)-d]} )) && [[ $OSTYPE = (*bsd|dragonfly|darwin)* ]]; then
  args+=( '(1 *)-a[delete all entries]' )
fi

case $OSTYPE in
  linux*)
    cmds=(
      '(2 * -D --use-device)-a[show entries in BSD style output format]'
      '!(2 * -D --use-device)-e'
      '(2 -n --numeric -D --use-device -H --hw-type)'{-d,--delete}'[delete entry from table]'
      '(-n --numeric)'{-s,--set}'[create an ARP entry]'
      '(2 * -D --use-device)'{-f,--file}'[read multiple entries from file]'
    )
    args=(
      '(-i --device)'{-i+,--device=}'[select an interface]:interface:_net_interfaces'
      '(-D --use-device -a --display -d --delete)'{-D,--use-device}"[use specified interface's hardware address]"
      '(-H --hw-type -d --delete)'{-H+,--hw-type=}'[specify class of entries to check for]:class:(ash ether arcnet pronet ax25 netrom rose dlci fddi hippi irda x25 infiniband eui64)'
      '(* -n --numeric -d --delete -s --set -f --file)'{-n,--numeric}'[show numeric addresses]'
      '(-v --verbose)'{-v,--verbose}'[be verbose]'
    )
    flags+=( netmask )
  ;;
  darwin*|freebsd*|dragonfly*)
    cmds+=( '(-n -i)-S[create an arp entry, replacing any existing entry]' )
  ;|
  darwin*|freebsd*)
    args+=( '(-s -Q -f)-i+[select an interface]:interface:_net_interfaces' )
  ;|
  darwin*)
    args+=(
      '(-d -s -S -f)-l[show link-layer reachability information]'
      '(-d -s -S -f)-x[show extended link-layer reachability information]'
    )
    flags+=( reject blackhole only ifscope )
  ;;
  dragonfly*)
    flags+=( only )
    args+=( '-c:cpu' )
  ;;
  netbsd*)
    flags+=( proxy )
    args+=( $vopt )
  ;;
  freebsd*)
    flags+=( blackhole reject )
  ;;
  openbsd*)
    args+=(
      '(-a -d -W)-F[overwrite existing entries]'
      '(-W)-V+[select the routing domain]:routing domain'
    )
    cmds+=(
      '(- 1)-W[send the wake on LAN frame]'
    )
    flags+=( permanent )
  ;;
  solaris*) flags+=( trail permanent) ;;
esac

_arguments -C -s -S $args \
  '1: :->hostintable' \
  '2:ethernet address' \
  "*: :->flags" \
  + '(cmds)' $cmds && ret=0

if [[ "$state" = hostintable ]]; then
  if [[ -n $opt_args[(i)-(D|-use-device)] ]]; then
    _wanted interfaces expl interface _net_interfaces && ret=0
  elif [[ -n $opt_args[(i)-(f|-file)] ]]; then
    _files && ret=0
  elif [[ -n $opt_args[(i)-(s|S|-set)] ]]; then
    _hosts && ret=0
  else
    _wanted hosts expl 'host' compadd ${${${(f)"$(${words[1]} -an)"}##[ ?(]#}%%[ )]*} && ret=0
  fi
elif [[ "$state" = flags ]]; then
  if [[ $words[CURRENT-1] = netmask ]]; then
    _message -e netmasks netmask
  elif (( $+opt_args[-W] )) || [[ $words[CURRENT-1] = ifscope ]]; then
    _wanted interfaces expl interface _net_interfaces && ret=0
  else
    _wanted flags expl flag compadd -F line $flags && ret=0
  fi
fi

return ret
debug log:

solving 90e30d6c2 ...
found 90e30d6c2 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).