mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu_domain: Set 'passt' net backend if 'default' is unsupported
It may happen that QEMU is compiled without SLIRP but with support for passt. In such case it is acceptable to alter user provided configuration and switch backend to passt as it offers all the features as SLIRP. Resolves: https://issues.redhat.com/browse/RHEL-45518 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
@@ -5975,12 +5975,25 @@ qemuDomainDeviceNetDefPostParse(virDomainNetDef *net,
|
||||
virQEMUCaps *qemuCaps)
|
||||
{
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_VDPA &&
|
||||
!virDomainNetGetModelString(net))
|
||||
!virDomainNetGetModelString(net)) {
|
||||
net->model = VIR_DOMAIN_NET_MODEL_VIRTIO;
|
||||
else if (net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
|
||||
} else if (net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV &&
|
||||
!virDomainNetGetModelString(net) &&
|
||||
virDomainNetResolveActualType(net) != VIR_DOMAIN_NET_TYPE_HOSTDEV)
|
||||
virDomainNetResolveActualType(net) != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
|
||||
net->model = qemuDomainDefaultNetModel(def, qemuCaps);
|
||||
}
|
||||
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_USER &&
|
||||
net->backend.type == VIR_DOMAIN_NET_BACKEND_DEFAULT) {
|
||||
virDomainCapsDeviceNet netCaps = { };
|
||||
|
||||
virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, &netCaps);
|
||||
|
||||
if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(netCaps.backendType, VIR_DOMAIN_NET_BACKEND_DEFAULT) &&
|
||||
VIR_DOMAIN_CAPS_ENUM_IS_SET(netCaps.backendType, VIR_DOMAIN_NET_BACKEND_PASST)) {
|
||||
net->backend.type = VIR_DOMAIN_NET_BACKEND_PASST;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user