summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2016-05-14 14:47:23 -0400
committerCole Robinson <crobinso@redhat.com>2016-05-18 14:33:58 -0400
commitf891390fa7c2af2d3379e9596879c274a7600354 (patch)
treebe0f2315d1bdd339dcc97002886866594a568485 /src
parent919d0b368e793d680549186a172ec763dba2df35 (diff)
downloadlibvirt-f891390fa7c2af2d3379e9596879c274a7600354.tar.gz
domain: Add virDomainDefAssignAddressesCallback
This will be called at the end of virDomainDefPostParse to allow hypervisor drivers to fill in device addresses.
Diffstat (limited to 'src')
-rw-r--r--src/conf/domain_conf.c7
-rw-r--r--src/conf/domain_conf.h8
2 files changed, 15 insertions, 0 deletions
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 5c1fb209fb..1dc45f4bad 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -4440,6 +4440,13 @@ virDomainDefPostParse(virDomainDefPtr def,
if ((ret = virDomainDefPostParseInternal(def, &data)) < 0)
return ret;
+ if (xmlopt->config.assignAddressesCallback) {
+ ret = xmlopt->config.assignAddressesCallback(def, caps, parseFlags,
+ xmlopt->config.priv);
+ if (ret < 0)
+ return ret;
+ }
+
if (virDomainDefPostParseCheckFeatures(def, xmlopt) < 0)
return -1;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 3ad3604041..4e21826105 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2475,6 +2475,13 @@ typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr dev,
virCapsPtr caps,
unsigned int parseFlags,
void *opaque);
+/* Drive callback for assigning device addresses, called at the end
+ * of parsing, after all defaults and implicit devices have been added. */
+typedef int (*virDomainDefAssignAddressesCallback)(virDomainDef *def,
+ virCapsPtr caps,
+ unsigned int parseFlags,
+ void *opaque);
+
typedef struct _virDomainDefParserConfig virDomainDefParserConfig;
typedef virDomainDefParserConfig *virDomainDefParserConfigPtr;
@@ -2482,6 +2489,7 @@ struct _virDomainDefParserConfig {
/* driver domain definition callbacks */
virDomainDefPostParseCallback domainPostParseCallback;
virDomainDeviceDefPostParseCallback devicesPostParseCallback;
+ virDomainDefAssignAddressesCallback assignAddressesCallback;
/* private data for the callbacks */
void *priv;