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
