<source mode='bind' service='1234'/>
<source mode='connect' host='1.2.3.4' service='1234'/>
</backend>
+ <!-- OR -->
+ <backend model='builtin'/>
</rng>
</devices>
...
for more information.
</p>
</dd>
+ <dt><code>builtin</code></dt>
+ <dd>
+ <p>
+ This backend uses qemu builtin random generator, which uses
+ <code>getrandom()</code> syscall as the source of entropy.
+ (<span class="since">Since 6.1.0 and QEMU 4.2</span>)
+ </p>
+ </dd>
</dl>
</dd>
<dt><code>driver</code></dt>
<enum name='backendModel'>
<value>random</value>
<value>egd</value>
+ <value>builtin</value>
</enum>
</rng>
...
<ref name="qemucdevSrcType"/>
<ref name="qemucdevSrcDef"/>
</group>
+ <group>
+ <attribute name="model">
+ <value>builtin</value>
+ </attribute>
+ <empty/>
+ </group>
</choice>
</element>
</define>
newsrcpath = virDomainChrSourceDefGetPath(newDef->source.chardev);
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
oldsrcpath = virDomainChrSourceDefGetPath(oldDef->source.chardev);
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
VIR_DOMAIN_RNG_BACKEND_LAST,
"random",
"egd",
+ "builtin",
);
VIR_ENUM_IMPL(virDomainTPMModel,
goto error;
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
continue;
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
return -1;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</backend>\n");
+ break;
+
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
+ virBufferAddLit(buf, "/>\n");
+ break;
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
virObjectUnref(def->source.chardev);
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
typedef enum {
VIR_DOMAIN_RNG_BACKEND_RANDOM,
VIR_DOMAIN_RNG_BACKEND_EGD,
+ VIR_DOMAIN_RNG_BACKEND_BUILTIN,
VIR_DOMAIN_RNG_BACKEND_LAST
} virDomainRNGBackend;
rng->info.alias, qemuCaps,
cdevflags)))
return -1;
+ break;
+
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
+ virReportUnsupportedError();
+ return -1;
+ break;
}
return 0;
break;
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
+ virReportUnsupportedError();
+ return -1;
+
case VIR_DOMAIN_RNG_BACKEND_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("unknown rng-random backend"));
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
if (qemuDomainCreateDevice(rng->source.file, data, false) < 0)
return -1;
+ break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
/* nada */
break;
break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}
break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
+ case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
break;
}