From: Heiko Hund Date: Mon, 18 Aug 2025 16:46:08 +0000 (+0200) Subject: dns: fix systemd dns-updown script X-Git-Tag: v2.7_beta1~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=72a0e6f94f16a6dcfe2b445758d42dedaba11b92;p=thirdparty%2Fopenvpn.git dns: fix systemd dns-updown script In the resolvconf part of the script there was one instance of a dynamic variable using _* left. The _* ones do not work as the regular ones, but only when you directly place them within ${!}, not indirectly using a variable. Convert the code to use a loop and a check, like in all the other places in the script. Change-Id: Id800cad0e92e0abc0d96079fdb5a9d57578e1446 Signed-off-by: Heiko Hund Acked-by: Frank Lichtenheld Message-Id: <20250818164608.39836-1-frank@lichtenheld.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg32621.html Signed-off-by: Gert Doering --- diff --git a/distro/dns-scripts/systemd-dns-updown.sh b/distro/dns-scripts/systemd-dns-updown.sh index 9006e2857..ed3947a0c 100644 --- a/distro/dns-scripts/systemd-dns-updown.sh +++ b/distro/dns-scripts/systemd-dns-updown.sh @@ -189,11 +189,13 @@ function do_resolvconf { domains+="${!domain_var} " done { + local i=1 local maxns=3 - local server_var=dns_server_${n}_address_* - for addr_var in ${!server_var}; do - [ $((maxns--)) -gt 0 ] || break + while [ "${i}" -le "${maxns}" ]; do + local addr_var=dns_server_${n}_address_${i} + [ -n "${!addr_var}" ] || break echo "nameserver ${!addr_var}" + i=$((i+1)) done [ -z "$domains" ] || echo "search $domains" } | /sbin/resolvconf -a "$dev"