diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
index fa5923f8e..0007b0d7a 100644
--- a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
+++ b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php
@@ -48,9 +48,12 @@ $port = file_exists('/sys/class/net/br0') ? 'BR0' : (file_exists('/sys/class/net
// Docker configuration file - guaranteed to exist
$docker_cfgfile = '/boot/config/docker.cfg';
-if (file_exists($docker_cfgfile) && exec("grep -Pom1 '_{$port}(_[0-9]+)?=' $docker_cfgfile")=='') {
- # interface has changed, update configuration
- exec("sed -ri 's/_(BR0|BOND0|ETH0)(_[0-9]+)?=/_{$port}\\2=/' $docker_cfgfile");
+if (file_exists($docker_cfgfile)) {
+ exec("grep -Pom2 '_SUBNET_|_{$port}(_[0-9]+)?=' $docker_cfgfile",$cfg);
+ if (isset($cfg[0]) && $cfg[0]=='_SUBNET_' && empty($cfg[1])) {
+ # interface has changed, update configuration
+ exec("sed -ri 's/_(BR0|BOND0|ETH0)(_[0-9]+)?=/_{$port}\\2=/' $docker_cfgfile");
+ }
}
$defaults = (array)@parse_ini_file("$docroot/plugins/dynamix.docker.manager/default.cfg");
diff --git a/etc/rc.d/rc.docker b/etc/rc.d/rc.docker
index 3f0a8dfe9..1d987f83c 100755
--- a/etc/rc.d/rc.docker
+++ b/etc/rc.d/rc.docker
@@ -47,7 +47,8 @@ if [[ -f $DOCKER_CFG ]]; then
elif [[ -e $SYSTEM/${NIC/eth/bond} ]]; then
NIC=${NIC/eth/bond}
fi
- if ! grep -qPm1 "_${NIC^^}(_[0-9]+)?=" $DOCKER_CFG; then
+ CFG=($(grep -Pom2 "_SUBNET_|_${NIC^^}(_[0-9]+)?=" $DOCKER_CFG))
+ if [[ ${CFG[0]} == _SUBNET_ && -z ${CFG[1]} ]]; then
# interface has changed, update configuration
X=${NIC//[^0-9]/}
sed -ri "s/_(BR|BOND|ETH)$X(_[0-9]+)?=/_${NIC^^}\2=/; s/(br|bond|eth)$X(\.[0-9]+)? /$NIC\2 /g" $DOCKER_CFG
diff --git a/etc/rc.d/rc.libvirt b/etc/rc.d/rc.libvirt
index c6a3935a7..370c74f7f 100755
--- a/etc/rc.d/rc.libvirt
+++ b/etc/rc.d/rc.libvirt
@@ -180,16 +180,25 @@ libvirtd_start(){
log "$DAEMON... Already started."
return 1
fi
- # convert libvirt 1.3.1 w/ eric's hyperv vendor id patch to how libvirt does it in libvirt 1.3.3+
- sed -ri "s///g" /etc/libvirt/qemu/*.xml 2>/dev/null
- # remove from xml because libvirt + virlogd + virlockd has an issue with locked
- sed -ri "//d" /etc/libvirt/qemu/*.xml 2>/dev/null
- # Remove "" if reverting from later release.
+ for file in /etc/libvirt/qemu/*.xml; do
+ done
. /etc/unraid-version
- [[ $(version $version) -le $(version "6.12") ]] && sed -ri "//d" /etc/libvirt/qemu/*.xml 2>/dev/null
+ [[ $(version $version) -le $(version "6.12") ]] && LEGACY=1 || LEGACY=
# update interface section((s) of VM configuration files
for XML in /etc/libvirt/qemu/*.xml; do
[[ -f "$XML" ]] || continue
+ if grep -qm1 "" "$XML"; then
+ # convert libvirt 1.3.1 w/ eric's hyperv vendor id patch to how libvirt does it in libvirt 1.3.3+
+ sed -ri "s///g" "$XML"
+ fi
+ if grep -qm1 "" "$XML"; then
+ # remove from xml because libvirt + virlogd + virlockd has an issue with locked
+ sed -ri "//d" "$file"
+ fi
+ if [[ -n $LEGACY ]] && grep -qm1 "" "$XML"; then
+ # Remove "" if reverting from later release.
+ sed -ri "//d" "$XML"
+ fi
# get all interface sections
ROW=($(grep -nhP '