conf: domcaps: Report device <rng>

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>

Reviewed-by: Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2019-03-31 17:19:33 -04:00
parent 0e66f0669a
commit 9828b6e7fe
4 changed files with 68 additions and 0 deletions

View File

@ -450,6 +450,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>
&lt;domainCapabilities&gt;
...
&lt;devices&gt;
&lt;rng supported='yes'&gt;
&lt;enum name='model'&gt;
&lt;value&gt;virtio&lt;/value&gt;
&lt;value&gt;virtio-transitional&lt;/value&gt;
&lt;value&gt;virtio-non-transitional&lt;/value&gt;
&lt;/enum&gt;
&lt;enum name='backendModel'&gt;
&lt;value&gt;random&lt;/value&gt;
&lt;value&gt;egd&lt;/value&gt;
&lt;/enum&gt;
&lt;/rng&gt;
...
&lt;/devices&gt;
&lt;/domainCapabilities&gt;
</pre>
<dl>
<dt><code>model</code></dt>
<dd>Options for the <code>model</code> attribute of the
&lt;rng&gt; element.</dd>
<dt><code>backendModel</code></dt>
<dd>Options for the <code>model</code> attribute of the
&lt;rng&gt;&lt;backend&gt; element.</dd>
</dl>
<h3><a id="elementsFeatures">Features</a></h3>
<p>One more set of XML elements describe the supported features and

View File

@ -155,6 +155,9 @@
<optional>
<ref name='hostdev'/>
</optional>
<optional>
<ref name='rng'/>
</optional>
</element>
</define>
@ -186,6 +189,13 @@
</element>
</define>
<define name='rng'>
<element name='rng'>
<ref name='supported'/>
<ref name='enum'/>
</element>
</define>
<define name='features'>
<element name='features'>
<optional>

View File

@ -547,6 +547,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
@ -625,6 +638,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");

View File

@ -98,6 +98,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 {
@ -167,6 +175,7 @@ struct _virDomainCaps {
virDomainCapsDeviceGraphics graphics;
virDomainCapsDeviceVideo video;
virDomainCapsDeviceHostdev hostdev;
virDomainCapsDeviceRNG rng;
/* add new domain devices here */
virDomainCapsFeatureGIC gic;