summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2023-11-28 12:16:10 +0100
committerSimon Rettberg2023-11-28 12:16:10 +0100
commitda2e79db6c1d72f55b8754ea6c1205cbece74bc9 (patch)
treedb3ac90ae34ed6b829416ba1fd2e353349b004fa
parent[run-virt] Use mapfile for getips (diff)
downloadmltk-da2e79db6c1d72f55b8754ea6c1205cbece74bc9.tar.gz
mltk-da2e79db6c1d72f55b8754ea6c1205cbece74bc9.tar.xz
mltk-da2e79db6c1d72f55b8754ea6c1205cbece74bc9.zip
[run-virt] Prefer DNS config from latest DHCP runs
Prefering SLX_DNS means we use very early DHCP config, which usually contains only one DNS server. Instead, check current resolv.conf first. Closes #3953
-rwxr-xr-xcore/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd b/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd
index 42091584..bed6ac88 100755
--- a/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd
+++ b/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd
@@ -22,10 +22,14 @@ getips () {
getresolvconf() {
awk -vattr="$1" '$1 == attr {for (i=2; i<=NF; i++) printf "%s ",$i}' /etc/resolv.conf
}
-[ -z "${SLX_DNS}" ] && SLX_DNS="$( getresolvconf nameserver )"
[ -z "${SLX_NET_DOMAIN}" ] && SLX_NET_DOMAIN="$( getresolvconf domain )"
[ -z "${SLX_NET_SEARCH}" ] && SLX_NET_SEARCH="$( getresolvconf search )"
-[ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8 8.8.4.4"
+# Do not use helper here and check (loosely) for IPv4
+declare -a dns
+dns=( $( awk '$1 == "nameserver" && $2 ~ "\\..*\\..*\\." {print $2}' /etc/resolv.conf ) )
+[ -z "${dns}" ] && dns=( $SLX_DNS )
+# Fallbacks
+[ -z "${dns}" ] && dns=( "8.8.8.8" "8.8.4.4" )
[ -z "${SLX_NET_DOMAIN}" ] && SLX_NET_DOMAIN="$FALLBACK_DOMAIN"
[ -z "${SLX_NET_SEARCH}" ] && SLX_NET_SEARCH="$FALLBACK_DOMAIN"
# WINS - if not supplied, try to get it from the search base of our ldap config
@@ -47,7 +51,7 @@ done
[ -z "$NTPSRV" ] && NTPSRV="0.0.0.0"
[ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS=$(getips "$SLX_NET_DOMAIN")
[ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS="0.0.0.0"
-sed "s#%DNSSERVER%#${SLX_DNS}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#;s#%WINS%#${SLX_NET_WINS}#;s#%NTPSERVER%#${NTPSRV}#" "${DHCP_NAT_CONF}.template" > "${DHCP_NAT_CONF}.$$"
+sed "s#%DNSSERVER%#${dns[*]}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#;s#%WINS%#${SLX_NET_WINS}#;s#%NTPSERVER%#${NTPSRV}#" "${DHCP_NAT_CONF}.template" > "${DHCP_NAT_CONF}.$$"
# Make sure the primary vm running (we most likely never run more than one at a time anyways) always gets the same ip
echo "static_lease $(echo "$MACADDRPREFIX:$MACADDRSUFFIX" | sed 's/%VMID%/01/') 192.168.101.20" >> "${DHCP_NAT_CONF}.$$"