Hi...

This is my program for Domain Migrating using virDomainMigrate() Function....



#include <stdlib.h>
#include <stdio.h>
#include <libvirt/libvirt.h>

static virConnectPtr conn = NULL; /* the hypervisor connection */

static int
checkDomainState(virDomainPtr dom)
{
    virDomainInfo info;        /* the information being fetched */
    int ret;

    ret = virDomainGetInfo(dom, &info);
    if (ret < 0)
    {
        return(-1);
    }
    return(info.state);
}


static void
migrate(int id)
{
 
   virDomainPtr dom = NULL;   /* the domain being checked */
   virDomainPtr dom1= NULL;
    int ret, state;

    /* Find the domain of the given id */
    dom = virDomainLookupByID(conn, id);
    if (dom == NULL)
    {
        fprintf(stderr, "Failed to find Domain %d\n", id);
        goto error;
    }

   state = checkDomainState(dom);
    if ((state == VIR_DOMAIN_RUNNING))
        {
             
          dom1=virDomainMigrate(dom,conn,VIR_MIGRATE_LIVE,NULL,NULL,0);
           if(dom1==NULL)
              {
                 fprintf(stderr,"Failed to migrate");
              }
            else
              {
                 fprintf(stderr,"migrate successfully");
              }
        }
error:
    if (dom != NULL)
        virDomainFree(dom);
}
int main(int argc, char **argv) {
    int id = 0;

    /* NULL means connect to local Xen hypervisor */
    conn = virConnectOpen(NULL);
    if (conn == NULL) {
        fprintf(stderr, "Failed to connect to hypervisor\n");
        goto error;
    }

    if (argc > 1) {
        id = atoi(argv[1]);
    }
    if (id == 0) {
        int i, j, ids[10];
        i = virConnectListDomains(conn, &ids[0], 10);
        if (i < 0) {
            fprintf(stderr, "Failed to list the domains\n");
            goto error;
        }
        for (j = 0;j < i;j++) {
            if (ids[j] != 0) {
                id = ids[j];
                break;
            }
        }
    }
    if (id == 0) {
        fprintf(stderr, "Failed find a running guest domain\n");
        goto error;
    }
   migrate(id);

error:
    if (conn != NULL)
        virConnectClose(conn);
    return(0);
}


When I Compile this by the command

gcc `pkg-config --cflags --libs libvirt` migrate1.c

I got the error...

migrate1.c: In function ‘migrate’:
migrate1.c:67: warning: assignment makes pointer from integer without a cast
/tmp/ccmgmkE1.o: In function `migrate':
migrate1.c:(.text+0xd4): undefined reference to `virDomainMigrate'
collect2: ld returned 1 exit status

Can you help me...

with regard,
Mano