libxl/xl: drop support for netchannel2
authorIan Campbell <ian.campbell@citrix.com>
Fri, 8 Apr 2011 15:21:12 +0000 (16:21 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 8 Apr 2011 15:21:12 +0000 (16:21 +0100)
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@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl.c
tools/libxl/libxl.h
tools/libxl/libxl.idl
tools/libxl/libxl_create.c
tools/libxl/libxl_device.c
tools/libxl/libxl_internal.h
tools/libxl/libxl_utils.c
tools/libxl/libxl_utils.h
tools/libxl/xl_cmdimpl.c
tools/libxl/xl_cmdtable.c

index 7efd68cb6fb59142bc07d476f176585d77fbc767..1c759c16f6f77e88e8a032414b8374c67e3f0f3a 100644 (file)
@@ -1378,227 +1378,6 @@ err:
     return NULL;
 }
 
-/******************************************************************************/
-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)
 {
index 77fd92fac846de25403a67ae3f1407c26fa84e2b..98f5e1fd045181ec93345eb4a9ab185ae7908262 100644 (file)
@@ -262,11 +262,10 @@ typedef struct {
     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 libxl_tmem_shared_auth(libxl_ctx *ctx, uint32_t domid, char* uuid,
                            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,
index 283274c7d0263d914cda5dc388446a8d98e4a39f..25e29cb47855c57e032eeb8b47468f8a1cfc5be3 100644 (file)
@@ -228,21 +228,6 @@ libxl_device_nic = Struct("device_nic", [
     ("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 @@ libxl_sched_credit = Struct("sched_credit", [
     ("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),
-    ])
index 87a57e09008c5782ec4363bee46ba646af502171..5d6978d4caf250a0ac6dc3b2ded494e384117c82 100644 (file)
@@ -43,10 +43,6 @@ void libxl_domain_config_destroy(libxl_domain_config *d_config)
         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 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config,
             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;
 
index 4d460967b1d9664cfba4e063652b8b14b3835f01..3408b9b1425640c1aa7cd25c09108d7e8e725ca8 100644 (file)
@@ -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",
index 023cf8f0325cd7e7dcb5cc2f155141456dc6d14b..539191e3cce08932e3e331995c21bb2e1f2a2130 100644 (file)
@@ -96,7 +96,6 @@ struct libxl__ctx {
 
 typedef enum {
     DEVICE_VIF = 1,
-    DEVICE_VIF2,
     DEVICE_VBD,
     DEVICE_TAP,
     DEVICE_QDISK,
index 37c50f250012a623677551b5335f41978ac0f482..678c9eebd2f302af81fc79ebcab3eb0e767ed3e7 100644 (file)
@@ -570,75 +570,6 @@ out:
     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 "
 
 
index 48bbcdacfea68a81ff5e91d6a03cba29bd1a084d..a1821f3e4f1d3319e92c0ec3948e462c05dc3e1f 100644 (file)
@@ -66,11 +66,6 @@ int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid,
 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
index 9974ca9ad686272200c8d6eddfa4bc9ab50dcc5a..7aa4e1020e5a16d7ee6f0116c70176bfd7382518 100644 (file)
@@ -620,7 +620,7 @@ static void parse_config_data(const char *configfile_filename_report,
     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 @@ skip:
         }
     }
 
-    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 @@ int main_blockdetach(int argc, char **argv)
     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;
index 5083fc6d06c4a6ae2bd255b17f626b897ee8b50f..b14fb377f57b07a713c0173951d0bf96c0023e45 100644 (file)
@@ -320,24 +320,6 @@ struct cmd_spec cmd_table[] = {
       "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",