diff options
Diffstat (limited to 'tools/libxl/libxl.c')
-rw-r--r-- | tools/libxl/libxl.c | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 7efd68cb6f..1c759c16f6 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1379,227 +1379,6 @@ err: } /******************************************************************************/ -void libxl_device_net2_init(libxl_device_net2 *net2_info, int devnum) -{ - const uint8_t *r; - libxl_uuid uuid; - - libxl_uuid_generate(&uuid); - r = libxl_uuid_bytearray(&uuid); - memset(net2_info, '\0', sizeof(*net2_info)); - - net2_info->devid = devnum; - net2_info->front_mac[0] = 0x00; - net2_info->front_mac[1] = 0x16; - net2_info->front_mac[2] = 0x3e;; - net2_info->front_mac[3] = 0x7f & r[0]; - net2_info->front_mac[4] = r[1]; - net2_info->front_mac[5] = r[2]; - net2_info->back_mac[0] = 0x00; - net2_info->back_mac[1] = 0x16; - net2_info->back_mac[2] = 0x3e; - net2_info->back_mac[3] = 0x7f & r[3]; - net2_info->back_mac[4] = r[4]; - net2_info->back_mac[5] = r[5]; - net2_info->back_trusted = 1; - net2_info->filter_mac = 1; - net2_info->max_bypasses = 5; - net2_info->bridge = strdup("xenbr0"); -} - -int libxl_device_net2_add(libxl_ctx *ctx, uint32_t domid, libxl_device_net2 *net2) -{ - libxl__gc gc = LIBXL_INIT_GC(ctx); - flexarray_t *front, *back; - libxl__device device; - char *dompath, *dom, **l; - unsigned int nb; - int rc; - - front = flexarray_make(16, 1); - if (!front) { - rc = ERROR_NOMEM; - goto err; - } - back = flexarray_make(16, 1); - if (!back) { - rc = ERROR_NOMEM; - goto err_free; - } - - if (!(dompath = libxl__xs_get_dompath(&gc, domid))) { - rc = ERROR_FAIL; - goto err_free; - } - dom = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/name", dompath)); - - if (net2->devid == -1) { - if (!(l = libxl__xs_directory(&gc, XBT_NULL, - libxl__sprintf(&gc, "%s/device/vif2", dompath), &nb))) { - net2->devid = 0; - } else { - net2->devid = strtoul(l[nb - 1], NULL, 10) + 1; - } - } - - device.backend_devid = net2->devid; - device.backend_domid = net2->backend_domid; - device.backend_kind = DEVICE_VIF2; - device.devid = net2->devid; - device.domid = net2->domid; - device.kind = DEVICE_VIF2; - - flexarray_append(back, "domain"); - flexarray_append(back, dom); - flexarray_append(back, "frontend-id"); - flexarray_append(back, libxl__sprintf(&gc, "%d", net2->domid)); - - flexarray_append(back, "local-trusted"); - flexarray_append(back, libxl__sprintf(&gc, "%d", net2->back_trusted)); - flexarray_append(back, "mac"); - flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x", - net2->back_mac[0], net2->back_mac[1], - net2->back_mac[2], net2->back_mac[3], - net2->back_mac[4], net2->back_mac[5])); - - flexarray_append(back, "remote-trusted"); - flexarray_append(back, libxl__sprintf(&gc, "%d", net2->trusted)); - flexarray_append(back, "remote-mac"); - flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x", - net2->front_mac[0], net2->front_mac[1], - net2->front_mac[2], net2->front_mac[3], - net2->front_mac[4], net2->front_mac[5])); - - flexarray_append(back, "max-bypasses"); - flexarray_append(back, libxl__sprintf(&gc, "%d", net2->max_bypasses)); - flexarray_append(back, "filter-mac"); - flexarray_append(back, libxl__sprintf(&gc, "%d", !!(net2->filter_mac))); - flexarray_append(back, "handle"); - flexarray_append(back, libxl__sprintf(&gc, "%d", net2->devid)); - flexarray_append(back, "online"); - flexarray_append(back, "1"); - flexarray_append(back, "state"); - flexarray_append(back, "1"); - - flexarray_append(front, "backend-id"); - flexarray_append(front, libxl__sprintf(&gc, "%d", net2->backend_domid)); - - flexarray_append(front, "local-trusted"); - flexarray_append(front, libxl__sprintf(&gc, "%d", net2->trusted)); - flexarray_append(front, "mac"); - flexarray_append(front, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x", - net2->front_mac[0], net2->front_mac[1], - net2->front_mac[2], net2->front_mac[3], - net2->front_mac[4], net2->front_mac[5])); - - flexarray_append(front, "remote-trusted"); - flexarray_append(front, libxl__sprintf(&gc, "%d", net2->back_trusted)); - flexarray_append(front, "remote-mac"); - flexarray_append(front, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x", - net2->back_mac[0], net2->back_mac[1], - net2->back_mac[2], net2->back_mac[3], - net2->back_mac[4], net2->back_mac[5])); - - flexarray_append(front, "filter-mac"); - flexarray_append(front, libxl__sprintf(&gc, "%d", !!(net2->filter_mac))); - flexarray_append(front, "state"); - flexarray_append(front, "1"); - - libxl__device_generic_add(&gc, &device, - libxl__xs_kvs_of_flexarray(&gc, back, back->count), - libxl__xs_kvs_of_flexarray(&gc, front, front->count)); - - /* FIXME: wait for plug */ - rc = 0; -err_free: - flexarray_free(back); - flexarray_free(front); -err: - libxl__free_all(&gc); - return rc; -} - -libxl_net2info *libxl_device_net2_list(libxl_ctx *ctx, uint32_t domid, unsigned int *nb) -{ - libxl__gc gc = LIBXL_INIT_GC(ctx); - char *dompath, *net2_path_fe; - char **l; - char *val, *tok; - unsigned int nb_net2s, i; - libxl_net2info *res, *net2s; - - dompath = libxl__xs_get_dompath(&gc, domid); - if (!dompath) - goto err; - l = libxl__xs_directory(&gc, XBT_NULL, - libxl__sprintf(&gc, "%s/device/vif2", dompath), &nb_net2s); - if (!l) - goto err; - res = calloc(nb_net2s, sizeof (libxl_net2info)); - if (!res) - goto err; - net2s = res; - for (*nb = nb_net2s; nb_net2s > 0; --nb_net2s, ++l, ++net2s) { - net2_path_fe = libxl__sprintf(&gc, "%s/device/vif2/%s", dompath, *l); - - net2s->backend = libxl__xs_read(&gc, XBT_NULL, - libxl__sprintf(&gc, "%s/backend", net2_path_fe)); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend-id", net2_path_fe)); - net2s->backend_id = val ? strtoul(val, NULL, 10) : -1; - - net2s->devid = strtoul(*l, NULL, 10); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/state", net2_path_fe)); - net2s->state = val ? strtoul(val, NULL, 10) : -1; - - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mac", net2_path_fe)); - for (i = 0, tok = strtok(val, ":"); tok && (i < 6); - ++i, tok = strtok(NULL, ":")) { - net2s->mac[i] = strtoul(tok, NULL, 16); - } - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/remote-trusted", net2_path_fe)); - net2s->trusted = val ? strtoul(val, NULL, 10) : -1; - - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/remote-mac", net2_path_fe)); - for (i = 0, tok = strtok(val, ":"); tok && (i < 6); - ++i, tok = strtok(NULL, ":")) { - net2s->back_mac[i] = strtoul(tok, NULL, 16); - } - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/filter-mac", net2_path_fe)); - net2s->filter_mac = val ? strtoul(val, NULL, 10) : -1; - - net2s->frontend = libxl__xs_read(&gc, XBT_NULL, - libxl__sprintf(&gc, "%s/frontend", net2s->backend)); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/frontend-id", net2s->backend)); - net2s->frontend_id = val ? strtoul(val, NULL, 10) : -1; - } - - libxl__free_all(&gc); - return res; -err: - libxl__free_all(&gc); - return NULL; -} - -int libxl_device_net2_del(libxl_ctx *ctx, libxl_device_net2 *net2, int wait) -{ - libxl__gc gc = LIBXL_INIT_GC(ctx); - libxl__device device; - int rc; - - device.backend_devid = net2->devid; - device.backend_domid = net2->backend_domid; - device.backend_kind = DEVICE_VIF2; - device.devid = net2->devid; - device.domid = net2->domid; - device.kind = DEVICE_VIF2; - - rc = libxl__device_del(&gc, &device, wait); - libxl__free_all(&gc); - return rc; -} - - -/******************************************************************************/ int libxl_device_console_add(libxl_ctx *ctx, uint32_t domid, libxl_device_console *console) { libxl__gc gc = LIBXL_INIT_GC(ctx); |