Add @parseOpaque argument to virDomainDefValidate and virDomainDefValidateCallback, but don't use it for now since it's not ensured that it's always a non-NULL value. Signed-off-by: Marc Hartmayer <mhartmay@xxxxxxxxxxxxx> Reviewed-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx> --- src/conf/domain_conf.c | 11 +++++++---- src/conf/domain_conf.h | 6 ++++-- src/qemu/qemu_domain.c | 3 ++- src/qemu/qemu_process.c | 2 +- src/vz/vz_driver.c | 3 ++- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e61f04ea2271..ae7f3ed95faf 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6271,6 +6271,7 @@ virDomainDefValidateInternal(const virDomainDef *def) * @caps: driver capabilities object * @parseFlags: virDomainDefParseFlags * @xmlopt: XML parser option object + * @parseOpaque: opaque data and it might be NULL (for QEMU driver it's qemuCaps) * * This validation function is designed to take checks of globally invalid * configurations that the parser needs to accept so that VMs don't vanish upon @@ -6284,12 +6285,14 @@ int virDomainDefValidate(virDomainDefPtr def, virCapsPtr caps, unsigned int parseFlags, - virDomainXMLOptionPtr xmlopt) + virDomainXMLOptionPtr xmlopt, + void *parseOpaque) { struct virDomainDefPostParseDeviceIteratorData data = { .caps = caps, .xmlopt = xmlopt, .parseFlags = parseFlags, + .parseOpaque = parseOpaque, }; /* validate configuration only in certain places */ @@ -6298,7 +6301,7 @@ virDomainDefValidate(virDomainDefPtr def, /* call the domain config callback */ if (xmlopt->config.domainValidateCallback && - xmlopt->config.domainValidateCallback(def, caps, xmlopt->config.priv) < 0) + xmlopt->config.domainValidateCallback(def, caps, xmlopt->config.priv, data.parseOpaque) < 0) return -1; /* iterate the devices */ @@ -21063,7 +21066,7 @@ virDomainObjParseXML(xmlDocPtr xml, goto error; /* valdiate configuration */ - if (virDomainDefValidate(obj->def, caps, flags, xmlopt) < 0) + if (virDomainDefValidate(obj->def, caps, flags, xmlopt, parseOpaque) < 0) goto error; return obj; @@ -21154,7 +21157,7 @@ virDomainDefParseNode(xmlDocPtr xml, goto cleanup; /* valdiate configuration */ - if (virDomainDefValidate(def, caps, flags, xmlopt) < 0) + if (virDomainDefValidate(def, caps, flags, xmlopt, parseOpaque) < 0) goto cleanup; VIR_STEAL_PTR(ret, def); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e30a4b2fe7b9..3642d5eb6cba 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2696,7 +2696,8 @@ typedef void (*virDomainDefPostParseDataFree)(void *parseOpaque); * config. */ typedef int (*virDomainDefValidateCallback)(const virDomainDef *def, virCapsPtr caps, - void *opaque); + void *opaque, + void *domainOpaque); /* Called once per device, for adjusting per-device settings while * leaving the overall domain otherwise unchanged. */ @@ -2812,7 +2813,8 @@ bool virDomainDeviceAliasIsUserAlias(const char *aliasStr); int virDomainDefValidate(virDomainDefPtr def, virCapsPtr caps, unsigned int parseFlags, - virDomainXMLOptionPtr xmlopt); + virDomainXMLOptionPtr xmlopt, + void *parseOpaque); static inline bool virDomainObjIsActive(virDomainObjPtr dom) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index eb80711597cb..52d2aa435a36 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3990,7 +3990,8 @@ qemuDomainDefValidateMemory(const virDomainDef *def) static int qemuDomainDefValidate(const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED, - void *opaque) + void *opaque, + void *parseOpaque ATTRIBUTE_UNUSED) { virQEMUDriverPtr driver = opaque; virQEMUCapsPtr qemuCaps = NULL; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 6c5a6472d8cd..fed2c0f545e3 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5161,7 +5161,7 @@ qemuProcessStartValidateXML(virQEMUDriverPtr driver, * VM that was running before (migration, snapshots, save). It's more * important to start such VM than keep the configuration clean */ if ((flags & VIR_QEMU_PROCESS_START_NEW) && - virDomainDefValidate(vm->def, caps, 0, driver->xmlopt) < 0) + virDomainDefValidate(vm->def, caps, 0, driver->xmlopt, qemuCaps) < 0) return -1; return 0; diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index bedc6316db8d..16c44c2f2215 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -250,7 +250,8 @@ vzDomainDefPostParse(virDomainDefPtr def, static int vzDomainDefValidate(const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED, - void *opaque) + void *opaque, + void *parserOpaque ATTRIBUTE_UNUSED) { if (vzCheckUnsupportedControllers(def, opaque) < 0) return -1; -- 2.17.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list