You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
434 lines
20 KiB
434 lines
20 KiB
From 49497c4111df88d3fc4a4f0c115cc7fa0d60a8ee Mon Sep 17 00:00:00 2001
|
|
Message-ID: <49497c4111df88d3fc4a4f0c115cc7fa0d60a8ee.1787144197.git.jdenemar@redhat.com>
|
|
From: Roman Bogorodskiy <bogorodskiy@gmail.com>
|
|
Date: Sat, 18 Jul 2026 12:58:33 +0200
|
|
Subject: [PATCH] qemu: move qemuAgent*InfoFormatParams to
|
|
hypervisor/qemu_agent.c
|
|
|
|
Move:
|
|
|
|
* qemuAgentDiskInfoFormatParams
|
|
* qemuAgentFSInfoFormatParams
|
|
* virDomainInterfaceFormatParams
|
|
|
|
from the qemu driver to hypervisor/qemu_agent.c so they could be reused
|
|
by the other drivers implementing virDomainGetGuestInfo() using the qemu
|
|
agent.
|
|
|
|
Also, rename virDomainInterfaceFormatParams() to
|
|
qemuAgentInterfaceFormatParams() to follow the common naming schema as
|
|
it's not really used outside of the qemu agent related code.
|
|
|
|
Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
|
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
(cherry picked from commit c2b1b9f7454e2f23b8e1bdfc9005c9e4dcdbccb5)
|
|
Resolves: https://redhat.atlassian.net/browse/RHEL-235731
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
---
|
|
src/hypervisor/qemu_agent.c | 162 ++++++++++++++++++++++++++++++++++++
|
|
src/hypervisor/qemu_agent.h | 17 ++++
|
|
src/libvirt_private.syms | 3 +
|
|
src/qemu/qemu_driver.c | 162 +-----------------------------------
|
|
4 files changed, 183 insertions(+), 161 deletions(-)
|
|
|
|
diff --git a/src/hypervisor/qemu_agent.c b/src/hypervisor/qemu_agent.c
|
|
index e549947fbf..418386317d 100644
|
|
--- a/src/hypervisor/qemu_agent.c
|
|
+++ b/src/hypervisor/qemu_agent.c
|
|
@@ -2681,3 +2681,165 @@ qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo,
|
|
}
|
|
return ret;
|
|
}
|
|
+
|
|
+
|
|
+void
|
|
+qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info,
|
|
+ int ndisks,
|
|
+ virDomainDef *vmdef,
|
|
+ virTypedParamList *list)
|
|
+{
|
|
+ size_t i;
|
|
+
|
|
+ virTypedParamListAddUInt(list, ndisks, VIR_DOMAIN_GUEST_INFO_DISK_COUNT);
|
|
+
|
|
+ for (i = 0; i < ndisks; i++) {
|
|
+ virTypedParamListAddString(list, info[i]->name,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_NAME, i);
|
|
+ virTypedParamListAddBoolean(list, info[i]->partition,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_PARTITION, i);
|
|
+
|
|
+ if (info[i]->dependencies) {
|
|
+ size_t ndeps = g_strv_length(info[i]->dependencies);
|
|
+ size_t j;
|
|
+
|
|
+ if (ndeps > 0)
|
|
+ virTypedParamListAddUInt(list, ndeps,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_COUNT, i);
|
|
+
|
|
+ for (j = 0; j < ndeps; j++) {
|
|
+ virTypedParamListAddString(list, info[i]->dependencies[j],
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (info[i]->address) {
|
|
+ qemuAgentDiskAddress *address = info[i]->address;
|
|
+ virDomainDiskDef *diskdef = NULL;
|
|
+
|
|
+ if (address->serial)
|
|
+ virTypedParamListAddString(list, address->serial,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i);
|
|
+
|
|
+ /* match the disk to the target in the vm definition */
|
|
+ diskdef = virDomainDiskByAddress(vmdef,
|
|
+ &address->pci_controller,
|
|
+ address->ccw_addr,
|
|
+ address->bus,
|
|
+ address->target,
|
|
+ address->unit);
|
|
+
|
|
+ if (diskdef && diskdef->dst)
|
|
+ virTypedParamListAddString(list, diskdef->dst,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i);
|
|
+
|
|
+ if (address->bus_type)
|
|
+ virTypedParamListAddString(list, address->bus_type,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_BUS, i);
|
|
+ }
|
|
+
|
|
+ if (info[i]->alias)
|
|
+ virTypedParamListAddString(list, info[i]->alias,
|
|
+ VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_ALIAS, i);
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+void
|
|
+qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo,
|
|
+ int nfs,
|
|
+ virDomainDef *vmdef,
|
|
+ virTypedParamList *list)
|
|
+{
|
|
+ size_t i;
|
|
+
|
|
+ virTypedParamListAddUInt(list, nfs, VIR_DOMAIN_GUEST_INFO_FS_COUNT);
|
|
+
|
|
+ for (i = 0; i < nfs; i++) {
|
|
+ size_t j;
|
|
+
|
|
+ virTypedParamListAddString(list, fsinfo[i]->name,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i);
|
|
+ virTypedParamListAddString(list, fsinfo[i]->mountpoint,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i);
|
|
+ virTypedParamListAddString(list, fsinfo[i]->fstype,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_FSTYPE, i);
|
|
+
|
|
+ /* disk usage values are not returned by older guest agents, so
|
|
+ * only add the params if the value is set */
|
|
+ if (fsinfo[i]->total_bytes != -1)
|
|
+ virTypedParamListAddULLong(list, fsinfo[i]->total_bytes,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i);
|
|
+ if (fsinfo[i]->used_bytes != -1)
|
|
+ virTypedParamListAddULLong(list, fsinfo[i]->used_bytes,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_USED_BYTES, i);
|
|
+
|
|
+ virTypedParamListAddUInt(list, fsinfo[i]->ndisks,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_COUNT, i);
|
|
+
|
|
+ for (j = 0; j < fsinfo[i]->ndisks; j++) {
|
|
+ virDomainDiskDef *diskdef = NULL;
|
|
+ qemuAgentDiskAddress *d = fsinfo[i]->disks[j];
|
|
+
|
|
+ /* match the disk to the target in the vm definition */
|
|
+ diskdef = virDomainDiskByAddress(vmdef,
|
|
+ &d->pci_controller,
|
|
+ d->ccw_addr,
|
|
+ d->bus,
|
|
+ d->target,
|
|
+ d->unit);
|
|
+ if (diskdef && diskdef->dst)
|
|
+ virTypedParamListAddString(list, diskdef->dst,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_ALIAS, i, j);
|
|
+
|
|
+ if (d->serial)
|
|
+ virTypedParamListAddString(list, d->serial,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_SERIAL, i, j);
|
|
+
|
|
+ if (d->devnode)
|
|
+ virTypedParamListAddString(list, d->devnode,
|
|
+ VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_DEVICE, i, j);
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+void
|
|
+qemuAgentInterfaceFormatParams(virDomainInterfacePtr *ifaces,
|
|
+ int nifaces,
|
|
+ virTypedParamList *list)
|
|
+{
|
|
+ size_t i;
|
|
+
|
|
+ virTypedParamListAddUInt(list, nifaces, VIR_DOMAIN_GUEST_INFO_IF_COUNT);
|
|
+
|
|
+ for (i = 0; i < nifaces; i++) {
|
|
+ size_t j;
|
|
+
|
|
+ virTypedParamListAddString(list, ifaces[i]->name,
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i);
|
|
+ virTypedParamListAddString(list, ifaces[i]->hwaddr,
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_HWADDR, i);
|
|
+ virTypedParamListAddUInt(list, ifaces[i]->naddrs,
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_COUNT, i);
|
|
+
|
|
+ for (j = 0; j < ifaces[i]->naddrs; j++) {
|
|
+ switch (ifaces[i]->addrs[j].type) {
|
|
+ case VIR_IP_ADDR_TYPE_IPV4:
|
|
+ virTypedParamListAddString(list, "ipv4",
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j);
|
|
+ break;
|
|
+
|
|
+ case VIR_IP_ADDR_TYPE_IPV6:
|
|
+ virTypedParamListAddString(list, "ipv6",
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j);
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ virTypedParamListAddString(list, ifaces[i]->addrs[j].addr,
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_ADDR, i, j);
|
|
+ virTypedParamListAddUInt(list, ifaces[i]->addrs[j].prefix,
|
|
+ VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_PREFIX, i, j);
|
|
+ }
|
|
+ }
|
|
+}
|
|
diff --git a/src/hypervisor/qemu_agent.h b/src/hypervisor/qemu_agent.h
|
|
index 3dbc3baec1..def6f983d4 100644
|
|
--- a/src/hypervisor/qemu_agent.h
|
|
+++ b/src/hypervisor/qemu_agent.h
|
|
@@ -201,3 +201,20 @@ int qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo,
|
|
int nagentinfo,
|
|
virDomainDef *vmdef,
|
|
virDomainFSInfoPtr **info);
|
|
+
|
|
+void
|
|
+qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info,
|
|
+ int ndisks,
|
|
+ virDomainDef *vmdef,
|
|
+ virTypedParamList *list);
|
|
+
|
|
+void
|
|
+qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo,
|
|
+ int nfs,
|
|
+ virDomainDef *vmdef,
|
|
+ virTypedParamList *list);
|
|
+
|
|
+void
|
|
+qemuAgentInterfaceFormatParams(virDomainInterfacePtr *ifaces,
|
|
+ int nifaces,
|
|
+ virTypedParamList *list);
|
|
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
index c76e5cb08a..02bd505749 100644
|
|
--- a/src/libvirt_private.syms
|
|
+++ b/src/libvirt_private.syms
|
|
@@ -1716,9 +1716,11 @@ virDomainInterfaceVportRemove;
|
|
# hypervisor/qemu_agent.h
|
|
qemuAgentArbitraryCommand;
|
|
qemuAgentClose;
|
|
+qemuAgentDiskInfoFormatParams;
|
|
qemuAgentDiskInfoFree;
|
|
qemuAgentFSFreeze;
|
|
qemuAgentFSInfoFormat;
|
|
+qemuAgentFSInfoFormatParams;
|
|
qemuAgentFSInfoFree;
|
|
qemuAgentFSThaw;
|
|
qemuAgentFSTrim;
|
|
@@ -1732,6 +1734,7 @@ qemuAgentGetTime;
|
|
qemuAgentGetTimezone;
|
|
qemuAgentGetUsers;
|
|
qemuAgentGetVCPUs;
|
|
+qemuAgentInterfaceFormatParams;
|
|
qemuAgentNotifyClose;
|
|
qemuAgentNotifyEvent;
|
|
qemuAgentOpen;
|
|
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
index b90a7b07d4..c7892161e3 100644
|
|
--- a/src/qemu/qemu_driver.c
|
|
+++ b/src/qemu/qemu_driver.c
|
|
@@ -20014,166 +20014,6 @@ qemuDomainGetGuestInfoCheckSupport(unsigned int types,
|
|
}
|
|
|
|
|
|
-static void
|
|
-qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info,
|
|
- int ndisks,
|
|
- virDomainDef *vmdef,
|
|
- virTypedParamList *list)
|
|
-{
|
|
- size_t i;
|
|
-
|
|
- virTypedParamListAddUInt(list, ndisks, VIR_DOMAIN_GUEST_INFO_DISK_COUNT);
|
|
-
|
|
- for (i = 0; i < ndisks; i++) {
|
|
- virTypedParamListAddString(list, info[i]->name,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_NAME, i);
|
|
- virTypedParamListAddBoolean(list, info[i]->partition,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_PARTITION, i);
|
|
-
|
|
- if (info[i]->dependencies) {
|
|
- size_t ndeps = g_strv_length(info[i]->dependencies);
|
|
- size_t j;
|
|
-
|
|
- if (ndeps > 0)
|
|
- virTypedParamListAddUInt(list, ndeps,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_COUNT, i);
|
|
-
|
|
- for (j = 0; j < ndeps; j++) {
|
|
- virTypedParamListAddString(list, info[i]->dependencies[j],
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j);
|
|
- }
|
|
- }
|
|
-
|
|
- if (info[i]->address) {
|
|
- qemuAgentDiskAddress *address = info[i]->address;
|
|
- virDomainDiskDef *diskdef = NULL;
|
|
-
|
|
- if (address->serial)
|
|
- virTypedParamListAddString(list, address->serial,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i);
|
|
-
|
|
- /* match the disk to the target in the vm definition */
|
|
- diskdef = virDomainDiskByAddress(vmdef,
|
|
- &address->pci_controller,
|
|
- address->ccw_addr,
|
|
- address->bus,
|
|
- address->target,
|
|
- address->unit);
|
|
-
|
|
- if (diskdef && diskdef->dst)
|
|
- virTypedParamListAddString(list, diskdef->dst,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i);
|
|
-
|
|
- if (address->bus_type)
|
|
- virTypedParamListAddString(list, address->bus_type,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_BUS, i);
|
|
- }
|
|
-
|
|
- if (info[i]->alias)
|
|
- virTypedParamListAddString(list, info[i]->alias,
|
|
- VIR_DOMAIN_GUEST_INFO_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_GUEST_ALIAS, i);
|
|
- }
|
|
-}
|
|
-
|
|
-
|
|
-static void
|
|
-qemuAgentFSInfoFormatParams(qemuAgentFSInfo **fsinfo,
|
|
- int nfs,
|
|
- virDomainDef *vmdef,
|
|
- virTypedParamList *list)
|
|
-{
|
|
- size_t i;
|
|
-
|
|
- virTypedParamListAddUInt(list, nfs, VIR_DOMAIN_GUEST_INFO_FS_COUNT);
|
|
-
|
|
- for (i = 0; i < nfs; i++) {
|
|
- size_t j;
|
|
-
|
|
- virTypedParamListAddString(list, fsinfo[i]->name,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i);
|
|
- virTypedParamListAddString(list, fsinfo[i]->mountpoint,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i);
|
|
- virTypedParamListAddString(list, fsinfo[i]->fstype,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_FSTYPE, i);
|
|
-
|
|
- /* disk usage values are not returned by older guest agents, so
|
|
- * only add the params if the value is set */
|
|
- if (fsinfo[i]->total_bytes != -1)
|
|
- virTypedParamListAddULLong(list, fsinfo[i]->total_bytes,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i);
|
|
- if (fsinfo[i]->used_bytes != -1)
|
|
- virTypedParamListAddULLong(list, fsinfo[i]->used_bytes,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_USED_BYTES, i);
|
|
-
|
|
- virTypedParamListAddUInt(list, fsinfo[i]->ndisks,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_COUNT, i);
|
|
-
|
|
- for (j = 0; j < fsinfo[i]->ndisks; j++) {
|
|
- virDomainDiskDef *diskdef = NULL;
|
|
- qemuAgentDiskAddress *d = fsinfo[i]->disks[j];
|
|
-
|
|
- /* match the disk to the target in the vm definition */
|
|
- diskdef = virDomainDiskByAddress(vmdef,
|
|
- &d->pci_controller,
|
|
- d->ccw_addr,
|
|
- d->bus,
|
|
- d->target,
|
|
- d->unit);
|
|
- if (diskdef && diskdef->dst)
|
|
- virTypedParamListAddString(list, diskdef->dst,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_ALIAS, i, j);
|
|
-
|
|
- if (d->serial)
|
|
- virTypedParamListAddString(list, d->serial,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_SERIAL, i, j);
|
|
-
|
|
- if (d->devnode)
|
|
- virTypedParamListAddString(list, d->devnode,
|
|
- VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_DEVICE, i, j);
|
|
- }
|
|
- }
|
|
-}
|
|
-
|
|
-static void
|
|
-virDomainInterfaceFormatParams(virDomainInterfacePtr *ifaces,
|
|
- int nifaces,
|
|
- virTypedParamList *list)
|
|
-{
|
|
- size_t i;
|
|
-
|
|
- virTypedParamListAddUInt(list, nifaces, VIR_DOMAIN_GUEST_INFO_IF_COUNT);
|
|
-
|
|
- for (i = 0; i < nifaces; i++) {
|
|
- size_t j;
|
|
-
|
|
- virTypedParamListAddString(list, ifaces[i]->name,
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i);
|
|
- virTypedParamListAddString(list, ifaces[i]->hwaddr,
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_HWADDR, i);
|
|
- virTypedParamListAddUInt(list, ifaces[i]->naddrs,
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_COUNT, i);
|
|
-
|
|
- for (j = 0; j < ifaces[i]->naddrs; j++) {
|
|
- switch (ifaces[i]->addrs[j].type) {
|
|
- case VIR_IP_ADDR_TYPE_IPV4:
|
|
- virTypedParamListAddString(list, "ipv4",
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j);
|
|
- break;
|
|
-
|
|
- case VIR_IP_ADDR_TYPE_IPV6:
|
|
- virTypedParamListAddString(list, "ipv6",
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j);
|
|
- break;
|
|
- }
|
|
-
|
|
- virTypedParamListAddString(list, ifaces[i]->addrs[j].addr,
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_ADDR, i, j);
|
|
- virTypedParamListAddUInt(list, ifaces[i]->addrs[j].prefix,
|
|
- VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_PREFIX, i, j);
|
|
- }
|
|
- }
|
|
-}
|
|
-
|
|
static int
|
|
qemuDomainGetGuestInfo(virDomainPtr dom,
|
|
unsigned int types,
|
|
@@ -20300,7 +20140,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
|
|
}
|
|
|
|
if (nifaces > 0) {
|
|
- virDomainInterfaceFormatParams(ifaces, nifaces, list);
|
|
+ qemuAgentInterfaceFormatParams(ifaces, nifaces, list);
|
|
}
|
|
|
|
if (format_load) {
|
|
--
|
|
2.55.0
|
|
|