libxl: Specify no nics to qemu when no emulated nics
authorIan Jackson <Ian.Jackson@eu.citrix.com>
Mon, 28 Jun 2010 16:13:43 +0000 (17:13 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Mon, 28 Jun 2010 16:13:43 +0000 (17:13 +0100)
qemu will default to one emulated NIC if no network configuration is
specified on the command-line.  If there are no emualted NICs (i.e.,
no NICs or all NICs are PV), specify no nics to avoid getting an
emulated NIC by default.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
tools/libxl/libxl.c

index 985e9995fcc1c0cbc414695a9dce28432de612e0..293aaa7f0201e1520468105f9b3837134dc5e47a 100644 (file)
@@ -858,6 +858,8 @@ static char ** libxl_build_device_model_args(struct libxl_ctx *ctx,
         flexarray_set(dm_args, num++, info->serial);
     }
     if (info->type == XENFV) {
+        int ioemu_vifs = 0;
+
         if (info->videoram) {
             flexarray_set(dm_args, num++, "-videoram");
             flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%d", info->videoram));
@@ -901,8 +903,14 @@ static char ** libxl_build_device_model_args(struct libxl_ctx *ctx,
                 flexarray_set(dm_args, num++, "-net");
                 flexarray_set(dm_args, num++, libxl_sprintf(ctx, "tap,vlan=%d,ifname=%s,bridge=%s",
                             vifs[i].devid, vifs[i].ifname, vifs[i].bridge));
+                ioemu_vifs++;
             }
         }
+        /* If we have no emulated nics, tell qemu not to create any */
+        if ( ioemu_vifs == 0 ) {
+            flexarray_set(dm_args, num++, "-net");
+            flexarray_set(dm_args, num++, "none");
+        }
     }
     if (info->saved_state) {
         flexarray_set(dm_args, num++, "-loadvm");