mirror of
https://github.com/zsh-users/zsh
synced 2024-09-30 05:06:09 +00:00
64 lines
1.6 KiB
Plaintext
64 lines
1.6 KiB
Plaintext
#compdef sockstat
|
|
local -a args protocols
|
|
local proto
|
|
|
|
case $OSTYPE in
|
|
*bsd*)
|
|
args=(
|
|
'-4[show AF_INET (IPv4) sockets]'
|
|
'-6[show AF_INET6 (IPv6) sockets]'
|
|
'-c[show connected sockets]'
|
|
'-l[show listening sockets]'
|
|
'*-p+[specify port number]:port numbers (comma delimited)'
|
|
'-u[show AF_LOCAL (UNIX) sockets]'
|
|
)
|
|
;|
|
|
freebsd<12->.*)
|
|
args+=(
|
|
'-S[display the protocol stack if applicable]'
|
|
'-U[display the remote UDP encapsulation port number if applicable]'
|
|
'-v[verbose mode]'
|
|
'-w[use wider field size for displaying addresses]'
|
|
)
|
|
;|
|
|
freebsd<13->.*)
|
|
args+=(
|
|
'-C[display the congestion control module]'
|
|
'-i[display the inp_gencnt]'
|
|
"-n[don't resolve numeric UIDs to user names]"
|
|
'-q[quiet mode, do not print the header line]'
|
|
)
|
|
;|
|
|
freebsd*)
|
|
for proto in ${${(M)${(f)"$(</etc/protocols)"}##[a-z0-9]*}}; do
|
|
case $proto in
|
|
*\#*)
|
|
protocols+=(${${${(j: :)${(q)=proto}}// *\# /\[}/%/\]})
|
|
;;
|
|
*)
|
|
protocols+=(${${(j: :)${=proto}}// */})
|
|
esac
|
|
done
|
|
|
|
args+=(
|
|
'*-j[show sockets belonging to JID]: : _jails -0 -o jid'
|
|
'-L[exclude loopback]'
|
|
'*-P+[specify protocol]: : _values -s , protocols $protocols'
|
|
'-s[display protocol state if applicable]'
|
|
)
|
|
;;
|
|
netbsd*)
|
|
args+=(
|
|
'*-f+[only show specified address family]:address family:(inet inet6 local unix)'
|
|
'-n[no symbolic names for addresses/ports]'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
if (( $#args )); then
|
|
_arguments -s -w : $args
|
|
return
|
|
fi
|
|
|
|
_default
|