[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl/xl: drop support for netchannel2
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1302276072 -3600 # Node ID 8e9f52ea8866f183b7f0bf2f437646d71e9d04c8 # Parent 3ca61c5a885468627593fbfeab7b1b6e181c79bd libxl/xl: drop support for netchannel2 netchannel2 was never widely deployed and no supported kernel includes either the front- or back-ends. The last known kernel with this support was the xen.git 2.6.31 branch which has been unsupported for ages. xl will warn the user if it spots a "vif2" configration item but otherwise support is completely removed. Work is ongoing to add the interesting features of netchannel2 as protocol extensions to netchannel1. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl.c Fri Apr 08 16:21:12 2011 +0100 @@ -1379,227 +1379,6 @@ } /******************************************************************************/ -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); diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl.h --- a/tools/libxl/libxl.h Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl.h Fri Apr 08 16:21:12 2011 +0100 @@ -262,11 +262,10 @@ libxl_domain_build_info b_info; libxl_device_model_info dm_info; - int num_disks, num_vifs, num_vif2s, num_pcidevs, num_vfbs, num_vkbs; + int num_disks, num_vifs, num_pcidevs, num_vfbs, num_vkbs; libxl_device_disk *disks; libxl_device_nic *vifs; - libxl_device_net2 *vif2s; libxl_device_pci *pcidevs; libxl_device_vfb *vfbs; libxl_device_vkb *vkbs; @@ -535,14 +534,6 @@ int auth); int libxl_tmem_freeable(libxl_ctx *ctx); -void libxl_device_net2_init(libxl_device_net2 *net2, int dev_num); -int libxl_device_net2_add(libxl_ctx *ctx, uint32_t domid, - libxl_device_net2 *net2); -libxl_net2info *libxl_device_net2_list(libxl_ctx *ctx, uint32_t domid, - unsigned int *nb); -int libxl_device_net2_del(libxl_ctx *ctx, libxl_device_net2 *net2, - int wait); - int libxl_get_freecpus(libxl_ctx *ctx, libxl_cpumap *cpumap); int libxl_create_cpupool(libxl_ctx *ctx, const char *name, int schedid, libxl_cpumap cpumap, libxl_uuid *uuid, diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl.idl --- a/tools/libxl/libxl.idl Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl.idl Fri Apr 08 16:21:12 2011 +0100 @@ -228,21 +228,6 @@ ("nictype", libxl_nic_type), ]) -libxl_device_net2 = Struct("device_net2", [ - ("devid", integer), - ("front_mac", libxl_mac), - ("back_mac", libxl_mac), - ("backend_domid", uint32), - ("domid", domid), - ("trusted", BitField(uint32, 1)), - ("back_trusted", BitField(uint32, 1)), - ("filter_mac", BitField(uint32, 1)), - ("front_filter_mac", BitField(uint32, 1)), - ("pdev", uint32), - ("max_bypasses", uint32), - ("bridge", string), - ]) - libxl_device_pci = Struct("device_pci", [ ("func", uint8), ("dev", uint8), @@ -316,16 +301,3 @@ ("weight", integer), ("cap", integer), ], destructor_fn=None) - -libxl_net2info = Struct("net2info", [ - ("backend", string), - ("backend_id", uint32), - ("frontend", string), - ("frontend_id", uint32), - ("devid", integer), - ("state", integer), - ("mac", libxl_mac), - ("trusted", integer), - ("back_mac", libxl_mac), - ("filter_mac", integer), - ]) diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl_create.c --- a/tools/libxl/libxl_create.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl_create.c Fri Apr 08 16:21:12 2011 +0100 @@ -43,10 +43,6 @@ libxl_device_nic_destroy(&d_config->vifs[i]); free(d_config->vifs); - for (i=0; i<d_config->num_vif2s; i++) - libxl_device_net2_destroy(&d_config->vif2s[i]); - free(d_config->vif2s); - for (i=0; i<d_config->num_pcidevs; i++) libxl_device_pci_destroy(&d_config->pcidevs[i]); free(d_config->pcidevs); @@ -464,17 +460,6 @@ goto error_out; } } - if (!d_config->c_info.hvm) { - for (i = 0; i < d_config->num_vif2s; i++) { - d_config->vif2s[i].domid = domid; - ret = libxl_device_net2_add(ctx, domid, &d_config->vif2s[i]); - if (ret) { - fprintf(stderr, "cannot add net2 %d to domain: %d\n", i, ret); - ret = ERROR_FAIL; - goto error_out; - } - } - } if (d_config->c_info.hvm) { libxl_device_console console; diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl_device.c --- a/tools/libxl/libxl_device.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl_device.c Fri Apr 08 16:21:12 2011 +0100 @@ -30,7 +30,6 @@ static const char *string_of_kinds[] = { [DEVICE_VIF] = "vif", - [DEVICE_VIF2] = "vif2", [DEVICE_VBD] = "vbd", [DEVICE_TAP] = "tap", [DEVICE_QDISK] = "qdisk", diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl_internal.h --- a/tools/libxl/libxl_internal.h Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl_internal.h Fri Apr 08 16:21:12 2011 +0100 @@ -96,7 +96,6 @@ typedef enum { DEVICE_VIF = 1, - DEVICE_VIF2, DEVICE_VBD, DEVICE_TAP, DEVICE_QDISK, diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl_utils.c --- a/tools/libxl/libxl_utils.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl_utils.c Fri Apr 08 16:21:12 2011 +0100 @@ -570,75 +570,6 @@ return rc; } -int libxl_devid_to_device_net2(libxl_ctx *ctx, uint32_t domid, - const char *devid, libxl_device_net2 *net2) -{ - libxl__gc gc = LIBXL_INIT_GC(ctx); - char *tok, *endptr, *val; - char *dompath, *net2path, *be_path; - unsigned int devid_n, i; - int rc = ERROR_INVAL; - - devid_n = strtoul(devid, &endptr, 10); - if (devid == endptr) { - goto out; - } - rc = ERROR_FAIL; - dompath = libxl__xs_get_dompath(&gc, domid); - net2path = libxl__sprintf(&gc, "%s/device/vif2/%s", dompath, devid); - if (!net2path) { - goto out; - } - memset(net2, 0, sizeof (libxl_device_net2)); - be_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend", net2path)); - - net2->devid = devid_n; - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mac", net2path)); - for (i = 0, tok = strtok(val, ":"); tok && (i < 6); - ++i, tok = strtok(NULL, ":")) { - net2->front_mac[i] = strtoul(tok, NULL, 16); - } - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/remote-mac", net2path)); - for (i = 0, tok = strtok(val, ":"); tok && (i < 6); - ++i, tok = strtok(NULL, ":")) { - net2->back_mac[i] = strtoul(tok, NULL, 16); - } - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend-id", net2path)); - net2->backend_domid = strtoul(val, NULL, 10); - - net2->domid = domid; - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/remote-trusted", be_path)); - net2->trusted = strtoul(val, NULL, 10); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/local-trusted", be_path)); - net2->back_trusted = strtoul(val, NULL, 10); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/filter-mac", be_path)); - net2->filter_mac = strtoul(val, NULL, 10); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/filter-mac", net2path)); - net2->front_filter_mac = strtoul(val, NULL, 10); - val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/max-bypasses", be_path)); - net2->max_bypasses = strtoul(val, NULL, 10); - rc = 0; - -out: - libxl__free_all(&gc); - return rc; -} - -int libxl_strtomac(const char *mac_s, uint8_t *mac) -{ - const char *end = mac_s + 17; - char val, *endptr; - - for (; mac_s < end; mac_s += 3, ++mac) { - val = strtoul(mac_s, &endptr, 16); - if (endptr != (mac_s + 2)) { - return ERROR_INVAL; - } - *mac = val; - } - return 0; -} - #define QEMU_VERSION_STR "QEMU emulator version " diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/libxl_utils.h --- a/tools/libxl/libxl_utils.h Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/libxl_utils.h Fri Apr 08 16:21:12 2011 +0100 @@ -66,11 +66,6 @@ int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid, const char *devid, libxl_device_disk *disk); -int libxl_strtomac(const char *mac_s, uint8_t *mac); - -int libxl_devid_to_device_net2(libxl_ctx *ctx, uint32_t domid, - const char *devid, libxl_device_net2 *net2); - /* check the version of qemu * return 1 if is the new one * return 0 if is the old one diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/xl_cmdimpl.c Fri Apr 08 16:21:12 2011 +0100 @@ -620,7 +620,7 @@ const char *buf; long l; XLU_Config *config; - XLU_ConfigList *vbds, *nics, *pcis, *cvfbs, *net2s, *cpuids; + XLU_ConfigList *vbds, *nics, *pcis, *cvfbs, *cpuids; int pci_power_mgmt = 0; int pci_msitranslate = 1; int e; @@ -895,53 +895,8 @@ } } - if (!xlu_cfg_get_list(config, "vif2", &net2s, 0, 0)) { - d_config->num_vif2s = 0; - d_config->vif2s = NULL; - while ((buf = xlu_cfg_get_listitem(net2s, d_config->num_vif2s))) { - libxl_device_net2 *net2; - char *buf2 = strdup(buf); - char *p; - - d_config->vif2s = realloc(d_config->vif2s, sizeof (libxl_device_net2) * (d_config->num_vif2s + 1)); - net2 = d_config->vif2s + d_config->num_vif2s; - - libxl_device_net2_init(net2, d_config->num_vif2s); - - for (p = strtok(buf2, ","); p; p = strtok(NULL, ",")) { - char* val; - while (isblank(*p)) - p++; - val = strchr(p, '='); - if (val == NULL) - continue; - *val++ = 0; - if (!strcmp("front_mac", p)) { - libxl_strtomac(val, net2->front_mac); - } else if (!strcmp("back_mac", p)) { - libxl_strtomac(val, net2->back_mac); - } else if (!strcmp("backend", p)) { - domain_qualifier_to_domid(val, &net2->backend_domid, 0); - } else if (!strcmp("trusted", p)) { - net2->trusted = (*val == '1'); - } else if (!strcmp("back_trusted", p)) { - net2->back_trusted = (*val == '1'); - } else if (!strcmp("bridge", p)) { - free(net2->bridge); - net2->bridge = strdup(val); - } else if (!strcmp("filter_mac", p)) { - net2->filter_mac = (*val == '1'); - } else if (!strcmp("front_filter_mac", p)) { - net2->front_filter_mac = (*val == '1'); - } else if (!strcmp("pdev", p)) { - net2->pdev = strtoul(val, NULL, 10); - } else if (!strcmp("max_bypasses", p)) { - net2->max_bypasses = strtoul(val, NULL, 10); - } - } - free(buf2); - d_config->num_vif2s++; - } + if (!xlu_cfg_get_list(config, "vif2", NULL, 0, 0)) { + fprintf(stderr, "WARNING: vif2: netchannel2 is deprecated and not supported by xl\n"); } if (!xlu_cfg_get_list (config, "vfb", &cvfbs, 0, 0)) { @@ -4569,183 +4524,6 @@ return 0; } -int main_network2attach(int argc, char **argv) -{ - int opt; - const char *tok; - char *endptr; - const char *back_dom = NULL; - uint32_t domid, back_domid; - unsigned int val, i; - libxl_device_net2 net2; - - while ((opt = getopt(argc, argv, "h")) != -1) { - switch (opt) { - case 'h': - help("network2-attach"); - return 0; - default: - fprintf(stderr, "option `%c' not supported.\n", optopt); - break; - } - } - if ((argc-optind < 1) || (argc-optind > 10)) { - help("network2-attach"); - return 0; - } - - if (domain_qualifier_to_domid(argv[optind], &domid, 0) < 0) { - fprintf(stderr, "%s is an invalid domain identifier\n", argv[optind]); - return 1; - } - libxl_device_net2_init(&net2, -1); - for (argv += optind+1, argc -= optind+1; argc > 0; --argc, ++argv) { - if (!strncmp("front_mac=", *argv, 10)) { - tok = strtok((*argv) + 10, ":"); - for (i = 0; tok && i < 6; tok = strtok(NULL, ":"), ++i) { - val = strtoul(tok, &endptr, 16); - if ((tok == endptr) || (val > 255)) { - fprintf(stderr, "Invalid parameter `front_mac'.\n"); - return 1; - } - net2.front_mac[i] = val; - } - } else if (!strncmp("back_mac=", *argv, 9)) { - tok = strtok((*argv) + 10, ":"); - for (i = 0; tok && i < 6; tok = strtok(NULL, ":"), ++i) { - val = strtoul(tok, &endptr, 16); - if ((tok == endptr) || (val > 255)) { - fprintf(stderr, "Invalid parameter back_mac=%s.\n", *argv + 9); - return 1; - } - net2.back_mac[i] = val; - } - } else if (!strncmp("backend=", *argv, 8)) { - back_dom = *argv; - } else if (!strncmp("trusted=", *argv, 8)) { - net2.trusted = (*((*argv) + 8) == '1'); - } else if (!strncmp("back_trusted=", *argv, 13)) { - net2.back_trusted = (*((*argv) + 13) == '1'); - } else if (!strncmp("bridge=", *argv, 7)) { - net2.bridge = *argv + 13; - } else if (!strncmp("filter_mac=", *argv, 11)) { - net2.filter_mac = (*((*argv) + 11) == '1'); - } else if (!strncmp("front_filter_mac=", *argv, 17)) { - net2.front_filter_mac = (*((*argv) + 17) == '1'); - } else if (!strncmp("pdev=", *argv, 5)) { - val = strtoul(*argv + 5, &endptr, 10); - if (endptr == (*argv + 5)) { - fprintf(stderr, "Invalid parameter pdev=%s.\n", *argv + 5); - return 1; - } - net2.pdev = val; - } else if (!strncmp("max_bypasses=", *argv, 13)) { - val = strtoul(*argv + 13, &endptr, 10); - if (endptr == (*argv + 13)) { - fprintf(stderr, "Invalid parameter max_bypasses=%s.\n", *argv + 13); - return 1; - } - net2.max_bypasses = val; - } else { - fprintf(stderr, "unrecognized argument `%s'\n", *argv); - return 1; - } - } - - if (back_dom) { - if (domain_qualifier_to_domid(back_dom, &back_domid, 0) < 0) { - fprintf(stderr, "%s is an invalid domain identifier\n", back_dom); - return 1; - } - } - net2.domid = domid; - net2.backend_domid = back_domid; - if (libxl_device_net2_add(ctx, domid, &net2)) { - fprintf(stderr, "libxl_device_net2_add failed.\n"); - } - return 0; -} - -int main_network2list(int argc, char **argv) -{ - int opt; - unsigned int nb; - libxl_net2info *net2s; - - while ((opt = getopt(argc, argv, "h")) != -1) { - switch (opt) { - case 'h': - help("network2-list"); - return 0; - default: - fprintf(stderr, "option `%c' not supported.\n", optopt); - break; - } - } - if (argc - optind < 1) { - help("network2-list"); - return 0; - } - - printf("%-3s %-2s %-5s %-17s %-17s %-7s %-6s %-30s\n", - "Idx", "BE", "state", "Mac Addr.", "Remote Mac Addr.", - "trusted", "filter", "backend"); - for (argv += optind, argc -=optind; argc > 0; --argc, ++argv) { - if (domain_qualifier_to_domid(*argv, &domid, 0) < 0) { - fprintf(stderr, "%s is an invalid domain identifier\n", *argv); - continue; - } - if ((net2s = libxl_device_net2_list(ctx, domid, &nb))) { - for (; nb > 0; --nb, ++net2s) { - printf("%3d %2d %5d ", net2s->devid, net2s->backend_id, net2s->state); - printf("%02x:%02x:%02x:%02x:%02x:%02x ", - net2s->mac[0], net2s->mac[1], net2s->mac[2], - net2s->mac[3], net2s->mac[4], net2s->mac[5]); - printf("%02x:%02x:%02x:%02x:%02x:%02x ", - net2s->back_mac[0], net2s->back_mac[1], net2s->back_mac[2], - net2s->back_mac[3], net2s->back_mac[4], net2s->back_mac[5]); - printf("%-7d %-6d %-30s\n", net2s->trusted, net2s->filter_mac, net2s->backend); - } - } - } - return 0; -} - -int main_network2detach(int argc, char **argv) -{ - int opt; - libxl_device_net2 net2; - - while ((opt = getopt(argc, argv, "h")) != -1) { - switch (opt) { - case 'h': - help("network2-detach"); - return 0; - default: - fprintf(stderr, "option `%c' not supported.\n", optopt); - break; - } - } - if (argc-optind != 2) { - help("network2-detach"); - return 0; - } - - if (domain_qualifier_to_domid(argv[optind], &domid, 0) < 0) { - fprintf(stderr, "%s is an invalid domain identifier\n", argv[optind]); - return 1; - } - if (libxl_devid_to_device_net2(ctx, domid, argv[optind+1], &net2)) { - fprintf(stderr, "Error: Device %s not connected.\n", argv[optind+1]); - return 1; - } - if (libxl_device_net2_del(ctx, &net2, 1)) { - fprintf(stderr, "libxl_device_net2_del failed.\n"); - return 1; - } - return 0; -} - static char *uptime_to_string(unsigned long time, int short_mode) { int sec, min, hour, day; diff -r 3ca61c5a8854 -r 8e9f52ea8866 tools/libxl/xl_cmdtable.c --- a/tools/libxl/xl_cmdtable.c Fri Apr 08 16:17:18 2011 +0100 +++ b/tools/libxl/xl_cmdtable.c Fri Apr 08 16:21:12 2011 +0100 @@ -320,24 +320,6 @@ "Get information about how much freeable memory (MB) is in-use by tmem", "", }, - { "network2-attach", - &main_network2attach, - "Create a new version 2 virtual network device", - "<Domain> [front_mac=<mac>] [back_mac=<mac>] [backend=<BackDomain>]" - " [trusted=<0|1>] [back_trusted=<0|1>] [bridge=<bridge>]" - " [filter_mac=<0|1>] [front_filter_mac=<0|1>] [pdev=<PDEV>]" - " [max_bypasses=n]", - }, - { "network2-list", - &main_network2list, - "list version 2 virtual network interfaces for a domain", - "<Domain(s)>", - }, - { "network2-detach", - &main_network2detach, - "destroy a domain's version 2 virtual network device", - "<Domain> <DevId>", - }, { "cpupool-create", &main_cpupoolcreate, "Create a CPU pool based an ConfigFile", _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |