summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2020-02-27 16:45:10 +0100
committerSimon Rettberg2020-02-27 16:45:10 +0100
commit8dc4adaff68077960b30e320d46307d6451adee6 (patch)
treef1d9319555059597315533136b345ab1f171dd86
parentUpdate translations (diff)
downloadslx-admin-8dc4adaff68077960b30e320d46307d6451adee6.tar.gz
slx-admin-8dc4adaff68077960b30e320d46307d6451adee6.tar.xz
slx-admin-8dc4adaff68077960b30e320d46307d6451adee6.zip
[minilinux] dnbd3-check: Handle RID, support 32bit php
-rw-r--r--modules-available/minilinux/inc/minilinux.inc.php14
1 files changed, 9 insertions, 5 deletions
diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php
index e79884f9..f68a6af1 100644
--- a/modules-available/minilinux/inc/minilinux.inc.php
+++ b/modules-available/minilinux/inc/minilinux.inc.php
@@ -399,13 +399,17 @@ class MiniLinux
continue;
$image = $out[1];
if (preg_match('/\bslx\.stage4\.rid=(\d+)/', $data[$type]['commandLine'], $out)) {
- $rid = $out[1];
+ $rid = (int)$out[1];
}
break;
}
if ($image === false)
return true; // No stage4
- if (file_exists(CONFIG_VMSTORE_DIR . '/' . $image))
+ $mask = $rid;
+ if ($rid === 0) {
+ $mask = '*';
+ }
+ if (glob(CONFIG_VMSTORE_DIR . '/' . $image . '.r' . $mask, GLOB_NOSORT) !== [])
return true; // Already exists locally
// Not found locally -- try to replicate
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
@@ -422,8 +426,8 @@ class MiniLinux
}
// proto-version(16), image name\0, rid(16), flags(8)
$payload = pack('vA*xvC', 3, $image, $rid, 0);
- // magic(16), cmd(16), payload-len(32), offset(64), handle(64)
- $packet = pack('A*vVPP', 'sr', 2, strlen($payload), 0, 1234) . $payload;
+ // magic(16), cmd(16), payload-len(32), offset(64), handle(64) XXX 32Bit compat
+ $packet = pack('A*vVVVVV', 'sr', 2, strlen($payload), 0, 0, 1234, 0) . $payload;
if (!socket_send($sock, $packet, strlen($packet), 0)) {
$errors[] = 'Cannot send request to dnbd3-server';
socket_close($sock);
@@ -442,7 +446,7 @@ class MiniLinux
}
socket_close($sock);
// Try to decode header
- $reply = unpack('A2magic/vcmd/Vsize/Phandle', $reply);
+ $reply = unpack('A2magic/vcmd/Vsize/Vhandlelow/Vhandlehigh', $reply);
if ($reply['magic'] !== 'sr') {
$errors[] = 'Reply has wrong magic';
}