[PATCH] qemu: capabilities: Detect support for JSON args for -netdev

Peter Krempa posted 1 patch 3 weeks, 4 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/9be9315694460912ea2af6fc12c26405084124fa.1668014296.git.pkrempa@redhat.com
src/qemu/qemu_capabilities.c                                | 2 ++
tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml            | 1 +
tests/qemuxml2argvdata/boot-complex.x86_64-latest.args      | 4 ++--
tests/qemuxml2argvdata/boot-order.x86_64-latest.args        | 2 +-
.../channel-unix-guestfwd.x86_64-latest.args                | 4 ++--
.../qemuxml2argvdata/devices-acpi-index.x86_64-latest.args  | 6 +++---
tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args    | 2 +-
tests/qemuxml2argvdata/event_idx.x86_64-latest.args         | 2 +-
.../graphics-spice-timeout.x86_64-latest.args               | 2 +-
tests/qemuxml2argvdata/name-escape.x86_64-latest.args       | 2 +-
tests/qemuxml2argvdata/net-user.x86_64-latest.args          | 2 +-
.../qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args          | 2 +-
tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args     | 6 +++---
tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args    | 6 +++---
tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args  | 4 ++--
tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args          | 4 ++--
.../q35-virt-manager-basic.x86_64-latest.args               | 2 +-
tests/qemuxml2argvdata/user-aliases.x86_64-latest.args      | 6 +++---
tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args        | 2 +-
.../virtio-non-transitional.x86_64-latest.args              | 2 +-
.../virtio-options-net-ats.x86_64-latest.args               | 4 ++--
.../virtio-options-net-iommu.x86_64-latest.args             | 4 ++--
.../virtio-options-net-packed.x86_64-latest.args            | 4 ++--
tests/qemuxml2argvdata/virtio-options.x86_64-latest.args    | 2 +-
.../qemuxml2argvdata/virtio-transitional.x86_64-latest.args | 2 +-
.../qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args  | 2 +-
.../qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args  | 2 +-
.../qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args | 2 +-
.../qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args | 2 +-
30 files changed, 46 insertions(+), 43 deletions(-)
[PATCH] qemu: capabilities: Detect support for JSON args for -netdev
Posted by Peter Krempa 3 weeks, 4 days ago
JSON args for -netdev were added as precursor for adding the 'dgram'
network backend type. Enable the detection and update test cases using
DO_TEST_CAPS_LATEST.

Enabling the capability also ensures that the -netdev argument is
validated against the QAPI schema of 'netdev_add' which was already
implemented but not enabled.

The parser supporting JSON was added by qemu commit f3eedcddba3 and
enabled when adding stream/dgram netdevs in commit 5166fe0ae46.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/qemu/qemu_capabilities.c                                | 2 ++
 tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml            | 1 +
 tests/qemuxml2argvdata/boot-complex.x86_64-latest.args      | 4 ++--
 tests/qemuxml2argvdata/boot-order.x86_64-latest.args        | 2 +-
 .../channel-unix-guestfwd.x86_64-latest.args                | 4 ++--
 .../qemuxml2argvdata/devices-acpi-index.x86_64-latest.args  | 6 +++---
 tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args    | 2 +-
 tests/qemuxml2argvdata/event_idx.x86_64-latest.args         | 2 +-
 .../graphics-spice-timeout.x86_64-latest.args               | 2 +-
 tests/qemuxml2argvdata/name-escape.x86_64-latest.args       | 2 +-
 tests/qemuxml2argvdata/net-user.x86_64-latest.args          | 2 +-
 .../qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args | 2 +-
 tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args          | 2 +-
 tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args     | 6 +++---
 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args    | 6 +++---
 tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args  | 4 ++--
 tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args          | 4 ++--
 .../q35-virt-manager-basic.x86_64-latest.args               | 2 +-
 tests/qemuxml2argvdata/user-aliases.x86_64-latest.args      | 6 +++---
 tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args        | 2 +-
 .../virtio-non-transitional.x86_64-latest.args              | 2 +-
 .../virtio-options-net-ats.x86_64-latest.args               | 4 ++--
 .../virtio-options-net-iommu.x86_64-latest.args             | 4 ++--
 .../virtio-options-net-packed.x86_64-latest.args            | 4 ++--
 tests/qemuxml2argvdata/virtio-options.x86_64-latest.args    | 2 +-
 .../qemuxml2argvdata/virtio-transitional.x86_64-latest.args | 2 +-
 .../qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args  | 2 +-
 .../qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args  | 2 +-
 .../qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args | 2 +-
 .../qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args | 2 +-
 30 files changed, 46 insertions(+), 43 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 4c301c3638..a2031e9aaa 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1539,6 +1539,8 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
     { "nbd-server-start/arg-type/tls-creds", QEMU_CAPS_NBD_TLS },
     { "nbd-server-add/arg-type/bitmap", QEMU_CAPS_NBD_BITMAP },
     { "netdev_add/arg-type/+vhost-vdpa", QEMU_CAPS_NETDEV_VHOST_VDPA },
+    /* JSON support for -netdev was introduced for the 'dgram' netdev type */
+    { "netdev_add/arg-type/type/^dgram", QEMU_CAPS_NETDEV_JSON },
     { "object-add/arg-type/qom-type/^secret", QEMU_CAPS_OBJECT_JSON },
     { "query-display-options/ret-type/+egl-headless/rendernode", QEMU_CAPS_EGL_HEADLESS_RENDERNODE },
     { "query-display-options/ret-type/+sdl", QEMU_CAPS_SDL },
diff --git a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml
index 56d1ff5fa9..6a861eea24 100644
--- a/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml
@@ -178,6 +178,7 @@
   <flag name='virtio-mem-pci'/>
   <flag name='memory-backend-file.reserve'/>
   <flag name='piix4.acpi-root-pci-hotplug'/>
+  <flag name='netdev.json'/>
   <flag name='query-dirty-rate'/>
   <flag name='rbd-encryption'/>
   <flag name='sev-guest-kernel-hashes'/>
diff --git a/tests/qemuxml2argvdata/boot-complex.x86_64-latest.args b/tests/qemuxml2argvdata/boot-complex.x86_64-latest.args
index b3b301b602..f7c0c2420b 100644
--- a/tests/qemuxml2argvdata/boot-complex.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/boot-complex.x86_64-latest.args
@@ -50,9 +50,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -blockdev '{"driver":"host_device","filename":"/dev/fd1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"floppy","unit":1,"drive":"libvirt-1-format","id":"fdc0-0-1"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:11","bootindex":2,"bus":"pci.0","addr":"0x2"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:22","bus":"pci.0","addr":"0x3"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/boot-order.x86_64-latest.args b/tests/qemuxml2argvdata/boot-order.x86_64-latest.args
index bbb27d6831..e3ff8da1af 100644
--- a/tests/qemuxml2argvdata/boot-order.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/boot-order.x86_64-latest.args
@@ -41,7 +41,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -blockdev '{"driver":"file","filename":"/dev/null","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"floppy","unit":1,"drive":"libvirt-1-format","id":"fdc0-0-1"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bootindex":2,"bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x4"}' \
diff --git a/tests/qemuxml2argvdata/channel-unix-guestfwd.x86_64-latest.args b/tests/qemuxml2argvdata/channel-unix-guestfwd.x86_64-latest.args
index 6d34fa71bf..bac33b80ed 100644
--- a/tests/qemuxml2argvdata/channel-unix-guestfwd.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/channel-unix-guestfwd.x86_64-latest.args
@@ -29,9 +29,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -chardev socket,id=charchannel0,fd=1729,server=on,wait=off \
--netdev user,guestfwd=tcp:10.0.2.1:4600-chardev:charchannel0,id=channel0 \
+-netdev '{"type":"user","guestfwd":[{"str":"tcp:10.0.2.1:4600-chardev:charchannel0"}],"id":"channel0"}' \
 -chardev socket,id=charchannel1,path=/tmp/guestfwd-connect.socket \
--netdev user,guestfwd=tcp:10.0.2.1:4601-chardev:charchannel1,id=channel1 \
+-netdev '{"type":"user","guestfwd":[{"str":"tcp:10.0.2.1:4601-chardev:charchannel1"}],"id":"channel1"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/devices-acpi-index.x86_64-latest.args b/tests/qemuxml2argvdata/devices-acpi-index.x86_64-latest.args
index 41136d7d49..f2c3294f9c 100644
--- a/tests/qemuxml2argvdata/devices-acpi-index.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/devices-acpi-index.x86_64-latest.args
@@ -33,11 +33,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-fdr-br/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/test1.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","acpi-index":42,"drive":"libvirt-1-format","id":"virtio-disk1"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.0","addr":"0x5","acpi-index":100}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:55","bus":"pci.0","addr":"0x7","acpi-index":200}' \
--netdev user,id=hostnet2 \
+-netdev '{"type":"user","id":"hostnet2"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet2","id":"net2","mac":"00:11:22:33:44:55","bus":"pci.0","addr":"0x8","acpi-index":300}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"cirrus-vga","id":"video0","bus":"pci.0","addr":"0x2","acpi-index":1729}' \
diff --git a/tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args b/tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args
index 0715c1fb43..ba7f58a9a3 100644
--- a/tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args
@@ -35,7 +35,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"ide-cd","bus":"ide.1","unit":0,"drive":"libvirt-1-format","id":"ide0-1-0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","tx":"bh","ioeventfd":false,"netdev":"hostnet0","id":"net0","mac":"52:54:00:e5:48:58","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \
diff --git a/tests/qemuxml2argvdata/event_idx.x86_64-latest.args b/tests/qemuxml2argvdata/event_idx.x86_64-latest.args
index afdde09e8a..eb3ee51140 100644
--- a/tests/qemuxml2argvdata/event_idx.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/event_idx.x86_64-latest.args
@@ -35,7 +35,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"ide-cd","bus":"ide.1","unit":0,"drive":"libvirt-1-format","id":"ide0-1-0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","event_idx":false,"netdev":"hostnet0","id":"net0","mac":"52:54:00:e5:48:58","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \
diff --git a/tests/qemuxml2argvdata/graphics-spice-timeout.x86_64-latest.args b/tests/qemuxml2argvdata/graphics-spice-timeout.x86_64-latest.args
index 13c4c08e6f..4df15cd124 100644
--- a/tests/qemuxml2argvdata/graphics-spice-timeout.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/graphics-spice-timeout.x86_64-latest.args
@@ -27,7 +27,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-f14/.config \
 -boot menu=on,strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -device '{"driver":"virtio-serial-pci","id":"virtio-serial0","bus":"pci.0","addr":"0x6"}' \
--netdev tap,fd=3,id=hostnet0 \
+-netdev '{"type":"tap","fd":"3","id":"hostnet0"}' \
 -device '{"driver":"rtl8139","netdev":"hostnet0","id":"net0","mac":"52:54:00:71:70:89","bus":"pci.0","addr":"0x7"}' \
 -device '{"driver":"usb-tablet","id":"input0","bus":"usb.0","port":"1"}' \
 -audiodev '{"id":"audio1","driver":"spice"}' \
diff --git a/tests/qemuxml2argvdata/name-escape.x86_64-latest.args b/tests/qemuxml2argvdata/name-escape.x86_64-latest.args
index 42b0ad3230..b09083eadb 100644
--- a/tests/qemuxml2argvdata/name-escape.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/name-escape.x86_64-latest.args
@@ -39,7 +39,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-foo=1,bar=2/.config \
 -chardev file,id=charserial1,path=/dev/fdset/0,append=on \
 -device '{"driver":"isa-serial","chardev":"charserial1","id":"serial1","index":0}' \
 -chardev pipe,id=charchannel0,path=/tmp/guestfwd,,foo \
--netdev user,guestfwd=tcp:10.0.2.1:4600-chardev:charchannel0,id=channel0 \
+-netdev '{"type":"user","guestfwd":[{"str":"tcp:10.0.2.1:4600-chardev:charchannel0"}],"id":"channel0"}' \
 -audiodev '{"id":"audio1","driver":"spice"}' \
 -vnc vnc=unix:/tmp/lib/domain--1-foo=1,,bar=2/vnc.sock,audiodev=audio1 \
 -spice unix,addr=/tmp/lib/domain--1-foo=1,,bar=2/spice.sock,gl=on,rendernode=/dev/dri/foo,,bar,seamless-migration=on \
diff --git a/tests/qemuxml2argvdata/net-user.x86_64-latest.args b/tests/qemuxml2argvdata/net-user.x86_64-latest.args
index 87423d4cad..d8cf677423 100644
--- a/tests/qemuxml2argvdata/net-user.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/net-user.x86_64-latest.args
@@ -31,7 +31,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"rtl8139","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
index 4cb805451a..347573041b 100644
--- a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args
@@ -29,7 +29,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -add-fd set=0,fd=1732,opaque=net0-vdpa \
--netdev vhost-vdpa,vhostdev=/dev/fdset/0,queues=2,id=hostnet0 \
+-netdev '{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","queues":2,"id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","mq":true,"vectors":6,"netdev":"hostnet0","id":"net0","mac":"52:54:00:95:db:c0","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args
index 93fe8fb444..be4f7c4ae2 100644
--- a/tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args
@@ -29,7 +29,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -add-fd set=0,fd=1732,opaque=net0-vdpa \
--netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \
+-netdev '{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:95:db:c0","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args b/tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args
index 1309c28c95..17d9715814 100644
--- a/tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args
@@ -29,12 +29,12 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
 -chardev socket,id=charnet0,path=/tmp/vhost0.sock,server=on \
--netdev vhost-user,chardev=charnet0,id=hostnet0 \
+-netdev '{"type":"vhost-user","chardev":"charnet0","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:ee:96:6b","bus":"pci.0","addr":"0x2"}' \
 -chardev socket,id=charnet1,path=/tmp/vhost1.sock \
--netdev vhost-user,chardev=charnet1,id=hostnet1 \
+-netdev '{"type":"vhost-user","chardev":"charnet1","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"52:54:00:ee:96:6c","bus":"pci.0","addr":"0x3"}' \
--netdev socket,listen=:2015,id=hostnet2 \
+-netdev '{"type":"socket","listen":":2015","id":"hostnet2"}' \
 -device '{"driver":"rtl8139","netdev":"hostnet2","id":"net2","mac":"52:54:00:95:db:c0","bus":"pci.0","addr":"0x4"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args b/tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
index cabea93ba9..2d3f15ecd4 100644
--- a/tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
@@ -31,11 +31,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","rss":true,"netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.0","addr":"0x2"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","hash":true,"netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:66","bus":"pci.0","addr":"0x3"}' \
--netdev user,id=hostnet2 \
+-netdev '{"type":"user","id":"hostnet2"}' \
 -device '{"driver":"virtio-net-pci","rss":false,"hash":true,"netdev":"hostnet2","id":"net2","mac":"00:11:22:33:44:77","bus":"pci.0","addr":"0x4"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x5"}' \
diff --git a/tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args b/tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args
index 7992c33ace..fcb9e9e43f 100644
--- a/tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args
@@ -49,9 +49,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-q35-test/.config \
 -device '{"driver":"virtio-blk-pci","bus":"pci.7","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk1","bootindex":1}' \
 -fsdev local,security_model=passthrough,id=fsdev-fs0,path=/export/to/guest \
 -device '{"driver":"virtio-9p-pci","id":"fs0","fsdev":"fsdev-fs0","mount_tag":"/import/from/host","bus":"pci.1","addr":"0x0"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.2","addr":"0x0"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"e1000e","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:66","bus":"pci.3","addr":"0x0"}' \
 -device '{"driver":"virtio-input-host-pci","id":"input0","evdev":"/dev/input/event1234","bus":"pci.10","addr":"0x0"}' \
 -device '{"driver":"virtio-mouse-pci","id":"input1","bus":"pci.11","addr":"0x0"}' \
diff --git a/tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args b/tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args
index 4a84c2e621..08afee14a4 100644
--- a/tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args
@@ -50,9 +50,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-q35-test/.config \
 -device '{"driver":"virtio-blk-pci","bus":"pci.9","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk1","bootindex":1}' \
 -fsdev local,security_model=passthrough,id=fsdev-fs0,path=/export/to/guest \
 -device '{"driver":"virtio-9p-pci","id":"fs0","fsdev":"fsdev-fs0","mount_tag":"/import/from/host","bus":"pci.3","addr":"0x0"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.4","addr":"0x0"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"e1000e","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:66","bus":"pci.5","addr":"0x0"}' \
 -device '{"driver":"virtio-input-host-pci","id":"input0","evdev":"/dev/input/event1234","bus":"pci.12","addr":"0x0"}' \
 -device '{"driver":"virtio-mouse-pci","id":"input1","bus":"pci.13","addr":"0x0"}' \
diff --git a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args
index 77a7cf5e4f..2f75d79739 100644
--- a/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/q35-virt-manager-basic.x86_64-latest.args
@@ -40,7 +40,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-virt-manager-basic/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/basic.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.4","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:9a:e6:c6","bus":"pci.1","addr":"0x0"}' \
 -chardev pty,id=charserial0 \
 -device '{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
diff --git a/tests/qemuxml2argvdata/user-aliases.x86_64-latest.args b/tests/qemuxml2argvdata/user-aliases.x86_64-latest.args
index d1a3f4af07..1a21437f06 100644
--- a/tests/qemuxml2argvdata/user-aliases.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/user-aliases.x86_64-latest.args
@@ -51,11 +51,11 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-gentoo/.config \
 -blockdev '{"driver":"file","filename":"/home/zippy/tmp/install-amd64-minimal-20140619.iso","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":true,"cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"ide-cd","bus":"ide.1","unit":0,"share-rw":true,"drive":"libvirt-1-format","id":"ua-WhatAnAwesomeCDROM","bootindex":2,"write-cache":"on"}' \
--netdev tap,fd=3,vhost=on,vhostfd=44,id=hostua-CheckoutThisNIC \
+-netdev '{"type":"tap","fd":"3","vhost":true,"vhostfd":"44","id":"hostua-CheckoutThisNIC"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostua-CheckoutThisNIC","id":"ua-CheckoutThisNIC","mac":"52:54:00:d6:c0:0b","bus":"pci.0","addr":"0x3"}' \
--netdev socket,listen=127.0.0.1:1234,id=hostua-WeCanAlsoDoServerMode \
+-netdev '{"type":"socket","listen":"127.0.0.1:1234","id":"hostua-WeCanAlsoDoServerMode"}' \
 -device '{"driver":"rtl8139","netdev":"hostua-WeCanAlsoDoServerMode","id":"ua-WeCanAlsoDoServerMode","mac":"52:54:00:22:c9:42","bus":"pci.0","addr":"0x9"}' \
--netdev socket,connect=127.0.0.1:1234,id=hostua-AndAlsoClientMode \
+-netdev '{"type":"socket","connect":"127.0.0.1:1234","id":"hostua-AndAlsoClientMode"}' \
 -device '{"driver":"rtl8139","netdev":"hostua-AndAlsoClientMode","id":"ua-AndAlsoClientMode","mac":"52:54:00:8c:b1:f8","bus":"pci.0","addr":"0xa"}' \
 -device '{"driver":"ccid-card-emulated","backend":"nss-emulated","id":"smartcard0","bus":"ua-myCCID.0"}' \
 -chardev pty,id=charserial0 \
diff --git a/tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args
index c6c9a98ffe..85193a4fe1 100644
--- a/tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args
@@ -35,7 +35,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test/.config \
 -blockdev '{"driver":"host_device","filename":"/dev/sdfake2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","scsi":true,"bus":"pci.0","addr":"0x5","drive":"libvirt-1-format","id":"virtio-disk1"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","event_idx":false,"netdev":"hostnet0","id":"net0","mac":"52:54:00:e5:48:58","bus":"pci.0","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \
diff --git a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args
index 541c074871..2eafeca9f3 100644
--- a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args
@@ -44,7 +44,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -device '{"driver":"virtio-blk-pci-non-transitional","bus":"pci.5","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
 -fsdev local,security_model=passthrough,id=fsdev-fs0,path=/export/fs1 \
 -device '{"driver":"virtio-9p-pci-non-transitional","id":"fs0","fsdev":"fsdev-fs0","mount_tag":"fs1","bus":"pci.1","addr":"0x0"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci-non-transitional","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.2","addr":"0x0"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"vhost-scsi-pci-non-transitional","wwpn":"naa.5123456789abcde0","vhostfd":"3","id":"hostdev0","bus":"pci.6","addr":"0x0"}' \
diff --git a/tests/qemuxml2argvdata/virtio-options-net-ats.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-options-net-ats.x86_64-latest.args
index c35e26b21f..bb0c1991b0 100644
--- a/tests/qemuxml2argvdata/virtio-options-net-ats.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-options-net-ats.x86_64-latest.args
@@ -28,9 +28,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -no-acpi \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","ats":true,"netdev":"hostnet0","id":"net0","mac":"52:54:56:58:5a:5c","bus":"pci.0","addr":"0x2"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","ats":false,"netdev":"hostnet1","id":"net1","mac":"62:64:66:68:6a:6c","bus":"pci.0","addr":"0x3"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x4"}' \
diff --git a/tests/qemuxml2argvdata/virtio-options-net-iommu.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-options-net-iommu.x86_64-latest.args
index ec0247f42e..a2645f9d4f 100644
--- a/tests/qemuxml2argvdata/virtio-options-net-iommu.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-options-net-iommu.x86_64-latest.args
@@ -28,9 +28,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -no-acpi \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","iommu_platform":true,"netdev":"hostnet0","id":"net0","mac":"52:54:56:58:5a:5c","bus":"pci.0","addr":"0x2"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","iommu_platform":false,"netdev":"hostnet1","id":"net1","mac":"62:64:66:68:6a:6c","bus":"pci.0","addr":"0x3"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x4"}' \
diff --git a/tests/qemuxml2argvdata/virtio-options-net-packed.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-options-net-packed.x86_64-latest.args
index 7aad3173f9..3e06320eee 100644
--- a/tests/qemuxml2argvdata/virtio-options-net-packed.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-options-net-packed.x86_64-latest.args
@@ -28,9 +28,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -no-acpi \
 -boot strict=on \
 -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","packed":true,"netdev":"hostnet0","id":"net0","mac":"52:54:56:58:5a:5c","bus":"pci.0","addr":"0x2"}' \
--netdev user,id=hostnet1 \
+-netdev '{"type":"user","id":"hostnet1"}' \
 -device '{"driver":"virtio-net-pci","packed":false,"netdev":"hostnet1","id":"net1","mac":"62:64:66:68:6a:6c","bus":"pci.0","addr":"0x3"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x4"}' \
diff --git a/tests/qemuxml2argvdata/virtio-options.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-options.x86_64-latest.args
index ff21b4bf4a..3ff0a53fbf 100644
--- a/tests/qemuxml2argvdata/virtio-options.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-options.x86_64-latest.args
@@ -37,7 +37,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -device '{"driver":"virtio-9p-pci","iommu_platform":true,"ats":true,"packed":true,"page-per-vq":true,"id":"fs0","fsdev":"fsdev-fs0","mount_tag":"fs1","bus":"pci.0","addr":"0x3"}' \
 -fsdev local,security_model=mapped,writeout=immediate,id=fsdev-fs1,path=/export/fs2 \
 -device '{"driver":"virtio-9p-pci","iommu_platform":true,"ats":true,"packed":true,"page-per-vq":true,"id":"fs1","fsdev":"fsdev-fs1","mount_tag":"fs2","bus":"pci.0","addr":"0x4"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","iommu_platform":true,"ats":true,"packed":true,"page-per-vq":true,"rss":true,"hash":true,"netdev":"hostnet0","id":"net0","mac":"52:54:56:58:5a:5c","bus":"pci.0","addr":"0x6"}' \
 -device '{"driver":"virtio-mouse-pci","iommu_platform":true,"ats":true,"packed":true,"page-per-vq":true,"id":"input0","bus":"pci.0","addr":"0xe"}' \
 -device '{"driver":"virtio-keyboard-pci","iommu_platform":true,"ats":true,"packed":true,"page-per-vq":true,"id":"input1","bus":"pci.0","addr":"0x10"}' \
diff --git a/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args b/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args
index 6d18698ec7..3cf3959528 100644
--- a/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args
@@ -37,7 +37,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
 -device '{"driver":"virtio-blk-pci-transitional","bus":"pci.2","addr":"0x5","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
 -fsdev local,security_model=passthrough,id=fsdev-fs0,path=/export/fs1 \
 -device '{"driver":"virtio-9p-pci-transitional","id":"fs0","fsdev":"fsdev-fs0","mount_tag":"fs1","bus":"pci.2","addr":"0x1"}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci-transitional","netdev":"hostnet0","id":"net0","mac":"00:11:22:33:44:55","bus":"pci.2","addr":"0x2"}' \
 -audiodev '{"id":"audio1","driver":"none"}' \
 -device '{"driver":"vhost-scsi-pci-transitional","wwpn":"naa.5123456789abcde0","vhostfd":"3","id":"hostdev0","bus":"pci.2","addr":"0x6"}' \
diff --git a/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args
index 56226138bf..ef0b9c620c 100644
--- a/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args
@@ -34,7 +34,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/guest.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x6","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:4c:e3:86","bus":"pci.0","addr":"0x3"}' \
 -chardev pty,id=charserial0 \
 -device '{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
diff --git a/tests/qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args
index 3c4688a89e..aee3161a75 100644
--- a/tests/qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args
@@ -35,7 +35,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/guest.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x5","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:09:a4:37","bus":"pci.0","addr":"0x2"}' \
 -chardev pty,id=charserial0 \
 -device '{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
diff --git a/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args
index 37a1afb897..337103d722 100644
--- a/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args
@@ -41,7 +41,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/guest.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.4","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:d2:70:0b","bus":"pci.1","addr":"0x0"}' \
 -chardev pty,id=charserial0 \
 -device '{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
diff --git a/tests/qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args
index b4d90dff5e..bf8a2f3af9 100644
--- a/tests/qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args
@@ -42,7 +42,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
 -blockdev '{"driver":"file","filename":"/var/lib/libvirt/images/guest.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
 -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}' \
 -device '{"driver":"virtio-blk-pci","bus":"pci.4","addr":"0x0","drive":"libvirt-1-format","id":"virtio-disk0","bootindex":1}' \
--netdev user,id=hostnet0 \
+-netdev '{"type":"user","id":"hostnet0"}' \
 -device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:09:a4:37","bus":"pci.1","addr":"0x0"}' \
 -chardev pty,id=charserial0 \
 -device '{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
-- 
2.37.3
Re: [PATCH] qemu: capabilities: Detect support for JSON args for -netdev
Posted by Michal Prívozník 3 weeks, 3 days ago
On 11/9/22 18:18, Peter Krempa wrote:
> JSON args for -netdev were added as precursor for adding the 'dgram'
> network backend type. Enable the detection and update test cases using
> DO_TEST_CAPS_LATEST.
> 
> Enabling the capability also ensures that the -netdev argument is
> validated against the QAPI schema of 'netdev_add' which was already
> implemented but not enabled.
> 
> The parser supporting JSON was added by qemu commit f3eedcddba3 and
> enabled when adding stream/dgram netdevs in commit 5166fe0ae46.
> 
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> ---
>  src/qemu/qemu_capabilities.c                                | 2 ++
>  tests/qemucapabilitiesdata/caps_7.2.0.x86_64.xml            | 1 +
>  tests/qemuxml2argvdata/boot-complex.x86_64-latest.args      | 4 ++--
>  tests/qemuxml2argvdata/boot-order.x86_64-latest.args        | 2 +-
>  .../channel-unix-guestfwd.x86_64-latest.args                | 4 ++--
>  .../qemuxml2argvdata/devices-acpi-index.x86_64-latest.args  | 6 +++---
>  tests/qemuxml2argvdata/disk-ioeventfd.x86_64-latest.args    | 2 +-
>  tests/qemuxml2argvdata/event_idx.x86_64-latest.args         | 2 +-
>  .../graphics-spice-timeout.x86_64-latest.args               | 2 +-
>  tests/qemuxml2argvdata/name-escape.x86_64-latest.args       | 2 +-
>  tests/qemuxml2argvdata/net-user.x86_64-latest.args          | 2 +-
>  .../qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args | 2 +-
>  tests/qemuxml2argvdata/net-vdpa.x86_64-latest.args          | 2 +-
>  tests/qemuxml2argvdata/net-vhostuser.x86_64-latest.args     | 6 +++---
>  tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args    | 6 +++---
>  tests/qemuxml2argvdata/q35-pcie-autoadd.x86_64-latest.args  | 4 ++--
>  tests/qemuxml2argvdata/q35-pcie.x86_64-latest.args          | 4 ++--
>  .../q35-virt-manager-basic.x86_64-latest.args               | 2 +-
>  tests/qemuxml2argvdata/user-aliases.x86_64-latest.args      | 6 +++---
>  tests/qemuxml2argvdata/virtio-lun.x86_64-latest.args        | 2 +-
>  .../virtio-non-transitional.x86_64-latest.args              | 2 +-
>  .../virtio-options-net-ats.x86_64-latest.args               | 4 ++--
>  .../virtio-options-net-iommu.x86_64-latest.args             | 4 ++--
>  .../virtio-options-net-packed.x86_64-latest.args            | 4 ++--
>  tests/qemuxml2argvdata/virtio-options.x86_64-latest.args    | 2 +-
>  .../qemuxml2argvdata/virtio-transitional.x86_64-latest.args | 2 +-
>  .../qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args  | 2 +-
>  .../qemuxml2argvdata/x86_64-pc-headless.x86_64-latest.args  | 2 +-
>  .../qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args | 2 +-
>  .../qemuxml2argvdata/x86_64-q35-headless.x86_64-latest.args | 2 +-
>  30 files changed, 46 insertions(+), 43 deletions(-)

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Michal
Re: [PATCH] qemu: capabilities: Detect support for JSON args for -netdev
Posted by Peter Krempa 3 weeks, 3 days ago
On Wed, Nov 09, 2022 at 18:18:16 +0100, Peter Krempa wrote:
> JSON args for -netdev were added as precursor for adding the 'dgram'
> network backend type. Enable the detection and update test cases using
> DO_TEST_CAPS_LATEST.
> 
> Enabling the capability also ensures that the -netdev argument is
> validated against the QAPI schema of 'netdev_add' which was already
> implemented but not enabled.
> 
> The parser supporting JSON was added by qemu commit f3eedcddba3 and

https://gitlab.com/qemu-project/qemu/-/commit/f3eedcddba3#28a48d37e50f9c5a429dcaef8c866d9e6b4ad469_1586_1636

You can see that it uses the visitor for 'Netdev' which is the type also
used as argument for 'netdev_add'. Our internals generate a JSON object
for both cases and just convert it to commandline if JSON is not used.

> enabled when adding stream/dgram netdevs in commit 5166fe0ae46.

https://gitlab.com/qemu-project/qemu/-/commit/5166fe0ae46#28a48d37e50f9c5a429dcaef8c866d9e6b4ad469_1628_1642

Here it explicitly detects opening { as modern syntax.