[PATCH 0/8] Report 'passt' support in domain capabilities

There are some distributions that consider switching from SLIRP to just passt. While libvirt wires no defaults and leaves this kind of decisions onto upper layers, it can help mgmt apps do the decision by reporting passt support in domain capabilities. Michal Prívozník (8): libvirt_private.syms: Export virDomainNetBackendType enum handlers qemu_capabilities: Introduce QEMU_CAPS_NETDEV_USER qemu_validate: Validate net backends against QEMU caps domain_capabilities: Introduce netdev capabilities qemu_capabilities: Fill supported net backend types conf: Accept 'default' backend type for <interface type='user'/> qemu_validate: Use domaincaps to validate supported net backend type qemu_domain: Set 'passt' net backend if 'default' is unsupported docs/formatdomaincaps.rst | 25 +++++++++++++++++++ src/conf/domain_capabilities.c | 13 ++++++++++ src/conf/domain_capabilities.h | 8 ++++++ src/conf/domain_conf.c | 5 +++- src/conf/schemas/domaincaps.rng | 10 ++++++++ src/conf/schemas/domaincommon.rng | 1 + src/libvirt_private.syms | 2 ++ src/qemu/qemu_capabilities.c | 23 +++++++++++++++++ src/qemu/qemu_capabilities.h | 4 +++ src/qemu/qemu_domain.c | 19 +++++++++++--- src/qemu/qemu_validate.c | 14 ++++++++--- .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 5 ++++ .../qemu_4.2.0-virt.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_4.2.0.s390x.xml | 5 ++++ tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 5 ++++ .../qemu_5.0.0-tcg-virt.riscv64.xml | 5 ++++ .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 5 ++++ .../qemu_5.0.0-virt.aarch64.xml | 5 ++++ .../qemu_5.0.0-virt.riscv64.xml | 5 ++++ tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 5 ++++ tests/domaincapsdata/qemu_5.1.0.sparc.xml | 5 ++++ tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 5 ++++ .../qemu_5.2.0-tcg-virt.riscv64.xml | 5 ++++ .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 5 ++++ .../qemu_5.2.0-virt.aarch64.xml | 5 ++++ .../qemu_5.2.0-virt.riscv64.xml | 5 ++++ tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_5.2.0.s390x.xml | 5 ++++ tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 5 ++++ .../qemu_6.0.0-virt.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_6.0.0.s390x.xml | 5 ++++ tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 5 ++++ tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 5 ++++ .../qemu_6.2.0-virt.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 5 ++++ .../qemu_7.0.0-hvf.aarch64+hvf.xml | 5 ++++ .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 5 ++++ .../qemu_7.0.0-virt.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 5 ++++ tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 5 ++++ .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 5 ++++ tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 5 ++++ tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 5 ++++ .../qemu_7.2.0-hvf.x86_64+hvf.xml | 6 +++++ .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 6 +++++ .../qemu_7.2.0-tcg.x86_64+hvf.xml | 6 +++++ .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 6 +++++ tests/domaincapsdata/qemu_7.2.0.ppc.xml | 6 +++++ tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 6 +++++ .../qemu_8.0.0-tcg-virt.riscv64.xml | 6 +++++ .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 6 +++++ .../qemu_8.0.0-virt.riscv64.xml | 6 +++++ tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 6 +++++ tests/domaincapsdata/qemu_8.1.0.s390x.xml | 6 +++++ tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 6 +++++ .../qemu_8.2.0-tcg-virt.loongarch64.xml | 6 +++++ .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 6 +++++ .../qemu_8.2.0-virt.aarch64.xml | 6 +++++ .../qemu_8.2.0-virt.loongarch64.xml | 6 +++++ tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 6 +++++ tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 6 +++++ tests/domaincapsdata/qemu_8.2.0.s390x.xml | 6 +++++ tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 6 +++++ tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 6 +++++ .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 6 +++++ tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 6 +++++ .../caps_4.2.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_4.2.0_ppc64.xml | 1 + .../qemucapabilitiesdata/caps_4.2.0_s390x.xml | 1 + .../caps_4.2.0_x86_64.xml | 1 + .../caps_5.0.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_5.0.0_ppc64.xml | 1 + .../caps_5.0.0_riscv64.xml | 1 + .../caps_5.0.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_5.1.0_sparc.xml | 1 + .../caps_5.1.0_x86_64.xml | 1 + .../caps_5.2.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_5.2.0_ppc64.xml | 1 + .../caps_5.2.0_riscv64.xml | 1 + .../qemucapabilitiesdata/caps_5.2.0_s390x.xml | 1 + .../caps_5.2.0_x86_64.xml | 1 + .../caps_6.0.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_6.0.0_s390x.xml | 1 + .../caps_6.0.0_x86_64.xml | 1 + .../caps_6.1.0_x86_64.xml | 1 + .../caps_6.2.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + .../caps_6.2.0_x86_64.xml | 1 + .../caps_7.0.0_aarch64+hvf.xml | 1 + .../caps_7.0.0_aarch64.xml | 1 + .../qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + .../caps_7.0.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + .../caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_riscv64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../qemucapabilitiesdata/caps_8.1.0_s390x.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_aarch64.xml | 1 + .../caps_8.2.0_armv7l.xml | 1 + .../caps_8.2.0_loongarch64.xml | 1 + .../qemucapabilitiesdata/caps_8.2.0_s390x.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + 137 files changed, 608 insertions(+), 8 deletions(-) -- 2.44.2

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt_private.syms | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f7a0a8bc36..3373c5a88c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -533,6 +533,8 @@ virDomainNetAllocateActualDevice; virDomainNetAppendIPAddress; virDomainNetARPInterfaces; virDomainNetBackendIsEqual; +virDomainNetBackendTypeFromString; +virDomainNetBackendTypeToString; virDomainNetBandwidthUpdate; virDomainNetDefActualFromNetworkPort; virDomainNetDefActualToNetworkPort; -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:30 +0200, Michal Privoznik wrote:
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt_private.syms | 2 ++ 1 file changed, 2 insertions(+)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Since -netdev user can be disabled during QEMU compilation, we can't blindly expect it to just be there. We need a capability that tracks its presence. For qemu-4.2.0 we are not able to detect the capability so do the next best thing - assume the capability is there. This is consistent with our current behaviour where we blindly assume the capability, anyway. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 7 +++++++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_4.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0_riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0_sparc.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_loongarch64.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + 44 files changed, 50 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 470902a4cf..2c7186c14f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -711,6 +711,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 460 */ "sev-snp-guest", /* QEMU_CAPS_SEV_SNP_GUEST */ + "netdev.user", /* QEMU_CAPS_NETDEV_USER */ ); @@ -1575,6 +1576,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { { "object-add/arg-type/+iothread/thread-pool-max", QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX }, { "query-migrate/ret-type/blocked-reasons", QEMU_CAPS_MIGRATION_BLOCKED_REASONS }, { "screendump/arg-type/format/^png", QEMU_CAPS_SCREENSHOT_FORMAT_PNG }, + { "netdev_add/arg-type/+user", QEMU_CAPS_NETDEV_USER }, }; typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; @@ -5404,6 +5406,11 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCaps *qemuCaps) */ if (qemuCaps->version < 5002000) virQEMUCapsSet(qemuCaps, QEMU_CAPS_ENABLE_FIPS); + + /* We are not able to detect this for old QEMU. Assume the capability is + * there. */ + if (qemuCaps->version < 5000000) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_USER); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index ef71e8511e..d3d4e24e58 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -690,6 +690,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 460 */ QEMU_CAPS_SEV_SNP_GUEST, /* -object sev-snp-guest */ + QEMU_CAPS_NETDEV_USER, /* -netdev user */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_4.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0_aarch64.xml index 33d06fface..5aa5c7aeef 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0_aarch64.xml @@ -106,6 +106,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>4002000</version> <microcodeVersion>61700242</microcodeVersion> <package>v4.1.0-2221-g36609b4fa3</package> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0_ppc64.xml index 80f503fc46..1248897aba 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0_ppc64.xml @@ -106,6 +106,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>4002000</version> <microcodeVersion>42900242</microcodeVersion> <package>v4.1.0-2198-g9e583f2</package> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0_s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0_s390x.xml index 20d458e55d..f63db59bcd 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0_s390x.xml @@ -72,6 +72,7 @@ <flag name='virtio-blk.queue-size'/> <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> + <flag name='netdev.user'/> <version>4002000</version> <microcodeVersion>39100242</microcodeVersion> <package>qemu-4.2.0-20200115.0.1e4aa2da.fc31</package> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0_x86_64.xml index 40e3211c57..a91b34b49f 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0_x86_64.xml @@ -144,6 +144,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>4002000</version> <microcodeVersion>43100242</microcodeVersion> <package>v4.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0_aarch64.xml index 1044a49742..b443541c23 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0_aarch64.xml @@ -118,6 +118,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5000000</version> <microcodeVersion>61700241</microcodeVersion> <package>v5.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0_ppc64.xml index 1806e6316e..47f35c536a 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0_ppc64.xml @@ -121,6 +121,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5000000</version> <microcodeVersion>42900241</microcodeVersion> <package>v5.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0_riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0_riscv64.xml index f68d88f39b..9b14ff1fff 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0_riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0_riscv64.xml @@ -113,6 +113,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5000000</version> <microcodeVersion>0</microcodeVersion> <package>v5.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0_x86_64.xml index 1741c003cb..84a18b516a 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0_x86_64.xml @@ -153,6 +153,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5000000</version> <microcodeVersion>43100241</microcodeVersion> <package>v5.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0_sparc.xml b/tests/qemucapabilitiesdata/caps_5.1.0_sparc.xml index dce3a97aa5..ffa167508e 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0_sparc.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0_sparc.xml @@ -45,6 +45,7 @@ <flag name='rotation-rate'/> <flag name='input-linux'/> <flag name='memory-backend-file.prealloc-threads'/> + <flag name='netdev.user'/> <version>5001000</version> <microcodeVersion>0</microcodeVersion> <package>qemu-5.1.0-5.fc33</package> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0_x86_64.xml index c863baa71c..ac3079f1ca 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0_x86_64.xml @@ -157,6 +157,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5001000</version> <microcodeVersion>43100242</microcodeVersion> <package>v5.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml index 905726f7c1..ae426c5f7f 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml @@ -126,6 +126,7 @@ <flag name='virtio-crypto'/> <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> + <flag name='netdev.user'/> <version>5002000</version> <microcodeVersion>61700243</microcodeVersion> <package>v5.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml index be3d464df3..d7615208b3 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml @@ -126,6 +126,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5002000</version> <microcodeVersion>42900243</microcodeVersion> <package>v5.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml b/tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml index 9280e92fd8..c3452815b4 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml @@ -118,6 +118,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5002000</version> <microcodeVersion>0</microcodeVersion> <package>v5.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_s390x.xml b/tests/qemucapabilitiesdata/caps_5.2.0_s390x.xml index 0a18f55960..22b2fbeb69 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_s390x.xml @@ -83,6 +83,7 @@ <flag name='virtio-iommu-pci'/> <flag name='virtio-net.rss'/> <flag name='virtio-crypto'/> + <flag name='netdev.user'/> <version>5002000</version> <microcodeVersion>39100243</microcodeVersion> <package>qemu-5.2.0-20201215.0.ba93e22c.fc32</package> diff --git a/tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml index da6229f8e2..4cd05fa7ec 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml @@ -160,6 +160,7 @@ <flag name='usb-host.guest-resets-all'/> <flag name='virtio-crypto'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>5002000</version> <microcodeVersion>43100243</microcodeVersion> <package>v5.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml index 97bbcdeb68..83439f3d63 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml @@ -137,6 +137,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> + <flag name='netdev.user'/> <version>6000000</version> <microcodeVersion>61700242</microcodeVersion> <package>v6.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0_s390x.xml b/tests/qemucapabilitiesdata/caps_6.0.0_s390x.xml index 94a8406f0a..332b8091ee 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0_s390x.xml @@ -93,6 +93,7 @@ <flag name='migration.blocked-reasons'/> <flag name='virtio-crypto'/> <flag name='display-reload'/> + <flag name='netdev.user'/> <version>6000000</version> <microcodeVersion>39100242</microcodeVersion> <package>qemu-6.0.0-20210517.1.4ff77070.fc33</package> diff --git a/tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml index ffaa7c2a71..dc55e0ab3f 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml @@ -172,6 +172,7 @@ <flag name='pvpanic-pci'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>6000000</version> <microcodeVersion>43100242</microcodeVersion> <package>v6.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml index 22a1fc3ac7..1d5b8ea9d2 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml @@ -178,6 +178,7 @@ <flag name='virtio-gpu.blob'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>6001000</version> <microcodeVersion>43100243</microcodeVersion> <package>v6.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml index a7a6f54019..25049e1ab8 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml @@ -150,6 +150,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> + <flag name='netdev.user'/> <version>6001050</version> <microcodeVersion>61700244</microcodeVersion> <package></package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml index 719e7120a3..e321481949 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml @@ -138,6 +138,7 @@ <flag name='virtio-gpu.blob'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>6002000</version> <microcodeVersion>42900244</microcodeVersion> <package>v6.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml index 010f142dee..f8f8bd95f4 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml @@ -180,6 +180,7 @@ <flag name='virtio-gpu.blob'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>6002000</version> <microcodeVersion>43100244</microcodeVersion> <package>v6.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml index ab21278e50..69d0701dc9 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64+hvf.xml @@ -158,6 +158,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> + <flag name='netdev.user'/> <version>6002092</version> <microcodeVersion>61700243</microcodeVersion> <package>v7.0.0-rc2</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml index f53c3ddcd8..eaed5601ed 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml @@ -158,6 +158,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> + <flag name='netdev.user'/> <version>6002092</version> <microcodeVersion>61700243</microcodeVersion> <package>v7.0.0-rc2</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml index 2efa4d6259..a49d45a68a 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml @@ -156,6 +156,7 @@ <flag name='virtio-gpu.blob'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7000000</version> <microcodeVersion>42900243</microcodeVersion> <package>v7.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml index 843225b19d..5c57ae8eb8 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml @@ -186,6 +186,7 @@ <flag name='virtio-gpu.blob'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7000000</version> <microcodeVersion>43100243</microcodeVersion> <package>v7.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml index 3fda8bf6ea..5aeb56bac6 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml @@ -157,6 +157,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7001000</version> <microcodeVersion>42900244</microcodeVersion> <package>v7.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml index 0d43787fa9..3c589a4d61 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml @@ -190,6 +190,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7001000</version> <microcodeVersion>43100244</microcodeVersion> <package>v7.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml b/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml index 7a73f762de..c5e1b23fb7 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml @@ -152,6 +152,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7002000</version> <microcodeVersion>0</microcodeVersion> <package>qemu-7.2.0-6.fc37</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml index 5ba0c24a4d..f78e596fcc 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml @@ -194,6 +194,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml index 887cb02fa0..9b37253d4f 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml @@ -194,6 +194,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml b/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml index 9af900aaa3..03c0e99da5 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml @@ -140,6 +140,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>7002050</version> <microcodeVersion>0</microcodeVersion> <package>v7.2.0-333-g222059a0fc</package> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml index 62a42c3ab6..bd391ca0b6 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml @@ -198,6 +198,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>8000000</version> <microcodeVersion>43100244</microcodeVersion> <package>v8.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml b/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml index 744261be10..c2211bfb12 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml @@ -121,6 +121,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>8001000</version> <microcodeVersion>39100245</microcodeVersion> <package>v8.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml index 907fc39b99..4b7809f635 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml @@ -200,6 +200,7 @@ <flag name='smp-clusters'/> <flag name='display-reload'/> <flag name='usb-mtp'/> + <flag name='netdev.user'/> <version>8001000</version> <microcodeVersion>43100245</microcodeVersion> <package>v8.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml index 925bfef44f..b856bc55b3 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml @@ -167,6 +167,7 @@ <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>8002000</version> <microcodeVersion>61700246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml b/tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml index ea3a76d175..1b95b2de85 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml @@ -174,6 +174,7 @@ <flag name='usb-mtp'/> <flag name='machine.virt.ras'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>8002000</version> <microcodeVersion>0</microcodeVersion> <package>qemu-8.2.0-7.fc39</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_loongarch64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_loongarch64.xml index 618a7075df..aaf8f32485 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_loongarch64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_loongarch64.xml @@ -157,6 +157,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>8002000</version> <microcodeVersion>106300246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml b/tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml index acf18d5896..e86088332e 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml @@ -122,6 +122,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>8002000</version> <microcodeVersion>39100246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml index 5d7755a65e..a1a5d6fd0f 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml @@ -203,6 +203,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>8002000</version> <microcodeVersion>43100246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml index 204d243247..ab841db53b 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -205,6 +205,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>9000000</version> <microcodeVersion>43100245</microcodeVersion> <package>v9.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml index e0332ce1e8..05cba09035 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -203,6 +203,7 @@ <flag name='display-reload'/> <flag name='usb-mtp'/> <flag name='virtio-sound'/> + <flag name='netdev.user'/> <version>9000050</version> <microcodeVersion>43100246</microcodeVersion> <package>v9.0.0-1388-g80e8f06021-dirty</package> -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:31 +0200, Michal Privoznik wrote:
Since -netdev user can be disabled during QEMU compilation, we can't blindly expect it to just be there. We need a capability that tracks its presence.
For qemu-4.2.0 we are not able to detect the capability so do the next best thing - assume the capability is there. This is consistent with our current behaviour where we blindly assume the capability, anyway.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Now that we have a capability for each domain net backend we can start validating user's selection against QEMU capabilities. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_validate.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index b392428f48..23d642c1ce 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1705,11 +1705,27 @@ qemuValidateDomainDeviceDefNetwork(const virDomainNetDef *net, size_t i; if (net->type == VIR_DOMAIN_NET_TYPE_USER) { - if (net->backend.type == VIR_DOMAIN_NET_BACKEND_PASST && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_STREAM)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("the passt network backend is not supported with this QEMU binary")); - return -1; + switch (net->backend.type) { + case VIR_DOMAIN_NET_BACKEND_DEFAULT: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_USER)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("the '%1$s' network backend is not supported with this QEMU binary"), + virDomainNetBackendTypeToString(net->backend.type)); + return -1; + } + break; + + case VIR_DOMAIN_NET_BACKEND_PASST: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_STREAM)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("the '%1$s' network backend is not supported with this QEMU binary"), + virDomainNetBackendTypeToString(net->backend.type)); + return -1; + } + break; + + case VIR_DOMAIN_NET_BACKEND_LAST: + break; } if (net->guestIP.nroutes) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:32 +0200, Michal Privoznik wrote:
Now that we have a capability for each domain net backend we can start validating user's selection against QEMU capabilities.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_validate.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

If mgmt apps on top of libvirt want to make a decision on the backend type for <interface type='user'/> (e.g. whether past is supported) we currently offer them no way to learn this fact. Domain capabilities were invented exactly for this reason. Report supported net backend types there. Now, because of backwards compatibility, specifying no backend type (which translates to VIR_DOMAIN_NET_BACKEND_DEFAULT) means "use hyperviosr's builtin SLIRP". That behaviour can not be changed. But it may happen that the hypervisor has no support for SLIRP. So we have to report it. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomaincaps.rst | 25 +++++++++++++++++++++++++ src/conf/domain_capabilities.c | 13 +++++++++++++ src/conf/domain_capabilities.h | 8 ++++++++ src/conf/schemas/domaincaps.rng | 10 ++++++++++ 4 files changed, 56 insertions(+) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index a2ad0acc3d..be45de8996 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -629,6 +629,31 @@ Crypto device capabilities are exposed under the ``crypto`` element. For instanc ``backendModel`` Options for the ``backendModel`` attribute of the ``<crypto><backend/>`` element. +Interface device +^^^^^^^^^^^^^^^^ + +Interface device corresponds to `network interface +<formatdomain.html#network-interfaces>`__ (``<interface/>``) in domain XML. + +:: + + <domainCapabilities> + ... + <devices> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> + ... + </devices> + </domainCapabilities> + +``backendType`` + Options for the ``type`` attribute of the ``<backend/>`` element + + Features ~~~~~~~~ diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 3f2d231d1c..199bac006b 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -607,6 +607,18 @@ virDomainCapsDeviceCryptoFormat(virBuffer *buf, } +static void +virDomainCapsDeviceNetFormat(virBuffer *buf, + const virDomainCapsDeviceNet *interface) +{ + FORMAT_PROLOGUE(interface); + + ENUM_PROCESS(interface, backendType, virDomainNetBackendTypeToString); + + FORMAT_EPILOGUE(interface); +} + + /** * virDomainCapsFeatureGICFormat: * @buf: target buffer @@ -787,6 +799,7 @@ virDomainCapsFormat(const virDomainCaps *caps) virDomainCapsDeviceRedirdevFormat(&buf, &caps->redirdev); virDomainCapsDeviceChannelFormat(&buf, &caps->channel); virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto); + virDomainCapsDeviceNetFormat(&buf, &caps->net); virBufferAdjustIndent(&buf, -2); virBufferAddLit(&buf, "</devices>\n"); diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 986f3cb394..3fe62ce211 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -250,6 +250,13 @@ struct _virDomainCapsDeviceCrypto { virDomainCapsEnum backendModel; /* virDomainCryptoBackend */ }; +STATIC_ASSERT_ENUM(VIR_DOMAIN_NET_BACKEND_LAST); +typedef struct _virDomainCapsDeviceNet virDomainCapsDeviceNet; +struct _virDomainCapsDeviceNet { + virTristateBool supported; + virDomainCapsEnum backendType; /* virDomainNetBackendType */ +}; + typedef enum { VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0, VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO, @@ -286,6 +293,7 @@ struct _virDomainCaps { virDomainCapsDeviceRedirdev redirdev; virDomainCapsDeviceChannel channel; virDomainCapsDeviceCrypto crypto; + virDomainCapsDeviceNet net; /* add new domain devices here */ virDomainCapsFeatureGIC gic; diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng index b8115fe028..f17a4e681d 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -212,6 +212,9 @@ <optional> <ref name="crypto"/> </optional> + <optional> + <ref name="interface"/> + </optional> </element> </define> @@ -285,6 +288,13 @@ </element> </define> + <define name="interface"> + <element name="interface"> + <ref name="supported"/> + <ref name="enum"/> + </element> + </define> + <define name="launchSecurity"> <element name="launchSecurity"> <ref name="supported"/> -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:33 +0200, Michal Privoznik wrote:
If mgmt apps on top of libvirt want to make a decision on the backend type for <interface type='user'/> (e.g. whether past is supported) we currently offer them no way to learn this fact. Domain capabilities were invented exactly for this reason. Report supported net backend types there.
Now, because of backwards compatibility, specifying no backend type (which translates to VIR_DOMAIN_NET_BACKEND_DEFAULT) means "use hyperviosr's builtin SLIRP". That behaviour can not be changed. But it may happen that the hypervisor has no support for SLIRP. So we have to report it.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- docs/formatdomaincaps.rst | 25 +++++++++++++++++++++++++ src/conf/domain_capabilities.c | 13 +++++++++++++ src/conf/domain_capabilities.h | 8 ++++++++ src/conf/schemas/domaincaps.rng | 10 ++++++++++ 4 files changed, 56 insertions(+)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_capabilities.c | 16 ++++++++++++++++ src/qemu/qemu_capabilities.h | 3 +++ tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0.s390x.xml | 5 +++++ tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 5 +++++ .../qemu_5.0.0-tcg-virt.riscv64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.1.0.sparc.xml | 5 +++++ tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 5 +++++ .../qemu_5.2.0-tcg-virt.riscv64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0.s390x.xml | 5 +++++ tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0.s390x.xml | 5 +++++ tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 5 +++++ .../qemu_7.0.0-hvf.aarch64+hvf.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 5 +++++ tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 5 +++++ tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 5 +++++ .../domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml | 6 ++++++ tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 6 ++++++ .../domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml | 6 ++++++ tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_7.2.0.ppc.xml | 6 ++++++ tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 6 ++++++ .../qemu_8.0.0-tcg-virt.riscv64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.1.0.s390x.xml | 6 ++++++ tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 6 ++++++ .../qemu_8.2.0-tcg-virt.loongarch64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml | 6 ++++++ .../qemu_8.2.0-virt.loongarch64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0.s390x.xml | 6 ++++++ tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 6 ++++++ tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 6 ++++++ 86 files changed, 469 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2c7186c14f..d7de39c21d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6542,6 +6542,20 @@ virQEMUCapsFillDomainLaunchSecurity(virQEMUCaps *qemuCaps, } +void +virQEMUCapsFillDomainDeviceNetCaps(virQEMUCaps *qemuCaps, + virDomainCapsDeviceNet *net) +{ + net->supported = VIR_TRISTATE_BOOL_YES; + net->backendType.report = true; + + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_USER)) + VIR_DOMAIN_CAPS_ENUM_SET(net->backendType, VIR_DOMAIN_NET_BACKEND_DEFAULT); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_STREAM)) + VIR_DOMAIN_CAPS_ENUM_SET(net->backendType, VIR_DOMAIN_NET_BACKEND_PASST); +} + + /** * virQEMUCapsSupportsGICVersion: * @qemuCaps: QEMU capabilities @@ -6707,6 +6721,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps, virDomainCapsMemoryBacking *memoryBacking = &domCaps->memoryBacking; virDomainCapsDeviceCrypto *crypto = &domCaps->crypto; virDomainCapsLaunchSecurity *launchSecurity = &domCaps->launchSecurity; + virDomainCapsDeviceNet *net = &domCaps->net; virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps); @@ -6747,6 +6762,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps, virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps); virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto); virQEMUCapsFillDomainLaunchSecurity(qemuCaps, launchSecurity); + virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, net); return 0; } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index d3d4e24e58..c65ba7d138 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -871,6 +871,9 @@ void virQEMUCapsFillDomainDeviceCryptoCaps(virQEMUCaps *qemuCaps, void virQEMUCapsFillDomainLaunchSecurity(virQEMUCaps *qemuCaps, virDomainCapsLaunchSecurity *launchSecurity); +void virQEMUCapsFillDomainDeviceNetCaps(virQEMUCaps *qemuCaps, + virDomainCapsDeviceNet *net); + bool virQEMUCapsGuestIsNative(virArch host, virArch guest); diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml index 1c980d76a3..e5ffe3934d 100644 --- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml @@ -309,6 +309,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml index 06e6fb63be..a849e8f156 100644 --- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml @@ -254,6 +254,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml index acf69bdad5..a7c2e0baee 100644 --- a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml @@ -182,6 +182,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml index acf69bdad5..a7c2e0baee 100644 --- a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml @@ -182,6 +182,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml index 338bcf19d0..2c41777e73 100644 --- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml @@ -154,6 +154,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml index a2268fb51c..809ce9c903 100644 --- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml @@ -259,6 +259,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml index 0e52e26b02..32ba46ebbc 100644 --- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml @@ -309,6 +309,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml index ba74b7154e..70bd7bc46e 100644 --- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml @@ -311,6 +311,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml index 73e2fdd579..c487d467ef 100644 --- a/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml @@ -139,6 +139,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml index 278f775d76..d69ea76a78 100644 --- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml @@ -256,6 +256,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml index 02a76955b7..2466dda755 100644 --- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml @@ -195,6 +195,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml index f9a7d8bca2..b0e4aafcd5 100644 --- a/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml @@ -142,6 +142,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml index 02a76955b7..2466dda755 100644 --- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml @@ -195,6 +195,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml index e887156a91..c66d0645fc 100644 --- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml @@ -161,6 +161,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml index 63592148f0..c57d4f3283 100644 --- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml @@ -311,6 +311,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml index d89060b5c8..f276f0b735 100644 --- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml @@ -243,6 +243,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml index 2357129cde..eea710a054 100644 --- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml @@ -256,6 +256,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.1.0.sparc.xml b/tests/domaincapsdata/qemu_5.1.0.sparc.xml index b9a95310ef..a471a937d7 100644 --- a/tests/domaincapsdata/qemu_5.1.0.sparc.xml +++ b/tests/domaincapsdata/qemu_5.1.0.sparc.xml @@ -125,6 +125,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml index 469c515146..56e30cc302 100644 --- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml @@ -243,6 +243,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml index 2ce499bf08..351bfa2e8d 100644 --- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml @@ -243,6 +243,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml index 73e2fdd579..c487d467ef 100644 --- a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml @@ -139,6 +139,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml index 7b62239682..bcd5c59a65 100644 --- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml @@ -256,6 +256,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml index 2b83eeed6e..b891ba256d 100644 --- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml @@ -195,6 +195,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml index f9a7d8bca2..b0e4aafcd5 100644 --- a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml @@ -142,6 +142,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml index 2b83eeed6e..b891ba256d 100644 --- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml @@ -195,6 +195,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml index 2ed2512dde..5f2ace6d06 100644 --- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml @@ -161,6 +161,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml index a865b639fc..54abab3dfe 100644 --- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml @@ -261,6 +261,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml index e8e7517c1b..51b627ff94 100644 --- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml @@ -243,6 +243,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml index ed2511d138..2a11dd59f1 100644 --- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml @@ -245,6 +245,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml index b4c9092996..3bb9713fdc 100644 --- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml @@ -259,6 +259,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml index a9a56ee54b..b59ee83fec 100644 --- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml @@ -197,6 +197,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml index a9a56ee54b..b59ee83fec 100644 --- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml @@ -197,6 +197,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml index d4fdef3791..8fcc4f029b 100644 --- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml +++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml @@ -262,6 +262,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml index 557c22a67e..a84d9eb413 100644 --- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml @@ -245,6 +245,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml index 93491bb02c..a6f36a559b 100644 --- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml index 2cefc2d4a8..f5d11718f4 100644 --- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml @@ -259,6 +259,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml index 6d280d64cc..f19843a986 100644 --- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml index 7af1069fd2..2b206401c9 100644 --- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml index e920c6667d..c934608d6a 100644 --- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml @@ -261,6 +261,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml index 09c7af62db..f96e5a9328 100644 --- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml @@ -204,6 +204,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml index 09c7af62db..f96e5a9328 100644 --- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml @@ -204,6 +204,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml index f2cf750633..006db121e8 100644 --- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml @@ -160,6 +160,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml index a407ddc003..dfe53d43f0 100644 --- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml index 9c7b63fd5c..8f491520db 100644 --- a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml +++ b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml @@ -162,6 +162,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml index b48e443345..fc9643c39a 100644 --- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml @@ -247,6 +247,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml index ec4469f040..e4b25e7e66 100644 --- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml @@ -262,6 +262,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml index 4d047b1023..8a43e8caf0 100644 --- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml @@ -203,6 +203,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml index 4d047b1023..8a43e8caf0 100644 --- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml @@ -203,6 +203,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml index 6385402bbc..8fbf03bc19 100644 --- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml @@ -165,6 +165,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml index 02c781b474..51971bb808 100644 --- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml @@ -247,6 +247,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml index 1964de831c..6ed09e8951 100644 --- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml index a330d9f763..e3527d2907 100644 --- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml @@ -260,6 +260,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml index 82f8788c19..377dc5ea8d 100644 --- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml @@ -158,6 +158,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml index f236ae514e..c96c6e50fe 100644 --- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml @@ -246,6 +246,11 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml index 6faacb8c31..b08beb48ca 100644 --- a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml +++ b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml @@ -169,6 +169,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml index 16a6675d33..4ca6e7b77d 100644 --- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml @@ -252,6 +252,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml index e2e905dcae..01c35cecfa 100644 --- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml +++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml @@ -250,6 +250,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml index e2e905dcae..01c35cecfa 100644 --- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml @@ -250,6 +250,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0.ppc.xml b/tests/domaincapsdata/qemu_7.2.0.ppc.xml index 8cd76c0f8e..ce09a839bd 100644 --- a/tests/domaincapsdata/qemu_7.2.0.ppc.xml +++ b/tests/domaincapsdata/qemu_7.2.0.ppc.xml @@ -144,6 +144,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml index dd67bb518e..9ee0c2827d 100644 --- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml @@ -252,6 +252,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml index becea145dc..8eda04948f 100644 --- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml @@ -253,6 +253,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml index 73b3ebe5b5..e4bb90c929 100644 --- a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml @@ -145,6 +145,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml index eb3578eafa..c2d537b520 100644 --- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml @@ -255,6 +255,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml index a24371324a..265274aa65 100644 --- a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml @@ -148,6 +148,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml index 9e167f67d3..7167406453 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -253,6 +253,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml index 967a5f3096..6496cce45d 100644 --- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml @@ -255,6 +255,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml index 3446699d30..3a1070a2c3 100644 --- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml @@ -256,6 +256,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml index e909ffd420..8cc9470a6a 100644 --- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml @@ -257,6 +257,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml index db95884956..0e6063501c 100644 --- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml @@ -255,6 +255,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml index 419423ee42..ab8993c6e3 100644 --- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml @@ -257,6 +257,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml index 734a30e29e..5de7729136 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml @@ -151,6 +151,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml index e14b4e9599..2b48d78696 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml @@ -256,6 +256,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml index 2df617ebf3..c09e287ea3 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml @@ -209,6 +209,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml index 330bd919ce..dcd4495e7d 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml @@ -155,6 +155,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml index 2df617ebf3..c09e287ea3 100644 --- a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml @@ -209,6 +209,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='yes'> diff --git a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml index ed8b2a3bea..7a161e5586 100644 --- a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml +++ b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml @@ -161,6 +161,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0.s390x.xml b/tests/domaincapsdata/qemu_8.2.0.s390x.xml index 6897395eef..23e7125dd9 100644 --- a/tests/domaincapsdata/qemu_8.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.2.0.s390x.xml @@ -257,6 +257,12 @@ <value>builtin</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml index f4d42ea088..b72369a737 100644 --- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml @@ -257,6 +257,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml index eb555932ce..053a985456 100644 --- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml @@ -257,6 +257,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml index 597d184f12..3b5ce54f1a 100644 --- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml @@ -258,6 +258,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml index b06271a846..ea54504b47 100644 --- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml @@ -257,6 +257,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml index 0ce734d104..eb84b3eb9f 100644 --- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml @@ -258,6 +258,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml index a41fc21328..60621e9bdc 100644 --- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml @@ -257,6 +257,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml index bc6bf6bf95..9a9ae4c276 100644 --- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml @@ -258,6 +258,12 @@ <value>lkcf</value> </enum> </crypto> + <interface supported='yes'> + <enum name='backendType'> + <value>default</value> + <value>passt</value> + </enum> + </interface> </devices> <features> <gic supported='no'/> -- 2.44.2

After previous commits, domain capabilities XML reports basically two possible values for backend type: 'default' and 'passt'. Despite its misleading name, 'default' really means 'use hypervisor's builtin SLIRP'. Since it's reported in domain capabilities as a value accepted, make our parser and XML schema accept it. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_conf.c | 5 ++++- src/conf/schemas/domaincommon.rng | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index cb1154b23f..334152c4ff 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9320,8 +9320,11 @@ virDomainNetBackendParseXML(xmlNodePtr node, g_autofree char *tap = virXMLPropString(node, "tap"); g_autofree char *vhost = virXMLPropString(node, "vhost"); + /* The VIR_DOMAIN_NET_BACKEND_DEFAULT really means 'use hypervisor's + * builtin SLIRP'. It's reported in domain caps and thus we need to accept + * it. Hence VIR_XML_PROP_NONE instead of VIR_XML_PROP_NONZERO. */ if (virXMLPropEnum(node, "type", virDomainNetBackendTypeFromString, - VIR_XML_PROP_NONZERO, &def->backend.type) < 0) { + VIR_XML_PROP_NONE, &def->backend.type) < 0) { return -1; } diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 844a931deb..33e34255f4 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -3826,6 +3826,7 @@ <optional> <attribute name="type"> <choice> + <value>default</value> <value>passt</value> </choice> </attribute> -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:35 +0200, Michal Privoznik wrote:
After previous commits, domain capabilities XML reports basically two possible values for backend type: 'default' and 'passt'. Despite its misleading name, 'default' really means 'use hypervisor's builtin SLIRP'. Since it's reported in domain capabilities as a value accepted, make our parser and XML schema accept it.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Now that the logic for detecting supported net backend types has been moved to domain capabilities generation, we can just use it when validating net backend type. Just like we do for device models and so on. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_validate.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 23d642c1ce..8840306bfd 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1705,28 +1705,18 @@ qemuValidateDomainDeviceDefNetwork(const virDomainNetDef *net, size_t i; if (net->type == VIR_DOMAIN_NET_TYPE_USER) { - switch (net->backend.type) { - case VIR_DOMAIN_NET_BACKEND_DEFAULT: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_USER)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("the '%1$s' network backend is not supported with this QEMU binary"), - virDomainNetBackendTypeToString(net->backend.type)); - return -1; - } - break; + virDomainCapsDeviceNet netCaps = { }; - case VIR_DOMAIN_NET_BACKEND_PASST: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NETDEV_STREAM)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("the '%1$s' network backend is not supported with this QEMU binary"), - virDomainNetBackendTypeToString(net->backend.type)); - return -1; - } - break; + virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, &netCaps); - case VIR_DOMAIN_NET_BACKEND_LAST: - break; + if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(netCaps.backendType, + net->backend.type)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("the '%1$s' network backend is not supported with this QEMU binary"), + virDomainNetBackendTypeToString(net->backend.type)); + return -1; } + if (net->guestIP.nroutes) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Invalid attempt to set network interface guest-side IP route, not supported by QEMU")); -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:36 +0200, Michal Privoznik wrote:
Now that the logic for detecting supported net backend types has been moved to domain capabilities generation, we can just use it when validating net backend type. Just like we do for device models and so on.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_validate.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>

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> --- src/qemu/qemu_domain.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 1a90311ca5..2134b11038 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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; } -- 2.44.2

On Fri, Jun 28, 2024 at 15:12:37 +0200, Michal Privoznik wrote:
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> --- src/qemu/qemu_domain.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
participants (2)
-
Michal Privoznik
-
Peter Krempa