From nobody Wed Feb 11 11:34:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) client-ip=209.132.183.37; envelope-from=libvir-list-bounces@redhat.com; helo=mx5-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx5-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by mx.zohomail.com with SMTPS id 1488471564728518.344580051097; Thu, 2 Mar 2017 08:19:24 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx5-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v22GGAHD003910; Thu, 2 Mar 2017 11:16:10 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v22GEXNl021786 for ; Thu, 2 Mar 2017 11:14:33 -0500 Received: from localhost.localdomain.com (ovpn-116-78.phx2.redhat.com [10.3.116.78]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v22GEUfk018752 for ; Thu, 2 Mar 2017 11:14:33 -0500 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 2 Mar 2017 11:14:26 -0500 Message-Id: <20170302161427.31535-6-jferlan@redhat.com> In-Reply-To: <20170302161427.31535-1-jferlan@redhat.com> References: <20170302161427.31535-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 5/6] conf: Clean up the _virNodeDevCapData 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-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rather than a bunch of embedded union structs, let's create structs for each of the structs within the union and make the struct easier to read. Signed-off-by: John Ferlan --- src/conf/node_device_conf.h | 224 ++++++++++++++++++++++++----------------= ---- 1 file changed, 125 insertions(+), 99 deletions(-) diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index f05e61b..1107a88 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -103,108 +103,134 @@ typedef enum { =20 VIR_ENUM_DECL(virNodeDevDRM) =20 +typedef struct _virNodeDevCapSystemHardware { + char *vendor_name; + char *version; + char *serial; + unsigned char uuid[VIR_UUID_BUFLEN]; +} virNodeDevSystemHardware, *virNodeDevSystemHardwarePtr; + +typedef struct _virNodeDevCapSystemFirmware { + char *vendor_name; + char *version; + char *release_date; +} virNodeDevSystemFirmware, *virNodeDevSystemFirmwarePtr; + +typedef struct _virNodeDevCapSystem { + char *product_name; + virNodeDevSystemHardware hardware; + virNodeDevSystemFirmware firmware; +} virNodeDevCapSystem, *virNodeDevCapSystemPtr; + +typedef struct _virNodeDevCapPCIDev { + unsigned int domain; + unsigned int bus; + unsigned int slot; + unsigned int function; + unsigned int product; + unsigned int vendor; + unsigned int class; + char *product_name; + char *vendor_name; + virPCIDeviceAddressPtr physical_function; + virPCIDeviceAddressPtr *virtual_functions; + size_t num_virtual_functions; + unsigned int max_virtual_functions; + unsigned int flags; + virPCIDeviceAddressPtr *iommuGroupDevices; + size_t nIommuGroupDevices; + unsigned int iommuGroupNumber; + int numa_node; + virPCIEDeviceInfoPtr pci_express; + int hdrType; /* enum virPCIHeaderType or -1 */ +} virNodeDevCapPCIDev, *virNodeDevCapPCIDevPtr; + +typedef struct _virNodeDevCapUSBDev { + unsigned int bus; + unsigned int device; + unsigned int product; + unsigned int vendor; + char *product_name; + char *vendor_name; +} virNodeDevCapUSBDev, *virNodeDevCapUSBDevPtr; + +typedef struct _virNodeDevCapUSBIf { + unsigned int number; + unsigned int _class; /* "class" is reserved in C */ + unsigned int subclass; + unsigned int protocol; + char *description; +} virNodeDevCapUSBIf, *virNodeDevCapUSBIfPtr; + +typedef struct _virNodeDevCapNet { + char *address; + unsigned int address_len; + char *ifname; + virNetDevIfLink lnk; + virNodeDevNetCapType subtype; /* LAST -> no subtype */ + virBitmapPtr features; /* enum virNetDevFeature */ +} virNodeDevCapNet, *virNodeDevCapNetPtr; + +typedef struct _virNodeDevCapSCSIHost { + unsigned int host; + int unique_id; + char *wwnn; + char *wwpn; + char *fabric_wwn; + unsigned int flags; + int max_vports; + int vports; +} virNodeDevCapSCSIHost, *virNodeDevCapSCSIHostPtr; + +typedef struct _virNodeDevCapSCSITarget { + char *name; +} virNodeDevCapSCSITarget, *virNodeDevCapSCSITargetPtr; + +typedef struct _virNodeDevCapSCSI { + unsigned int host; + unsigned int bus; + unsigned int target; + unsigned int lun; + char *type; +} virNodeDevCapSCSI, *virNodeDevCapSCSIPtr; + +typedef struct _virNodeDevCapStorage { + unsigned long long size; + unsigned long long num_blocks; + unsigned long long logical_block_size; + unsigned long long removable_media_size; + char *block; + char *bus; + char *drive_type; + char *model; + char *vendor; + char *serial; + char *media_label; + unsigned int flags; /* virNodeDevStorageCapFlags bits */ +} virNodeDevCapStorage, *virNodeDevCapStoragePtr; + +typedef struct _virNodeDevCapSCSIGeneric { + char *path; +} virNodeDevCapSCSIGeneric, *virNodeDevCapSCSIGenericPtr; + +typedef struct _virNodeDevCapDRM { + virNodeDevDRMType type; +} virNodeDevCapDRM, *virNodeDevCapDRMPtr; + typedef struct _virNodeDevCapData { virNodeDevCapType type; union { - struct { - char *product_name; - struct { - char *vendor_name; - char *version; - char *serial; - unsigned char uuid[VIR_UUID_BUFLEN]; - } hardware; - struct { - char *vendor_name; - char *version; - char *release_date; - } firmware; - } system; - struct { - unsigned int domain; - unsigned int bus; - unsigned int slot; - unsigned int function; - unsigned int product; - unsigned int vendor; - unsigned int class; - char *product_name; - char *vendor_name; - virPCIDeviceAddressPtr physical_function; - virPCIDeviceAddressPtr *virtual_functions; - size_t num_virtual_functions; - unsigned int max_virtual_functions; - unsigned int flags; - virPCIDeviceAddressPtr *iommuGroupDevices; - size_t nIommuGroupDevices; - unsigned int iommuGroupNumber; - int numa_node; - virPCIEDeviceInfoPtr pci_express; - int hdrType; /* enum virPCIHeaderType or -1 */ - } pci_dev; - struct { - unsigned int bus; - unsigned int device; - unsigned int product; - unsigned int vendor; - char *product_name; - char *vendor_name; - } usb_dev; - struct { - unsigned int number; - unsigned int _class; /* "class" is reserved in C */ - unsigned int subclass; - unsigned int protocol; - char *description; - } usb_if; - struct { - char *address; - unsigned int address_len; - char *ifname; - virNetDevIfLink lnk; - virNodeDevNetCapType subtype; /* LAST -> no subtype */ - virBitmapPtr features; /* enum virNetDevFeature */ - } net; - struct { - unsigned int host; - int unique_id; - char *wwnn; - char *wwpn; - char *fabric_wwn; - unsigned int flags; - int max_vports; - int vports; - } scsi_host; - struct { - char *name; - } scsi_target; - struct { - unsigned int host; - unsigned int bus; - unsigned int target; - unsigned int lun; - char *type; - } scsi; - struct { - unsigned long long size; - unsigned long long num_blocks; - unsigned long long logical_block_size; - unsigned long long removable_media_size; - char *block; - char *bus; - char *drive_type; - char *model; - char *vendor; - char *serial; - char *media_label; - unsigned int flags; /* virNodeDevStorageCapFlags bits */ - } storage; - struct { - char *path; - } sg; /* SCSI generic device */ - struct { - virNodeDevDRMType type; - } drm; + virNodeDevCapSystem system; + virNodeDevCapPCIDev pci_dev; + virNodeDevCapUSBDev usb_dev; + virNodeDevCapUSBIf usb_if; + virNodeDevCapNet net; + virNodeDevCapSCSIHost scsi_host; + virNodeDevCapSCSITarget scsi_target; + virNodeDevCapSCSI scsi; + virNodeDevCapStorage storage; + virNodeDevCapSCSIGeneric sg; + virNodeDevCapDRM drm; }; } virNodeDevCapData, *virNodeDevCapDataPtr; =20 --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list