This series add support for talking to QEMU guest agent via a vsock
transport.
This transport is attempted when there's no ready virtio-serial channels
**and** the domain has a usable vsock CID.
AF_VSOCK are sockets too, so most of the virtio-serial/UNIX socket code
is reused for everything except the connection lifecycle management
(that is, initial connection etc.).
Since QGA has no readiness notification mechanism for vsock transport,
unlike for virtio-serial transport, we have to knock on the port to
probe for readiness. For that, a custom backoff logic with cancellation
support is implemented.
Both the new virVsockConnectQuiet helper and the vsock QGA connection
logic itself are covered by new tests.
Polina Vishneva (6):
util: Add virVsockConnectQuiet helper
qemu: Extract qemuProcessResetAgent helper
qemu: Add qemuDomainVsockHasGuestCid helper
qemu: Support AF_VSOCK transport for QGA communication
tests: Add a unit test for virVsockConnectQuiet()
tests: Add a test for qemuConnectAgent() to cover the vsock path
src/hypervisor/qemu_agent.c | 73 +++++----
src/hypervisor/qemu_agent.h | 9 ++
src/libvirt_private.syms | 2 +
src/qemu/qemu_domain.c | 28 +++-
src/qemu/qemu_domain.h | 8 +
src/qemu/qemu_driver.c | 16 +-
src/qemu/qemu_hotplug.c | 6 +
src/qemu/qemu_process.c | 305 +++++++++++++++++++++++++++++++----
src/qemu/qemu_process.h | 2 +
src/util/virvsock.c | 71 +++++++-
src/util/virvsock.h | 10 ++
tests/meson.build | 3 +
tests/qemuagenttest.c | 43 ++++-
tests/qemumonitortestutils.c | 119 +++++++++++++-
tests/qemumonitortestutils.h | 4 +
tests/qemuvsockagentmock.c | 65 ++++++++
tests/virvsockmock.c | 143 ++++++++++++++++
tests/virvsocktest.c | 133 +++++++++++++++
18 files changed, 963 insertions(+), 77 deletions(-)
create mode 100644 tests/qemuvsockagentmock.c
create mode 100644 tests/virvsockmock.c
create mode 100644 tests/virvsocktest.c
--
2.54.0