From 1d35a8527e5422967514dd1d47350ff2ede55903 Mon Sep 17 00:00:00 2001 From: Andrew Hewus Fresh Date: Sat, 30 Oct 2021 12:10:06 -0700 Subject: [PATCH] Support for OpenBSD's resolvd via route messages This adds support for managing resolv.conf via resolvd(8), by sending nameserver messages with route(8) to add and remove nameservers. https://man.openbsd.org/resolvd.8 https://man.openbsd.org/route.8#nameserver --- vpnc-script | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/vpnc-script b/vpnc-script index 237062e..0955008 100755 --- a/vpnc-script +++ b/vpnc-script @@ -192,6 +192,10 @@ elif [ -x /sbin/modify_resolvconf ]; then elif [ -x /usr/sbin/unbound-control ] && /usr/sbin/unbound-control status > /dev/null 2>&1; then MODIFYRESOLVCONF=modify_resolvconf_unbound RESTORERESOLVCONF=restore_resolvconf_unbound +elif [ -x /usr/sbin/rcctl ] && /usr/sbin/rcctl check resolvd >/dev/null; then + # OpenBSD's resolvd by sending route messages + MODIFYRESOLVCONF=modify_resolvconf_resolvd + RESTORERESOLVCONF=restore_resolvconf_resolvd else # Generic for any OS MODIFYRESOLVCONF=modify_resolvconf_generic RESTORERESOLVCONF=restore_resolvconf_generic @@ -899,6 +903,16 @@ restore_resolvconf_unbound() { fi } +# === resolv.conf handling via resolvd ========= + +modify_resolvconf_resolvd() { + /sbin/route nameserver $TUNDEV $INTERNAL_IP4_DNS $INTERNAL_IP6_DNS +} + +restore_resolvconf_resolvd() { + /sbin/route nameserver $TUNDEV +} + # ========= Toplevel state handling ======================================= do_pre_init() { -- 2.50.1