Only one panic device per model is allowed. --- src/conf/domain_conf.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 2f17675..b4a46ad 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3747,6 +3747,30 @@ virDomainDefRejectDuplicateControllers(virDomainDefPtr def) return ret; } +static int +virDomainDefRejectDuplicatePanics(virDomainDefPtr def) +{ + bool exists[VIR_DOMAIN_PANIC_MODEL_LAST]; + size_t i; + + for (i = 0; i < VIR_DOMAIN_PANIC_MODEL_LAST; i++) + exists[i] = false; + + for (i = 0; i < def->npanics; i++) { + virDomainPanicModel model = def->panics[i]->model; + if (!exists[model]) { + exists[model] = true; + } else { + virReportError(VIR_ERR_XML_ERROR, + _("Multiple panic devices with model '%s'"), + virDomainPanicModelTypeToString(model)); + return -1; + } + + } + + return 0; +} /** * virDomainDefMetadataSanitize: @@ -3976,6 +4000,9 @@ virDomainDefPostParseInternal(virDomainDefPtr def, if (virDomainDefRejectDuplicateControllers(def) < 0) return -1; + if (virDomainDefRejectDuplicatePanics(def) < 0) + return -1; + /* verify settings of guest timers */ for (i = 0; i < def->clock.ntimers; i++) { virDomainTimerDefPtr timer = def->clock.timers[i]; -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list