From nobody Mon Feb 9 05:01:54 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1492694113196327.4176752422628; Thu, 20 Apr 2017 06:15:13 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B7BE981240; Thu, 20 Apr 2017 13:15:09 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DEEA2189F3; Thu, 20 Apr 2017 13:15:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 51EB65EC62; Thu, 20 Apr 2017 13:14:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v3KD6BNF027886 for ; Thu, 20 Apr 2017 09:06:11 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5D55977E55; Thu, 20 Apr 2017 13:06:11 +0000 (UTC) Received: from beluga.usersys.redhat.com (dhcp129-94.brq.redhat.com [10.34.129.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8E2EB5C886; Thu, 20 Apr 2017 13:06:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B7BE981240 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B7BE981240 From: Erik Skultety To: libvir-list@redhat.com Date: Thu, 20 Apr 2017 15:05:52 +0200 Message-Id: <4f047973cec6f1c3bb658152ca88d2168f2b3426.1492692115.git.eskultet@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: Erik Skultety Subject: [libvirt] [PATCH v2 02/10] conf: nodedev: Split virNodeDeviceDefFormat into more functions X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 20 Apr 2017 13:15:11 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Make the code look cleaner by moving the capability specific bits into separate functions. Signed-off-by: Erik Skultety --- src/conf/node_device_conf.c | 578 ++++++++++++++++++++++++----------------= ---- 1 file changed, 322 insertions(+), 256 deletions(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index d2ad6352b..85cfd8396 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -155,6 +155,320 @@ virPCIEDeviceInfoFormat(virBufferPtr buf, } =20 =20 +static void +virNodeDeviceCapSystemDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + char uuidstr[VIR_UUID_STRING_BUFLEN]; + + if (data->system.product_name) + virBufferEscapeString(buf, "%s\n", + data->system.product_name); + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + if (data->system.hardware.vendor_name) + virBufferEscapeString(buf, "%s\n", + data->system.hardware.vendor_name); + if (data->system.hardware.version) + virBufferEscapeString(buf, "%s\n", + data->system.hardware.version); + if (data->system.hardware.serial) + virBufferEscapeString(buf, "%s\n", + data->system.hardware.serial); + virUUIDFormat(data->system.hardware.uuid, uuidstr); + virBufferAsprintf(buf, "%s\n", uuidstr); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + if (data->system.firmware.vendor_name) + virBufferEscapeString(buf, "%s\n", + data->system.firmware.vendor_name); + if (data->system.firmware.version) + virBufferEscapeString(buf, "%s\n", + data->system.firmware.version); + if (data->system.firmware.release_date) + virBufferEscapeString(buf, "%s\n", + data->system.firmware.release_date); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); +} + + +static void +virNodeDeviceCapPCIDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + size_t i; + + virBufferAsprintf(buf, "%d\n", + data->pci_dev.domain); + virBufferAsprintf(buf, "%d\n", data->pci_dev.bus); + virBufferAsprintf(buf, "%d\n", + data->pci_dev.slot); + virBufferAsprintf(buf, "%d\n", + data->pci_dev.function); + virBufferAsprintf(buf, "pci_dev.product); + if (data->pci_dev.product_name) + virBufferEscapeString(buf, ">%s\n", + data->pci_dev.product_name); + else + virBufferAddLit(buf, " />\n"); + virBufferAsprintf(buf, "pci_dev.vendor); + if (data->pci_dev.vendor_name) + virBufferEscapeString(buf, ">%s\n", + data->pci_dev.vendor_name); + else + virBufferAddLit(buf, " />\n"); + if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION)= { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferAsprintf(buf, + "
\n", + data->pci_dev.physical_function->domain, + data->pci_dev.physical_function->bus, + data->pci_dev.physical_function->slot, + data->pci_dev.physical_function->function); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION) { + virBufferAddLit(buf, "pci_dev.max_virtual_functions) + virBufferAsprintf(buf, " maxCount=3D'%u'", + data->pci_dev.max_virtual_functions); + if (data->pci_dev.num_virtual_functions =3D=3D 0) { + virBufferAddLit(buf, "/>\n"); + } else { + virBufferAddLit(buf, ">\n"); + virBufferAdjustIndent(buf, 2); + for (i =3D 0; i < data->pci_dev.num_virtual_functions; i++) { + virBufferAsprintf(buf, + "
\n= ", + data->pci_dev.virtual_functions[i]->doma= in, + data->pci_dev.virtual_functions[i]->bus, + data->pci_dev.virtual_functions[i]->slot, + data->pci_dev.virtual_functions[i]->func= tion); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + } + if (data->pci_dev.hdrType) { + virBufferAsprintf(buf, "\n", + virPCIHeaderTypeToString(data->pci_dev.hdrType)); + } + if (data->pci_dev.nIommuGroupDevices) { + virBufferAsprintf(buf, "\n", + data->pci_dev.iommuGroupNumber); + virBufferAdjustIndent(buf, 2); + for (i =3D 0; i < data->pci_dev.nIommuGroupDevices; i++) { + virBufferAsprintf(buf, + "
\n", + data->pci_dev.iommuGroupDevices[i]->domain, + data->pci_dev.iommuGroupDevices[i]->bus, + data->pci_dev.iommuGroupDevices[i]->slot, + data->pci_dev.iommuGroupDevices[i]->function= ); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + if (data->pci_dev.numa_node >=3D 0) + virBufferAsprintf(buf, "\n", + data->pci_dev.numa_node); + + if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCIE) + virPCIEDeviceInfoFormat(buf, data->pci_dev.pci_express); +} + + +static void +virNodeDeviceCapUSBDevDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + virBufferAsprintf(buf, "%d\n", data->usb_dev.bus); + virBufferAsprintf(buf, "%d\n", + data->usb_dev.device); + virBufferAsprintf(buf, "usb_dev.product); + if (data->usb_dev.product_name) + virBufferEscapeString(buf, ">%s\n", + data->usb_dev.product_name); + else + virBufferAddLit(buf, " />\n"); + virBufferAsprintf(buf, "usb_dev.vendor); + if (data->usb_dev.vendor_name) + virBufferEscapeString(buf, ">%s\n", + data->usb_dev.vendor_name); + else + virBufferAddLit(buf, " />\n"); +} + + +static void +virNodeDeviceCapUSBInterfaceDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + virBufferAsprintf(buf, "%d\n", + data->usb_if.number); + virBufferAsprintf(buf, "%d\n", + data->usb_if._class); + virBufferAsprintf(buf, "%d\n", + data->usb_if.subclass); + virBufferAsprintf(buf, "%d\n", + data->usb_if.protocol); + if (data->usb_if.description) + virBufferEscapeString(buf, + "%s\n", + data->usb_if.description); +} + + +static void +virNodeDeviceCapNetDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + size_t i; + + virBufferEscapeString(buf, "%s\n", + data->net.ifname); + if (data->net.address) + virBufferEscapeString(buf, "
%s
\n", + data->net.address); + virInterfaceLinkFormat(buf, &data->net.lnk); + if (data->net.features) { + for (i =3D 0; i < VIR_NET_DEV_FEAT_LAST; i++) { + if (virBitmapIsBitSet(data->net.features, i)) { + virBufferAsprintf(buf, "\n", + virNetDevFeatureTypeToString(i)); + } + } + } + if (data->net.subtype !=3D VIR_NODE_DEV_CAP_NET_LAST) { + const char *subtyp =3D + virNodeDevNetCapTypeToString(data->net.subtype); + virBufferEscapeString(buf, "\n", + subtyp); + } +} + + +static void +virNodeDeviceCapSCSIHostDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + virBufferAsprintf(buf, "%d\n", + data->scsi_host.host); + if (data->scsi_host.unique_id !=3D -1) + virBufferAsprintf(buf, "%d\n", + data->scsi_host.unique_id); + if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST) { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferEscapeString(buf, "%s\n", + data->scsi_host.wwnn); + virBufferEscapeString(buf, "%s\n", + data->scsi_host.wwpn); + virBufferEscapeString(buf, "%s\n", + data->scsi_host.fabric_wwn); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS) { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferAsprintf(buf, "%d\n", + data->scsi_host.max_vports); + virBufferAsprintf(buf, "%d\n", + data->scsi_host.vports); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } +} + + +static void +virNodeDeviceCapSCSIDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + virBufferAsprintf(buf, "%d\n", data->scsi.host); + virBufferAsprintf(buf, "%d\n", data->scsi.bus); + virBufferAsprintf(buf, "%d\n", + data->scsi.target); + virBufferAsprintf(buf, "%d\n", data->scsi.lun); + if (data->scsi.type) + virBufferEscapeString(buf, "%s\n", + data->scsi.type); +} + + +static void +virNodeDeviceCapStorageDefFormat(virBufferPtr buf, + const virNodeDevCapData *data) +{ + virBufferEscapeString(buf, "%s\n", + data->storage.block); + if (data->storage.bus) + virBufferEscapeString(buf, "%s\n", + data->storage.bus); + if (data->storage.drive_type) + virBufferEscapeString(buf, "%s\n", + data->storage.drive_type); + if (data->storage.model) + virBufferEscapeString(buf, "%s\n", + data->storage.model); + if (data->storage.vendor) + virBufferEscapeString(buf, "%s\n", + data->storage.vendor); + if (data->storage.serial) + virBufferEscapeString(buf, "%s\n", + data->storage.serial); + if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) { + int avl =3D data->storage.flags & + VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE; + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferAsprintf(buf, "%d" + "\n", avl ? 1 : 0); + virBufferAsprintf(buf, "%llu\n", + data->storage.removable_media_size); + if (data->storage.media_label) + virBufferEscapeString(buf, + "%s\n", + data->storage.media_label); + if (data->storage.logical_block_size > 0) + virBufferAsprintf(buf, "%llu" + "\n", + data->storage.logical_block_size); + if (data->storage.num_blocks > 0) + virBufferAsprintf(buf, + "%llu\n", + data->storage.num_blocks); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } else { + virBufferAsprintf(buf, "%llu\n", + data->storage.size); + if (data->storage.logical_block_size > 0) + virBufferAsprintf(buf, "%llu" + "\n", + data->storage.logical_block_size); + if (data->storage.num_blocks > 0) + virBufferAsprintf(buf, "%llu\n", + data->storage.num_blocks); + } + if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_HOTPLUGGABLE) + virBufferAddLit(buf, "\n"); +} + + char * virNodeDeviceDefFormat(const virNodeDeviceDef *def) { @@ -185,7 +499,6 @@ virNodeDeviceDefFormat(const virNodeDeviceDef *def) } =20 for (caps =3D def->caps; caps; caps =3D caps->next) { - char uuidstr[VIR_UUID_STRING_BUFLEN]; virNodeDevCapDataPtr data =3D &caps->data; =20 virBufferAsprintf(&buf, "\n", @@ -193,279 +506,32 @@ virNodeDeviceDefFormat(const virNodeDeviceDef *def) virBufferAdjustIndent(&buf, 2); switch (caps->data.type) { case VIR_NODE_DEV_CAP_SYSTEM: - if (data->system.product_name) - virBufferEscapeString(&buf, "%s\n", - data->system.product_name); - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - if (data->system.hardware.vendor_name) - virBufferEscapeString(&buf, "%s\n", - data->system.hardware.vendor_name); - if (data->system.hardware.version) - virBufferEscapeString(&buf, "%s\n", - data->system.hardware.version); - if (data->system.hardware.serial) - virBufferEscapeString(&buf, "%s\n", - data->system.hardware.serial); - virUUIDFormat(data->system.hardware.uuid, uuidstr); - virBufferAsprintf(&buf, "%s\n", uuidstr); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - if (data->system.firmware.vendor_name) - virBufferEscapeString(&buf, "%s\n", - data->system.firmware.vendor_name); - if (data->system.firmware.version) - virBufferEscapeString(&buf, "%s\n", - data->system.firmware.version); - if (data->system.firmware.release_date) - virBufferEscapeString(&buf, "%s\n", - data->system.firmware.release_date); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); + virNodeDeviceCapSystemDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_PCI_DEV: - virBufferAsprintf(&buf, "%d\n", - data->pci_dev.domain); - virBufferAsprintf(&buf, "%d\n", data->pci_dev.bus); - virBufferAsprintf(&buf, "%d\n", - data->pci_dev.slot); - virBufferAsprintf(&buf, "%d\n", - data->pci_dev.function); - virBufferAsprintf(&buf, "pci_dev.product); - if (data->pci_dev.product_name) - virBufferEscapeString(&buf, ">%s\n", - data->pci_dev.product_name); - else - virBufferAddLit(&buf, " />\n"); - virBufferAsprintf(&buf, "pci_dev.vendor); - if (data->pci_dev.vendor_name) - virBufferEscapeString(&buf, ">%s\n", - data->pci_dev.vendor_name); - else - virBufferAddLit(&buf, " />\n"); - if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_F= UNCTION) { - virBufferAddLit(&buf, "= \n"); - virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, - "
\n= ", - data->pci_dev.physical_function->domain, - data->pci_dev.physical_function->bus, - data->pci_dev.physical_function->slot, - data->pci_dev.physical_function->functio= n); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FU= NCTION) { - virBufferAddLit(&buf, "pci_dev.max_virtual_functions) - virBufferAsprintf(&buf, " maxCount=3D'%u'", - data->pci_dev.max_virtual_functions); - if (data->pci_dev.num_virtual_functions =3D=3D 0) { - virBufferAddLit(&buf, "/>\n"); - } else { - virBufferAddLit(&buf, ">\n"); - virBufferAdjustIndent(&buf, 2); - for (i =3D 0; i < data->pci_dev.num_virtual_functions;= i++) { - virBufferAsprintf(&buf, - "
\n", - data->pci_dev.virtual_functions[= i]->domain, - data->pci_dev.virtual_functions[= i]->bus, - data->pci_dev.virtual_functions[= i]->slot, - data->pci_dev.virtual_functions[= i]->function); - } - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - } - if (data->pci_dev.hdrType) { - virBufferAsprintf(&buf, "\n", - virPCIHeaderTypeToString(data->pci_dev.h= drType)); - } - if (data->pci_dev.nIommuGroupDevices) { - virBufferAsprintf(&buf, "\n", - data->pci_dev.iommuGroupNumber); - virBufferAdjustIndent(&buf, 2); - for (i =3D 0; i < data->pci_dev.nIommuGroupDevices; i++) { - virBufferAsprintf(&buf, - "
\n", - data->pci_dev.iommuGroupDevices[i]->= domain, - data->pci_dev.iommuGroupDevices[i]->= bus, - data->pci_dev.iommuGroupDevices[i]->= slot, - data->pci_dev.iommuGroupDevices[i]->= function); - } - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - if (data->pci_dev.numa_node >=3D 0) - virBufferAsprintf(&buf, "\n", - data->pci_dev.numa_node); - - if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCIE) - virPCIEDeviceInfoFormat(&buf, data->pci_dev.pci_express); + virNodeDeviceCapPCIDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_USB_DEV: - virBufferAsprintf(&buf, "%d\n", data->usb_dev.bus); - virBufferAsprintf(&buf, "%d\n", - data->usb_dev.device); - virBufferAsprintf(&buf, "usb_dev.product); - if (data->usb_dev.product_name) - virBufferEscapeString(&buf, ">%s\n", - data->usb_dev.product_name); - else - virBufferAddLit(&buf, " />\n"); - virBufferAsprintf(&buf, "usb_dev.vendor); - if (data->usb_dev.vendor_name) - virBufferEscapeString(&buf, ">%s\n", - data->usb_dev.vendor_name); - else - virBufferAddLit(&buf, " />\n"); + virNodeDeviceCapUSBDevDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_USB_INTERFACE: - virBufferAsprintf(&buf, "%d\n", - data->usb_if.number); - virBufferAsprintf(&buf, "%d\n", - data->usb_if._class); - virBufferAsprintf(&buf, "%d\n", - data->usb_if.subclass); - virBufferAsprintf(&buf, "%d\n", - data->usb_if.protocol); - if (data->usb_if.description) - virBufferEscapeString(&buf, - "%s\n", - data->usb_if.description); + virNodeDeviceCapUSBInterfaceDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_NET: - virBufferEscapeString(&buf, "%s\n", - data->net.ifname); - if (data->net.address) - virBufferEscapeString(&buf, "
%s
\n", - data->net.address); - virInterfaceLinkFormat(&buf, &data->net.lnk); - if (data->net.features) { - for (i =3D 0; i < VIR_NET_DEV_FEAT_LAST; i++) { - if (virBitmapIsBitSet(data->net.features, i)) { - virBufferAsprintf(&buf, "\n", - virNetDevFeatureTypeToString(i)); - } - } - } - if (data->net.subtype !=3D VIR_NODE_DEV_CAP_NET_LAST) { - const char *subtyp =3D - virNodeDevNetCapTypeToString(data->net.subtype); - virBufferEscapeString(&buf, "\n", - subtyp); - } + virNodeDeviceCapNetDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_SCSI_HOST: - virBufferAsprintf(&buf, "%d\n", - data->scsi_host.host); - if (data->scsi_host.unique_id !=3D -1) - virBufferAsprintf(&buf, "%d\n", - data->scsi_host.unique_id); - if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)= { - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - virBufferEscapeString(&buf, "%s\n", - data->scsi_host.wwnn); - virBufferEscapeString(&buf, "%s\n", - data->scsi_host.wwpn); - virBufferEscapeString(&buf, "%s\n= ", - data->scsi_host.fabric_wwn); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OP= S) { - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, "%d\n", - data->scsi_host.max_vports); - virBufferAsprintf(&buf, "%d\n", - data->scsi_host.vports); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - + virNodeDeviceCapSCSIHostDefFormat(&buf, data); break; - case VIR_NODE_DEV_CAP_SCSI_TARGET: virBufferEscapeString(&buf, "%s\n", data->scsi_target.name); break; - case VIR_NODE_DEV_CAP_SCSI: - virBufferAsprintf(&buf, "%d\n", data->scsi.host); - virBufferAsprintf(&buf, "%d\n", data->scsi.bus); - virBufferAsprintf(&buf, "%d\n", - data->scsi.target); - virBufferAsprintf(&buf, "%d\n", data->scsi.lun); - if (data->scsi.type) - virBufferEscapeString(&buf, "%s\n", - data->scsi.type); + virNodeDeviceCapSCSIDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_STORAGE: - virBufferEscapeString(&buf, "%s\n", - data->storage.block); - if (data->storage.bus) - virBufferEscapeString(&buf, "%s\n", - data->storage.bus); - if (data->storage.drive_type) - virBufferEscapeString(&buf, "%s\n= ", - data->storage.drive_type); - if (data->storage.model) - virBufferEscapeString(&buf, "%s\n", - data->storage.model); - if (data->storage.vendor) - virBufferEscapeString(&buf, "%s\n", - data->storage.vendor); - if (data->storage.serial) - virBufferEscapeString(&buf, "%s\n", - data->storage.serial); - if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) { - int avl =3D data->storage.flags & - VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE; - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, "%d" - "\n", avl ? 1 : 0); - virBufferAsprintf(&buf, "%llu\n", - data->storage.removable_media_size); - if (data->storage.media_label) - virBufferEscapeString(&buf, - "%s\n= ", - data->storage.media_label); - if (data->storage.logical_block_size > 0) - virBufferAsprintf(&buf, "%llu" - "\n", - data->storage.logical_block_size); - if (data->storage.num_blocks > 0) - virBufferAsprintf(&buf, - "%llu\n", - data->storage.num_blocks); - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } else { - virBufferAsprintf(&buf, "%llu\n", - data->storage.size); - if (data->storage.logical_block_size > 0) - virBufferAsprintf(&buf, "%llu" - "\n", - data->storage.logical_block_size); - if (data->storage.num_blocks > 0) - virBufferAsprintf(&buf, "%llu= \n", - data->storage.num_blocks); - } - if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_HOTPLUGGABL= E) - virBufferAddLit(&buf, "= \n"); + virNodeDeviceCapStorageDefFormat(&buf, data); break; case VIR_NODE_DEV_CAP_SCSI_GENERIC: virBufferEscapeString(&buf, "%s\n", --=20 2.12.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list