/* * V3 checkpoint send (live-migration) utility */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "v3_ctrl.h" #define MAX_STORE_LEN 128 #define MAX_URL_LEN 256 struct v3_chkpt_info chkpt; int main(int argc, char* argv[]) { int vm_fd; char * vm_dev = NULL; if (argc < 4) { printf("Usage: ./v3_receive \n"); return -1; } vm_dev = argv[1]; if (strlen(argv[2]) >= MAX_STORE_LEN) { printf("ERROR: Checkpoint store name longer than maximum size (%d)\n", MAX_STORE_LEN); return -1; } strncpy(chkpt.store, argv[2], MAX_STORE_LEN); if (strlen(argv[3]) >= MAX_URL_LEN) { printf("ERROR: Checkpoint URL longer than maximum size (%d)\n", MAX_URL_LEN); return -1; } strncpy(chkpt.url, argv[3], MAX_URL_LEN); vm_fd = open(vm_dev, O_RDONLY); if (vm_fd == -1) { printf("Error opening VM device: %s\n", vm_dev); return -1; } if (ioctl(vm_fd, V3_VM_RECEIVE, &chkpt)<0) { printf("VM reception failed\n"); return -1; } /* Close the file descriptor. */ close(vm_fd); return 0; }