MODIFYRESOLVCONF=modify_resolvconf_openwrt
RESTORERESOLVCONF=restore_resolvconf_openwrt
elif [ -x /usr/bin/resolvectl ] && [ ${RESOLVEDENABLED} = 1 ]; then
- # For systemd-resolved (version 229 and above)
+ # For systemd-resolved (version 239 and above)
MODIFYRESOLVCONF=modify_resolved_manager
RESTORERESOLVCONF=restore_resolved_manager
+elif [ -x /usr/bin/busctl ] && [ ${RESOLVEDENABLED} = 1 ]; then
+ # For systemd-resolved (version 229 and above)
+ MODIFYRESOLVCONF=modify_resolved_manager_old
+ RESTORERESOLVCONF=restore_resolved_manager_old
elif [ -x /sbin/resolvconf ]; then
# Optional tool on Debian, Ubuntu, Gentoo and FreeBSD
MODIFYRESOLVCONF=modify_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
+ 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}
+}
+
resolvectl_set_nameservers() {
local if_index addresses
if_index=$1
/usr/bin/resolvectl dns $if_index $addresses
}
+busctl_set_search() {
+ local if_index domains args domain
+ if_index=$1
+ shift
+ domains="$@"
+ args="$if_index $#"
+ for domain in ${domains}; do
+ args="$args ${domain} false"
+ done
+ busctl_call SetLinkDomains 'ia(sb)' ${args}
+}
+
resolvectl_set_search() {
local if_index domains
if_index=$1
fi
}
+modify_resolved_manager_old() {
+ local if_index
+ if_index=$(get_if_index $TUNDEV)
+ busctl_set_nameservers $if_index $INTERNAL_IP4_DNS
+ if [ -n "$CISCO_DEF_DOMAIN" ]; then
+ busctl_set_search $if_index $CISCO_DEF_DOMAIN
+ fi
+}
+
restore_resolved_manager() {
local if_index
if_index=$(get_if_index $TUNDEV)
/usr/bin/resolvectl revert $if_index
}
+restore_resolved_manager_old() {
+ local if_index
+ if_index=$(get_if_index $TUNDEV)
+ busctl_call RevertLink 'i' $if_index
+}
+
# === resolv.conf handling via unbound =========
modify_resolvconf_unbound() {