From nobody Wed Sep 23 09:01:40 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1784379789; cv=none; d=zohomail.com; s=zohoarc; b=XoHqemsLaRa+Hut2xpIoe19XsZEbGEp8BP1QDacpV74m4U02qqgVF1qCoUqKZSk3S0sf9Armg9qbSCjYHlAs5esVLRlIX39GpPREDjr0zkdWiU9Tb8bEAvLY4Orlh2mAnUABrok2IVgnwtedUOR0tnxdtijkSNJz3luy1AtGQ18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784379789; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=mSaQsPX1gV5S6AtA8nAPidi6SwbhEgsqqEDfHWdmQDs=; b=Fue97KfpHr+5hWCTZNO6HpIvC48UyjPhxXfXDjoFsVElhAiMGAeZ+BSpKnkmj7OEhVEB8gKjLEMFooBOOYaxujHjB7CBAPCyjgToOOPN7LAoBE1+0P+oRplWaaNB1jrbqiprmy05Tv8xXMyEh1BZQ7YNPrfgiOcwD3N2bYDx040= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1784379789790325.1207394135962; Sat, 18 Jul 2026 06:03:09 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3254F41B88; Sat, 18 Jul 2026 09:03:08 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id A2C56423F0; Sat, 18 Jul 2026 08:58:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 475694196F; Sat, 18 Jul 2026 08:58:32 -0400 (EDT) Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 70D7741AC2 for ; Sat, 18 Jul 2026 08:58:30 -0400 (EDT) Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-c15e592da74so1080826266b.1 for ; Sat, 18 Jul 2026 05:58:30 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1740bf48d9sm209276066b.57.2026.07.18.05.58.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jul 2026 05:58:28 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784379509; x=1784984309; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mSaQsPX1gV5S6AtA8nAPidi6SwbhEgsqqEDfHWdmQDs=; b=dVJ8fAMBznrSrPosHczZ+QbQsiPfrhQv30AW7kCizWbWhy6Vd9W8rpef3E/M/7//Bk tbE8BsIBBdDd825U3Pl+CaIKW40X2MaNqthqDzrBJrV7hfYZDkfHnJS7XyT5N+gnCzxw PkWSxLGXFHG9/HMER6MYT2uA605uWUT3pZMT/rGJ2YuOd2xyRRonLwRApD1ogCqBT1bo CHdjQTf4yUSleQlZOvzXeSQLUCkCoZa3jPDFBNYzkCBVI+OS4w+cE45BeMrvWh0XsJwy 9Nu4R+czZO3iuQkhDmJaS5GgqhFFZ/ZaZv0rjwFx3VoZx7O+sawn61atczTs+r549Ux5 Acig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784379509; x=1784984309; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mSaQsPX1gV5S6AtA8nAPidi6SwbhEgsqqEDfHWdmQDs=; b=GGWlVdCvbyexoxWk/VFTVk2C5Q4QebRAq5/83bWSVjuhSTY8hWoQwrxeNBdeeSlWIh WEWSf9KDIeasWqGgj4RqiRrwrW8qamffN4CYgjl7xScFWELUma+AQ2Z76zAMR5H/VMye bnpVy5f6kwel4SM+NJahVVPc9pHCbFzFZmdA3Fcvvi6XCH0jUkefcPo0cdke6N88l8TL fj3gT9S5XWb/YtzUc0Mv4LY3O86v4e0rwvTYl1QOOG26or34z/ZDDfDdfEXvsISc48oY tAm9RRrvVV5nLjldIv7dg2ti9eIvRxT/vCbFTKT4fxESJN/5TkiDwgBRIwN0DQnoqJ/1 3TgA== X-Gm-Message-State: AOJu0YyQ1jTtycOq4LsraNGpH2QT2BYXfA2lEhOsM7LrXp8VHzxxvKrp y+cZfqL8RMcowj8TLNBz5he+sRJtw/NIvGQ775PCcDi5jmm2E/XhgMCdUprXhaLi X-Gm-Gg: AfdE7clGA8gBi77RoGl3C7kfCtW/QKdPNYUC/ug3Y0rBOfX7EZX7hovFFqMe3PlKwS7 L0dNTzIJ6VNDuSoln8i+Y4YnXo6E4MhnpWEQhLxfdws6sijioLtv2H0LOus31isLcmsccrX6b32 bA95azCvyPkMhLDn/iRUazVK958o+yjacGAIdY3bfkIjxzO4J1INLBI80Hw+9LG0EcICiA6OHPF UYX5N0bmD2MrODr7i9Bh5HjYu+RFz05W5Dr2Ui0wQXwN1LuanGoxqs9JeMkQvF9ihf6x/UOPvoF 5scebHoiSH8AH7VAkdxYJEt/3DWFTF95rgjcXc+otob/rYuaTfj/XXwpZjDyQSRno+ru+kYtXez tfrP49hFDLSKLDQlIHAMhWcCD4WL8WkgPD9JlMXqeFzgiRPoBSAKNcpg79ymL3GvB+svH/QKfSx LdEoOARfri4wSPuKlnXYTxhItT3C7tIaQoQaDLfpbJRucUbWzU42Wljv4D8sMzsYLHj7b0iFe83 nqSdfd/VGcad2Mn95Drv3L857Y= X-Received: by 2002:a17:907:1b1c:b0:c12:36ff:6eb2 with SMTP id a640c23a62f3a-c16b4835596mr318197066b.51.1784379508820; Sat, 18 Jul 2026 05:58:28 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/2] qemu: move qemuAgent*InfoFormatParams to hypervisor/qemu_agent.c Date: Sat, 18 Jul 2026 14:57:54 +0200 Message-ID: <20260718125755.6953-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260718125755.6953-1-bogorodskiy@gmail.com> References: <20260718125755.6953-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6RITWLE245N7E4I5L4BP2T3UXDX3QTAZ X-Message-ID-Hash: 6RITWLE245N7E4I5L4BP2T3UXDX3QTAZ X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1784379791558158500 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Peter Krempa --- src/hypervisor/qemu_agent.c | 159 +++++++++++++++++++++++++++++++++++ src/hypervisor/qemu_agent.h | 17 ++++ src/libvirt_private.syms | 3 + src/qemu/qemu_driver.c | 162 +----------------------------------- 4 files changed, 180 insertions(+), 161 deletions(-) diff --git a/src/hypervisor/qemu_agent.c b/src/hypervisor/qemu_agent.c index e549947fbf..36134e3cc2 100644 --- a/src/hypervisor/qemu_agent.c +++ b/src/hypervisor/qemu_agent.c @@ -2681,3 +2681,162 @@ 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_COUN= T); + + for (i =3D 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 =3D 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 =3D 0; j < ndeps; j++) { + virTypedParamListAddString(list, info[i]->dependencies[j], + VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMA= IN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j); + } + } + + if (info[i]->address) { + qemuAgentDiskAddress *address =3D info[i]->address; + virDomainDiskDef *diskdef =3D NULL; + + if (address->serial) + virTypedParamListAddString(list, address->serial, + VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i); + + /* match the disk to the target in the vm definition */ + diskdef =3D 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_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i); + + if (address->bus_type) + virTypedParamListAddString(list, address->bus_type, + VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%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 =3D 0; i < nfs; i++) { + size_t j; + + virTypedParamListAddString(list, fsinfo[i]->name, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i); + virTypedParamListAddString(list, fsinfo[i]->mountpoint, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i); + virTypedParamListAddString(list, fsinfo[i]->fstype, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_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 !=3D -1) + virTypedParamListAddULLong(list, fsinfo[i]->total_bytes, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%z= u" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i); + if (fsinfo[i]->used_bytes !=3D -1) + virTypedParamListAddULLong(list, fsinfo[i]->used_bytes, + VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%z= u" 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 =3D 0; j < fsinfo[i]->ndisks; j++) { + virDomainDiskDef *diskdef =3D NULL; + qemuAgentDiskAddress *d =3D fsinfo[i]->disks[j]; + + /* match the disk to the target in the vm definition */ + diskdef =3D 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_I= NFO_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_I= NFO_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_I= NFO_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 =3D 0; i < nifaces; i++) { + size_t j; + + virTypedParamListAddString(list, ifaces[i]->name, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i); + virTypedParamListAddString(list, ifaces[i]->hwaddr, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" V= IR_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 =3D 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_PR= EFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUE= ST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); + break; + + case VIR_IP_ADDR_TYPE_IPV6: + virTypedParamListAddString(list, "ipv6", + VIR_DOMAIN_GUEST_INFO_IF_PR= EFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUE= ST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); + break; + } + + virTypedParamListAddString(list, ifaces[i]->addrs[j].addr, + VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%z= u" 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 bdc0cff66a..8185a078d5 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19964,166 +19964,6 @@ qemuDomainGetGuestInfoCheckSupport(unsigned int t= ypes, } =20 =20 -static void -qemuAgentDiskInfoFormatParams(qemuAgentDiskInfo **info, - int ndisks, - virDomainDef *vmdef, - virTypedParamList *list) -{ - size_t i; - - virTypedParamListAddUInt(list, ndisks, VIR_DOMAIN_GUEST_INFO_DISK_COUN= T); - - for (i =3D 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 =3D 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 =3D 0; j < ndeps; j++) { - virTypedParamListAddString(list, info[i]->dependencies[j], - VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX "%zu" VIR_DOMA= IN_GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME, i, j); - } - } - - if (info[i]->address) { - qemuAgentDiskAddress *address =3D info[i]->address; - virDomainDiskDef *diskdef =3D NULL; - - if (address->serial) - virTypedParamListAddString(list, address->serial, - VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_SERIAL, i); - - /* match the disk to the target in the vm definition */ - diskdef =3D 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_PREF= IX "%zu" VIR_DOMAIN_GUEST_INFO_DISK_SUFFIX_ALIAS, i); - - if (address->bus_type) - virTypedParamListAddString(list, address->bus_type, - VIR_DOMAIN_GUEST_INFO_DISK_PREF= IX "%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 =3D 0; i < nfs; i++) { - size_t j; - - virTypedParamListAddString(list, fsinfo[i]->name, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_FS_SUFFIX_NAME, i); - virTypedParamListAddString(list, fsinfo[i]->mountpoint, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_FS_SUFFIX_MOUNTPOINT, i); - virTypedParamListAddString(list, fsinfo[i]->fstype, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%zu" V= IR_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 !=3D -1) - virTypedParamListAddULLong(list, fsinfo[i]->total_bytes, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%z= u" VIR_DOMAIN_GUEST_INFO_FS_SUFFIX_TOTAL_BYTES, i); - if (fsinfo[i]->used_bytes !=3D -1) - virTypedParamListAddULLong(list, fsinfo[i]->used_bytes, - VIR_DOMAIN_GUEST_INFO_FS_PREFIX "%z= u" 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 =3D 0; j < fsinfo[i]->ndisks; j++) { - virDomainDiskDef *diskdef =3D NULL; - qemuAgentDiskAddress *d =3D fsinfo[i]->disks[j]; - - /* match the disk to the target in the vm definition */ - diskdef =3D 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_I= NFO_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_I= NFO_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_I= NFO_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 =3D 0; i < nifaces; i++) { - size_t j; - - virTypedParamListAddString(list, ifaces[i]->name, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" V= IR_DOMAIN_GUEST_INFO_IF_SUFFIX_NAME, i); - virTypedParamListAddString(list, ifaces[i]->hwaddr, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%zu" V= IR_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 =3D 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_PR= EFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUE= ST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); - break; - - case VIR_IP_ADDR_TYPE_IPV6: - virTypedParamListAddString(list, "ipv6", - VIR_DOMAIN_GUEST_INFO_IF_PR= EFIX "%zu" VIR_DOMAIN_GUEST_INFO_IF_SUFFIX_ADDR_PREFIX "%zu" VIR_DOMAIN_GUE= ST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE, i, j); - break; - } - - virTypedParamListAddString(list, ifaces[i]->addrs[j].addr, - VIR_DOMAIN_GUEST_INFO_IF_PREFIX "%z= u" 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, @@ -20250,7 +20090,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom, } =20 if (nifaces > 0) { - virDomainInterfaceFormatParams(ifaces, nifaces, list); + qemuAgentInterfaceFormatParams(ifaces, nifaces, list); } =20 if (format_load) { --=20 2.52.0