This is similar to the existing virDomainDefHasUSBControllers()
function, except that it looks for USB devices in the domain
definition instead.

Signed-off-by: Andrea Bolognani <[email protected]>
---
 src/conf/domain_conf.c   | 27 +++++++++++++++++++++++++++
 src/conf/domain_conf.h   |  1 +
 src/libvirt_private.syms |  1 +
 3 files changed, 29 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index e7fa4cd769..61a3280e9e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5427,6 +5427,33 @@ virDomainDefHasUSBControllers(const virDomainDef *def)
 }
 
 
+static int
+virDomainDefHasUSBDevicesIter(virDomainDeviceInfo *info G_GNUC_UNUSED,
+                              void *opaque)
+{
+    bool *found = (bool *) opaque;
+
+    *found = true;
+
+    return 0;
+}
+
+
+bool
+virDomainDefHasUSBDevices(const virDomainDef *def)
+{
+    bool found = false;
+
+    if (virDomainUSBDeviceDefForeach((virDomainDef *) def,
+                                     virDomainDefHasUSBDevicesIter,
+                                     &found, false) < 0) {
+        return false;
+    }
+
+    return found;
+}
+
+
 bool
 virDomainDefLifecycleActionAllowed(virDomainLifecycle type,
                                    virDomainLifecycleAction action)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index a2684ea78d..448361ab95 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3683,6 +3683,7 @@ virDomainSCSIDriveAddressIsUsed(const virDomainDef *def,
                                 const virDomainDeviceDriveAddress *addr);
 
 bool virDomainDefHasUSBControllers(const virDomainDef *def);
+bool virDomainDefHasUSBDevices(const virDomainDef *def);
 
 bool virDomainDeviceAliasIsUserAlias(const char *aliasStr);
 
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 3fc97bd124..ce93a13216 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -350,6 +350,7 @@ virDomainDefHasOldStyleUEFI;
 virDomainDefHasPCIHostdev;
 virDomainDefHasTimer;
 virDomainDefHasUSBControllers;
+virDomainDefHasUSBDevices;
 virDomainDefHasVcpusOffline;
 virDomainDefHasVDPANet;
 virDomainDefIDsParseString;
-- 
2.52.0

Reply via email to