This adds device <rng> reporting. Example output:
<rng supported='yes'>
<enum name='model'>
<value>virtio</value>
<value>virtio-transitional</value>
<value>virtio-non-transitional</value>
</enum>
<enum name='backendModel'>
<value>random</value>
<value>egd</value>
</enum>
</rng>
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
docs/formatdomaincaps.html.in | 35 ++++++++++++++++++++++++++++++++++
docs/schemas/domaincaps.rng | 10 ++++++++++
src/conf/domain_capabilities.c | 14 ++++++++++++++
src/conf/domain_capabilities.h | 9 +++++++++
4 files changed, 68 insertions(+)
diff --git a/docs/formatdomaincaps.html.in b/docs/formatdomaincaps.html.in
index 2583f9bead..22ddab4301 100644
--- a/docs/formatdomaincaps.html.in
+++ b/docs/formatdomaincaps.html.in
@@ -427,6 +427,41 @@
element.</dd>
</dl>
+
+ <h4><a id="elementsRNG">RNG device</a></h4>
+ <p>RNG device capabilities are exposed under the
+ <code>rng</code> element. For instance:</p>
+
+<pre>
+<domainCapabilities>
+ ...
+ <devices>
+ <rng supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>random</value>
+ <value>egd</value>
+ </enum>
+ </rng>
+ ...
+ </devices>
+</domainCapabilities>
+</pre>
+
+ <dl>
+ <dt><code>model</code></dt>
+ <dd>Options for the <code>model</code> attribute of the
+ <rng> element.</dd>
+ <dt><code>backendModel</code></dt>
+ <dd>Options for the <code>model</code> attribute of the
+ <rng><backend> element.</dd>
+ </dl>
+
+
<h3><a id="elementsFeatures">Features</a></h3>
<p>One more set of XML elements describe the supported features and
diff --git a/docs/schemas/domaincaps.rng b/docs/schemas/domaincaps.rng
index 3c42cb8075..d1b4d930d9 100644
--- a/docs/schemas/domaincaps.rng
+++ b/docs/schemas/domaincaps.rng
@@ -154,6 +154,9 @@
<optional>
<ref name='hostdev'/>
</optional>
+ <optional>
+ <ref name='rng'/>
+ </optional>
</element>
</define>
@@ -185,6 +188,13 @@
</element>
</define>
+ <define name='rng'>
+ <element name='rng'>
+ <ref name='supported'/>
+ <ref name='enum'/>
+ </element>
+ </define>
+
<define name='features'>
<element name='features'>
<optional>
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index 5a8f48da61..03757ba8cd 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -543,6 +543,19 @@ virDomainCapsDeviceHostdevFormat(virBufferPtr buf,
}
+static void
+virDomainCapsDeviceRNGFormat(virBufferPtr buf,
+ virDomainCapsDeviceRNGPtr const rng)
+{
+ FORMAT_PROLOGUE(rng);
+
+ ENUM_PROCESS(rng, model, virDomainRNGModelTypeToString);
+ ENUM_PROCESS(rng, backendModel, virDomainRNGBackendTypeToString);
+
+ FORMAT_EPILOGUE(rng);
+}
+
+
/**
* virDomainCapsFeatureGICFormat:
* @buf: target buffer
@@ -621,6 +634,7 @@ virDomainCapsFormat(virDomainCapsPtr const caps)
virDomainCapsDeviceGraphicsFormat(&buf, &caps->graphics);
virDomainCapsDeviceVideoFormat(&buf, &caps->video);
virDomainCapsDeviceHostdevFormat(&buf, &caps->hostdev);
+ virDomainCapsDeviceRNGFormat(&buf, &caps->rng);
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</devices>\n");
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 26f4b8c394..052191d284 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -96,6 +96,14 @@ struct _virDomainCapsDeviceHostdev {
/* add new fields here */
};
+typedef struct _virDomainCapsDeviceRNG virDomainCapsDeviceRNG;
+typedef virDomainCapsDeviceRNG *virDomainCapsDeviceRNGPtr;
+struct _virDomainCapsDeviceRNG {
+ virTristateBool supported;
+ virDomainCapsEnum model; /* virDomainRNGModel */
+ virDomainCapsEnum backendModel; /* virDomainRNGBackend */
+};
+
typedef struct _virDomainCapsFeatureGIC virDomainCapsFeatureGIC;
typedef virDomainCapsFeatureGIC *virDomainCapsFeatureGICPtr;
struct _virDomainCapsFeatureGIC {
@@ -165,6 +173,7 @@ struct _virDomainCaps {
virDomainCapsDeviceGraphics graphics;
virDomainCapsDeviceVideo video;
virDomainCapsDeviceHostdev hostdev;
+ virDomainCapsDeviceRNG rng;
/* add new domain devices here */
virDomainCapsFeatureGIC gic;
--
2.21.0