[libvirt] question about qemudDomainMigratePrepare2 of qemu_driver.c from libvirt-0.6.1

Gerrit.Slomma at drv-bund.de Gerrit.Slomma at drv-bund.de
Tue Mar 31 08:07:31 UTC 2009


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





More information about the libvir-list mailing list