mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-27 15:05:17 +00:00
libxl: fix support for <interface type="hostdev"> syntax
A VIR_DOMAIN_NET_TYPE_HOSTDEV interface device is really a hostdev device, which is created by the libxl driver in libxlMakePCIList(). There is no need to create a libxl_device_nic for such hostdev devices, so skip interfaces of type VIR_DOMAIN_NET_TYPE_HOSTDEV in libxlMakeNicList(). Signed-off-by: Chunyan Liu <cyliu@suse.com>
This commit is contained in:
parent
ef142d1b9d
commit
fd43d1f8bd
@ -921,25 +921,31 @@ static int
|
|||||||
libxlMakeNicList(virDomainDefPtr def, libxl_domain_config *d_config)
|
libxlMakeNicList(virDomainDefPtr def, libxl_domain_config *d_config)
|
||||||
{
|
{
|
||||||
virDomainNetDefPtr *l_nics = def->nets;
|
virDomainNetDefPtr *l_nics = def->nets;
|
||||||
int nnics = def->nnets;
|
size_t nnics = def->nnets;
|
||||||
libxl_device_nic *x_nics;
|
libxl_device_nic *x_nics;
|
||||||
size_t i;
|
size_t i, nvnics = 0;
|
||||||
|
|
||||||
if (VIR_ALLOC_N(x_nics, nnics) < 0)
|
if (VIR_ALLOC_N(x_nics, nnics) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for (i = 0; i < nnics; i++) {
|
for (i = 0; i < nnics; i++) {
|
||||||
if (libxlMakeNic(def, l_nics[i], &x_nics[i]))
|
if (l_nics[i]->type == VIR_DOMAIN_NET_TYPE_HOSTDEV)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (libxlMakeNic(def, l_nics[i], &x_nics[nvnics]))
|
||||||
goto error;
|
goto error;
|
||||||
/*
|
/*
|
||||||
* The devid (at least right now) will not get initialized by
|
* The devid (at least right now) will not get initialized by
|
||||||
* libxl in the setup case but is required for starting the
|
* libxl in the setup case but is required for starting the
|
||||||
* device-model.
|
* device-model.
|
||||||
*/
|
*/
|
||||||
if (x_nics[i].devid < 0)
|
if (x_nics[nvnics].devid < 0)
|
||||||
x_nics[i].devid = i;
|
x_nics[nvnics].devid = nvnics;
|
||||||
|
|
||||||
|
nvnics++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VIR_SHRINK_N(x_nics, nnics, nnics - nvnics);
|
||||||
d_config->nics = x_nics;
|
d_config->nics = x_nics;
|
||||||
d_config->num_nics = nnics;
|
d_config->num_nics = nnics;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user