}
+enum {
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES = 1 << 0,
+} virDomainDeviceIterateFlags;
+
+/*
+ * Iterates over domain devices calling @cb on each device. The default
+ * behaviour can be altered with virDomainDeviceIterateFlags.
+ */
static int
virDomainDeviceInfoIterateInternal(virDomainDefPtr def,
virDomainDeviceInfoCallback cb,
- bool all,
+ unsigned int iteratorFlags,
void *opaque)
{
size_t i;
return rc;
}
for (i = 0; i < def->nconsoles; i++) {
+ bool all = iteratorFlags & DOMAIN_DEVICE_ITERATE_ALL_CONSOLES;
+
if (virDomainSkipBackcompatConsole(def, i, all))
continue;
device.data.chr = def->consoles[i];
virDomainDeviceInfoCallback cb,
void *opaque)
{
- return virDomainDeviceInfoIterateInternal(def, cb, false, opaque);
+ return virDomainDeviceInfoIterateInternal(def, cb, 0, opaque);
}
{
if (virDomainDeviceInfoIterateInternal(def,
virDomainDefHasDeviceAddressIterator,
- true,
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES,
info) < 0)
return true;
/* iterate the devices */
ret = virDomainDeviceInfoIterateInternal(def,
virDomainDefPostParseDeviceIterator,
- true,
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES,
&data);
if (virDomainDefPostParseCheckFailure(def, parseFlags, ret) < 0)
if (virDomainDeviceInfoIterateInternal((virDomainDefPtr) def,
virDomainDeviceDefValidateAliasesIterator,
- true, &data) < 0)
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES,
+ &data) < 0)
goto cleanup;
if (aliases) {
/* iterate the devices */
if (virDomainDeviceInfoIterateInternal(def,
virDomainDefValidateDeviceIterator,
- true, &data) < 0)
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES,
+ &data) < 0)
return -1;
if (virDomainDefValidateInternal(def) < 0)
dev->type = VIR_DOMAIN_DEVICE_NONE;
virDomainDeviceInfoIterateInternal(def, virDomainDefFindDeviceCallback,
- true, &data);
+ DOMAIN_DEVICE_ITERATE_ALL_CONSOLES,
+ &data);
if (dev->type == VIR_DOMAIN_DEVICE_NONE) {
if (reportError) {