38adc8bf54
ListenAddress works the same as BindToAddress, except that from now on, explicitly binding outgoing packets to the address of a socket is only done for sockets specified with BindToAddress.
80 lines
2.5 KiB
Text
80 lines
2.5 KiB
Text
_tinc() {
|
|
local cur prev opts confvars commands nets
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
opts="-c -d -D -K -n -o -L -R -U --config --no-detach --debug --net --option --mlock --logfile --pidfile --chroot --user --help --version"
|
|
confvars="Address AddressFamily BindToAddress BindToInterface Broadcast Cipher ClampMSS Compression ConnectTo DecrementTTL Device DeviceType Digest DirectOnly ECDSAPrivateKeyFile ECDSAPublicKey ECDSAPublicKeyFile ExperimentalProtocol Forwarding GraphDumpFile Hostnames IffOneQueue IndirectData Interface KeyExpire ListenAddress LocalDiscovery MACExpire MACLength MaxOutputBufferSize MaxTimeout Mode Name PMTU PMTUDiscovery PingInterval PingTimeout Port PriorityInheritance PrivateKeyFile ProcessPriority Proxy PublicKeyFile ReplayWindow StrictSubnets Subnet TCPOnly TunnelServer UDPRcvBuf UDPSndBuf VDEGroup VDEPort Weight"
|
|
commands="add connect debug del disconnect dump edit export export-all generate-ecdsa-keys generate-keys generate-rsa-keys get help import info init invite join log pcap pid purge reload restart retry set start stop top version"
|
|
|
|
case ${prev} in
|
|
-c|--config)
|
|
compopt -o dirnames 2>/dev/null
|
|
return 0
|
|
;;
|
|
-n|--net)
|
|
nets=""
|
|
pushd /etc/tinc >/dev/null 2>/dev/null
|
|
for dir in *; do
|
|
if [[ -f "$dir/tinc.conf" ]]; then
|
|
nets="$nets $dir"
|
|
fi
|
|
done
|
|
popd >/dev/null 2>/dev/null
|
|
COMPREPLY=( $(compgen -W "${nets}" -- ${cur}) )
|
|
return 0
|
|
;;
|
|
-o|--option)
|
|
compopt -o nospace
|
|
COMPREPLY=( $(compgen -W "${confvars}" -- ${cur}) )
|
|
if [[ ${#COMPREPLY[*]} == 1 ]] ; then
|
|
COMPREPLY=$COMPREPLY=
|
|
fi
|
|
return 0
|
|
;;
|
|
-U|--user)
|
|
COMPREPLY=( $(compgen -u ${cur}) )
|
|
return 0
|
|
;;
|
|
--logfile|--pidfile)
|
|
compopt -o filenames 2>/dev/null
|
|
COMPREPLY=( $(compgen -f ${cur}) )
|
|
return 0
|
|
esac
|
|
if [[ ${cur} == -* ]] ; then
|
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
|
return 0
|
|
fi
|
|
if [[ $1 == "d" ]]; then
|
|
if [[ -z ${cur} ]] ; then
|
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
|
fi
|
|
return 0
|
|
fi
|
|
COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
|
|
case $prev in
|
|
get|set|add|del)
|
|
COMPREPLY=( $(compgen -W "${confvars}" -- ${cur}) )
|
|
return 0
|
|
;;
|
|
dump|reachable)
|
|
COMPREPLY=( $(compgen -W "reachable nodes edges subnets connections graph" -- ${cur}) )
|
|
return 0
|
|
;;
|
|
esac
|
|
if [[ -z ${cur} ]] ; then
|
|
COMPREPLY=( $(compgen -W "${opts} ${commands}" -- ${cur}) )
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
_tincd() {
|
|
_tinc d;
|
|
}
|
|
|
|
_tincctl() {
|
|
_tinc ctl;
|
|
}
|
|
|
|
complete -F _tincd tincd
|
|
complete -F _tincctl tinc
|