[PATCH] wg-quick: use resolvectl if present to set dns

Nathan Chancellor natechancellor at gmail.com
Sat Aug 4 02:01:12 CEST 2018


On Wed, Aug 01, 2018 at 02:04:25PM +0200, j at mailb.org wrote:
> 
> only use resolvconf is available, fall back to resolvectl if present
> otherwise. don't set dns if both are missing.
> 
> ---
>  src/tools/wg-quick/linux.bash | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> 

> diff --git a/src/tools/wg-quick/linux.bash b/src/tools/wg-quick/linux.bash
> index 3f1976b..f86f0c8 100755
> --- a/src/tools/wg-quick/linux.bash
> +++ b/src/tools/wg-quick/linux.bash
> @@ -151,13 +151,21 @@ resolvconf_iface_prefix() {
>  HAVE_SET_DNS=0
>  set_dns() {
>  	[[ ${#DNS[@]} -gt 0 ]] || return 0
> -	printf 'nameserver %s\n' "${DNS[@]}" | cmd resolvconf -a "$(resolvconf_iface_prefix)$INTERFACE" -m 0 -x
> +	if [ -x /usr/bin/resolvconf ]; then
> +		printf 'nameserver %s\n' "${DNS[@]}" | cmd resolvconf -a "$(resolvconf_iface_prefix)$INTERFACE" -m 0 -x
> +	elif [ -x /usr/bin/resolvectl ]; then
> +		cmd resolvectl dns $INTERFACE "${DNS[@]}"
> +	fi
>  	HAVE_SET_DNS=1
>  }
>  
>  unset_dns() {
>  	[[ ${#DNS[@]} -gt 0 ]] || return 0
> -	cmd resolvconf -d "$(resolvconf_iface_prefix)$INTERFACE"
> +	if [ -x /usr/bin/resolvconf ]; then
> +		cmd resolvconf -d "$(resolvconf_iface_prefix)$INTERFACE"
> +	elif [ -x /usr/bin/resolvectl ]; then
> +		cmd resolvectl revert $INTERFACE
> +	fi
>  }
>  
>  add_route() {
> 

> _______________________________________________
> WireGuard mailing list
> WireGuard at lists.zx2c4.com
> https://lists.zx2c4.com/mailman/listinfo/wireguard

I'd argue a better way to check if a command is available is the command
built-in:

if command -v resolvconf >/dev/null; then
    do stuff
fi

The user may have resolvconf available in PATH but not in that location.

Jason can comment on if this makes sense, I don't use wg-quick on Linux.

Nathan


More information about the WireGuard mailing list