<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>Problem in Migrating domain....</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>
<BR>

<P><FONT SIZE=2>Hi...<BR>
<BR>
This is my program for Domain Migrating using virDomainMigrate() Function....<BR>
<BR>
<BR>
<BR>
#include <stdlib.h><BR>
#include <stdio.h><BR>
#include <libvirt/libvirt.h><BR>
<BR>
static virConnectPtr conn = NULL; /* the hypervisor connection */<BR>
<BR>
static int<BR>
checkDomainState(virDomainPtr dom)<BR>
{<BR>
    virDomainInfo info;        /* the information being fetched */<BR>
    int ret;<BR>
<BR>
    ret = virDomainGetInfo(dom, &info);<BR>
    if (ret < 0)<BR>
    {<BR>
        return(-1);<BR>
    }<BR>
    return(info.state);<BR>
}<BR>
<BR>
<BR>
static void<BR>
migrate(int id)<BR>
{<BR>
 <BR>
   virDomainPtr dom = NULL;   /* the domain being checked */<BR>
   virDomainPtr dom1= NULL;<BR>
    int ret, state;<BR>
<BR>
    /* Find the domain of the given id */<BR>
    dom = virDomainLookupByID(conn, id);<BR>
    if (dom == NULL)<BR>
    {<BR>
        fprintf(stderr, "Failed to find Domain %d\n", id);<BR>
        goto error;<BR>
    }<BR>
<BR>
   state = checkDomainState(dom);<BR>
    if ((state == VIR_DOMAIN_RUNNING))<BR>
        {<BR>
             <BR>
          dom1=virDomainMigrate(dom,conn,VIR_MIGRATE_LIVE,NULL,NULL,0);<BR>
           if(dom1==NULL)<BR>
              {<BR>
                 fprintf(stderr,"Failed to migrate");<BR>
              }<BR>
            else<BR>
              {<BR>
                 fprintf(stderr,"migrate successfully");<BR>
              }<BR>
        }<BR>
error:<BR>
    if (dom != NULL)<BR>
        virDomainFree(dom);<BR>
}<BR>
int main(int argc, char **argv) {<BR>
    int id = 0;<BR>
<BR>
    /* NULL means connect to local Xen hypervisor */<BR>
    conn = virConnectOpen(NULL);<BR>
    if (conn == NULL) {<BR>
        fprintf(stderr, "Failed to connect to hypervisor\n");<BR>
        goto error;<BR>
    }<BR>
<BR>
    if (argc > 1) {<BR>
        id = atoi(argv[1]);<BR>
    }<BR>
    if (id == 0) {<BR>
        int i, j, ids[10];<BR>
        i = virConnectListDomains(conn, &ids[0], 10);<BR>
        if (i < 0) {<BR>
            fprintf(stderr, "Failed to list the domains\n");<BR>
            goto error;<BR>
        }<BR>
        for (j = 0;j < i;j++) {<BR>
            if (ids[j] != 0) {<BR>
                id = ids[j];<BR>
                break;<BR>
            }<BR>
        }<BR>
    }<BR>
    if (id == 0) {<BR>
        fprintf(stderr, "Failed find a running guest domain\n");<BR>
        goto error;<BR>
    }<BR>
   migrate(id);<BR>
<BR>
error:<BR>
    if (conn != NULL)<BR>
        virConnectClose(conn);<BR>
    return(0);<BR>
}<BR>
<BR>
<BR>
When I Compile this by the command<BR>
<BR>
gcc `pkg-config --cflags --libs libvirt` migrate1.c<BR>
<BR>
I got the error...<BR>
<BR>
migrate1.c: In function ‘migrate’:<BR>
migrate1.c:67: warning: assignment makes pointer from integer without a cast<BR>
/tmp/ccmgmkE1.o: In function `migrate':<BR>
migrate1.c:(.text+0xd4): undefined reference to `virDomainMigrate'<BR>
collect2: ld returned 1 exit status<BR>
<BR>
Can you help me...<BR>
<BR>
with regard,<BR>
Mano<BR>
</FONT>
</P>

</BODY>
</HTML>