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 '