From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v11 09/17] libxl: set nic type of stub to PV instead of copying from the parent Date: Mon, 23 Jul 2012 18:27:37 +0100 Message-ID: <1343064465-17864-10-git-send-email-roger.pau@citrix.com> References: <1343064465-17864-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1343064465-17864-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Ian Campbell , Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Introduce a new function used to copy the array of nics from the parent guest to the stubdomain, and set the type of the nics used to PV unconditianlly, or the call to setdefaults later is going to fail. Cc: Ian Jackson Cc: Ian Campbell Signed-off-by: Roger Pau Monne --- tools/libxl/libxl_dm.c | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 9a2b247..aaabf1b 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -640,6 +640,27 @@ static int libxl__vfb_and_vkb_from_hvm_guest_config(libxl__gc *gc, return 0; } +static int libxl__nics_from_hvm_guest_config(libxl__gc *gc, + const libxl_domain_config *guest_config, + libxl_device_nic *nic) +{ + const libxl_domain_build_info *b_info = &guest_config->b_info; + int i; + + if (b_info->type != LIBXL_DOMAIN_TYPE_HVM) + return ERROR_INVAL; + + for (i = 0; i < guest_config->num_nics; i++) { + libxl_device_nic_init(&nic[i]); + memcpy(&nic[i], &guest_config->nics[i], sizeof(nic[i])); + nic[i].nictype = LIBXL_NIC_TYPE_VIF; + nic[i].backend_domid = 0; + nic[i].devid = 0; + } + + return 0; +} + static int libxl__write_stub_dmargs(libxl__gc *gc, int dm_domid, int guest_domid, char **args) @@ -764,7 +785,10 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) dm_config->disks = guest_config->disks; dm_config->num_disks = guest_config->num_disks; - dm_config->nics = guest_config->nics; + GCNEW_ARRAY(dm_config->nics, + guest_config->num_nics * sizeof(*dm_config->nics)); + ret = libxl__nics_from_hvm_guest_config(gc, guest_config, dm_config->nics); + if (ret) goto out; dm_config->num_nics = guest_config->num_nics; dm_config->c_info.run_hotplug_scripts = -- 1.7.7.5 (Apple Git-26)