From: Florian Domain Date: Mon, 10 Aug 2020 12:13:26 +0000 (+0200) Subject: Use resolvectl for systemd-resolved X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b28718bc8dbb381e54302241afdda29dd9772751;p=users%2Fdwmw2%2Fvpnc-scripts.git Use resolvectl for systemd-resolved - resolvectl is embedded in systemd-resolved and is more simpler to use than calling directly busctl as we don't have to format IPs or specify which address family it belongs. - fix IPv6 nameserver, address family was previously hardcoded to IPv4 so the call to the busctl was failing. --- diff --git a/vpnc-script b/vpnc-script index 80915e8..7b5b9be 100755 --- a/vpnc-script +++ b/vpnc-script @@ -129,7 +129,7 @@ if [ -r /etc/openwrt_release ] && [ -n "$OPENWRT_INTERFACE" ]; then include /lib/network MODIFYRESOLVCONF=modify_resolvconf_openwrt RESTORERESOLVCONF=restore_resolvconf_openwrt -elif [ -x /usr/bin/busctl ] && [ ${RESOLVEDENABLED} = 1 ]; then +elif [ -x /usr/bin/resolvectl ] && [ ${RESOLVEDENABLED} = 1 ]; then # For systemd-resolved (version 229 and above) MODIFYRESOLVCONF=modify_resolved_manager RESTORERESOLVCONF=restore_resolved_manager @@ -698,58 +698,41 @@ restore_resolvconf_manager() { /sbin/resolvconf -d $TUNDEV } -AF_INET=2 - get_if_index() { local link link="$(ip link show dev "$1")" || return $? echo ${link} | awk -F: '{print $1}' } -busctl_call() { - local dest node - dest=org.freedesktop.resolve1 - node=/org/freedesktop/resolve1 - busctl call "$dest" "${node}" "${dest}.Manager" "$@" -} - -busctl_set_nameservers() { - local if_index addresses args addr +resolvectl_set_nameservers() { + local if_index addresses if_index=$1 shift addresses="$@" - args="$if_index $#" - for addr in ${addresses}; do - args="$args ${AF_INET} 4 $(echo $addr | sed 's/[.]/ /g')" - done - busctl_call SetLinkDNS 'ia(iay)' ${args} + /usr/bin/resolvectl dns $if_index $addresses } -busctl_set_search() { - local if_index domains args domain +resolvectl_set_search() { + local if_index domains if_index=$1 shift domains="$@" - args="$if_index $#" - for domain in ${domains}; do - args="$args ${domain} false" - done - busctl_call SetLinkDomains 'ia(sb)' ${args} + /usr/bin/resolvectl domain $if_index $domains } modify_resolved_manager() { local if_index if_index=$(get_if_index $TUNDEV) - busctl_set_nameservers $if_index $INTERNAL_IP4_DNS + resolvectl_set_nameservers $if_index $INTERNAL_IP4_DNS if [ -n "$CISCO_DEF_DOMAIN" ]; then - busctl_set_search $if_index $CISCO_DEF_DOMAIN + resolvectl_set_search $if_index $CISCO_DEF_DOMAIN fi } restore_resolved_manager() { local if_index if_index=$(get_if_index $TUNDEV) - busctl_call RevertLink 'i' $if_index + /usr/bin/resolvectl revert $if_index } # === resolv.conf handling via unbound =========