Hello
I am just curious if the checking of the connection string in qemu_driver.c
from libvirt-0.6.1 in qemudDomainMigratePrepare2 is faulty.
The source is:
[...]
} else {
/* Check the URI starts with "tcp:". We will escape the
* URI when passing it to the qemu monitor, so bad
* characters in hostname part don't matter.
*/
if (!STREQLEN (uri_in, "tcp:", 6)) {
qemudReportError (dconn, NULL, NULL, VIR_ERR_INVALID_ARG,
"%s", _("only tcp URIs are supported for KVM
migrations"));
goto cleanup;
}
[...]
The second compare-string "tcp:" is only 4 characters long, therefore a
check via strncmp must fail i presumed, i isolated this comparison:
#include <stdio.h>
#include <string.h>
#define STREQLEN(a,b,n) (strncmp((a),(b),(n)) == 0)
int main ()
{
char str[][200] = { "tcp://192.168.1.14:4444" ,
"tcp:192.168.1.14:4444" ,
"ssh
://192.168.1.14:4444" , "ssh:192.168.1.14:4444" };
int n;
for (n=0 ; n<4 ; n++)
{
printf("testing %s against \"tcp:\" with result: ", str[n]);
if (!STREQLEN(str[n],"tcp:",6))
{
printf ("ERROR\n");
}
else
{
printf ("OK\n");
}
}
return 0;
}
and as i pressumed this gives me on the commandline:
testing tcp://192.168.1.14:4444 against "tcp:" with result: ERROR
testing tcp:192.168.1.14:4444 against "tcp:" with result: ERROR
testing ssh://192.168.1.14:4444 against "tcp:" with result: ERROR
testing ssh:192.168.1.14:4444 against "tcp:" with result: ERROR
if i change the 6 to 4 it gives
testing tcp://192.168.1.14:4444 against "tcp:" with result: OK
testing tcp:192.168.1.14:4444 against "tcp:" with result: OK
testing ssh://192.168.1.14:4444 against "tcp:" with result: ERROR
testing ssh:192.168.1.14:4444 against "tcp:" with result: ERROR
but now tcp:// also is marked as correct.
Am i missing something here and the checking in qemu_driver.c is correct?
I always get the "only tcp URIs are supported for KVM migrations" if i try
to migrate KVM-domains in virt-manager 0.7.0 and therefore searched for the
root-cause of this problem.
Kind regards, Gerrit Slomma
Mit freundlichen Grüßen, Gerrit Slomma
Team eBetrieb
Deutsche Rentenversicherung Bund
Abt. 11 - Organisation und IT-Services
Fachbereich 1170 - IT-Services und Betrieb
Bereich 1174 - Anwendungsbetrieb
Team 1174-46 - Trustcenter, eBetrieb