Exemple #1
0
unsigned long
vmi_get_vmid(
    vmi_instance_t vmi)
{
    char *name = vmi_get_name(vmi);
    unsigned long tmp_id = driver_get_id_from_name(vmi, name);

    free(name);
    return tmp_id;
}
Exemple #2
0
uint64_t
vmi_get_vmid(
    vmi_instance_t vmi)
{
    uint64_t domid = VMI_INVALID_DOMID;
    if(VMI_INVALID_DOMID == (domid = driver_get_id(vmi))) {
        char *name = vmi_get_name(vmi);
        domid = driver_get_id_from_name(vmi, name);
        free(name);
    }

    return domid;
}
Exemple #3
0
static status_t
set_id_and_name(
    vmi_instance_t vmi,
    vmi_mode_t mode,
    uint64_t id,
    const char *name)
{

    if (!name && id == VMI_INVALID_DOMID) {
        errprint("Specifying either id or name.\n");
        return VMI_FAILURE;
    }

    if (name && id != VMI_INVALID_DOMID) {
        errprint("Specifying both id and name is undefined.\n");
        return VMI_FAILURE;
    }

    if (VMI_FILE == vmi->mode) {
        if (name) {
            set_image_type_for_file(vmi, name);
            driver_set_name(vmi, name);
            goto done;
        }

        errprint("Must specify name for file mode.\n");
        return VMI_FAILURE;
    }

    /* resolve and set id from name */
    if (name) {
        if (VMI_INVALID_DOMID != (id = driver_get_id_from_name(vmi, name)) ) {
            dbprint(VMI_DEBUG_CORE, "--got id from name (%s --> %"PRIu64")\n", name, id);
            driver_set_id(vmi, id);
            vmi->image_type = strndup(name, 100);
            driver_set_name(vmi, name);
            goto done;
        }

        errprint("Failed to get domain id from name.\n");
        return VMI_FAILURE;
    }

    /* resolve and set name from id */
    if (VMI_FAILURE == driver_check_id(vmi,id)) {
        errprint("Invalid id.\n");
        return VMI_FAILURE;
    }

    driver_set_id(vmi, id);

    char *tmp_name = NULL;
    if (VMI_SUCCESS == driver_get_name_from_id(vmi, id, &tmp_name)) {
        dbprint(VMI_DEBUG_CORE, "--got name from id (%"PRIu64" --> %s)\n", id, tmp_name);
        vmi->image_type = strndup(tmp_name, 100);
        driver_set_name(vmi, tmp_name);
        free(tmp_name);
        goto done;
    }

    dbprint(VMI_DEBUG_CORE, "--failed to get domain name from id!\n");

#if !defined(HAVE_XS_H) && !defined(HAVE_XENSTORE_H)
    // Only under Xen this is OK without Xenstore
    if (vmi->mode == VMI_XEN) {
        // create placeholder for image_type
        char *idstring = g_malloc0(snprintf(NULL, 0, "domid-%"PRIu64, id) + 1);
        sprintf(idstring, "domid-%"PRIu64, id);
        vmi->image_type = idstring;
        goto done;
    }
#endif

    return VMI_FAILURE;

done:
    dbprint(VMI_DEBUG_CORE, "**set image_type = %s\n", vmi->image_type);
    return VMI_SUCCESS;
}
Exemple #4
0
static status_t
set_id_and_name(
    vmi_instance_t vmi,
    vmi_mode_t mode,
    unsigned long id,
    char *name)
{
    if (VMI_FILE == vmi->mode) {
        if (name) {
            set_image_type_for_file(vmi, name);
            driver_set_name(vmi, name);
        }
        else {
            errprint("Must specify name for file mode.\n");
            return VMI_FAILURE;
        }
    }
    else {
        /* resolve and set id and name */
        if (VMI_INVALID_DOMID == id) {
            if (name) {
                if (VMI_INVALID_DOMID != (id = driver_get_id_from_name(vmi, name)) ) {
                    dbprint("--got id from name (%s --> %lu)\n", name, id);
                    driver_set_id(vmi, id);
                } else {
                    errprint("Failed to get domain id from name.\n");
                    return VMI_FAILURE;
                }
            }
            else {
                errprint("Must specifiy either id or name.\n");
                return VMI_FAILURE;
            }
        }
        else {
            if (name) {
                errprint("Specifying both id and name is undefined.\n");
                return VMI_FAILURE;
            }

            if(VMI_FAILURE == driver_check_id(vmi,id)) {
                errprint("Invalid id.\n");
                return VMI_FAILURE;
            }

            driver_set_id(vmi, id);

            if (VMI_FAILURE != driver_get_name_from_id(vmi, id, &name)) {
                dbprint("--got name from id (%lu --> %s)\n", id, name);
            } else {
                dbprint("--failed to get domain name from id!\n");

                // Only under Xen this is OK
                if(vmi->mode != VMI_XEN) {
                    return VMI_FAILURE;
                }
            }
        }

       if(name != NULL) {
               vmi->image_type = strndup(name, 100);
               driver_set_name(vmi, name);
       } else {
               // create placeholder for image_type
               char *idstring = malloc(snprintf(NULL, 0, "domid-%lu", id) + 1);
               sprintf(idstring, "domid-%lu", id);
               vmi->image_type = idstring;
       }

    }
    dbprint("**set image_type = %s\n", vmi->image_type);
    return VMI_SUCCESS;
}