]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Add rng backend model builtin
authorHan Han <hhan@redhat.com>
Thu, 9 Jan 2020 08:00:07 +0000 (16:00 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 24 Jan 2020 16:03:32 +0000 (17:03 +0100)
The 'builtin' rng backend model can be used as following:
  <rng model='virtio'>
    <backend model='builtin'/>
  </rng>

Signed-off-by: Han Han <hhan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
docs/formatdomain.html.in
docs/formatdomaincaps.html.in
docs/schemas/domaincommon.rng
src/conf/domain_audit.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_command.c
src/qemu/qemu_domain.c

index 4db9c292b7ff4125d9d26dc11b5d829359a223e1..c810e8a588b56398ad7a974bf01cfa368740da3b 100644 (file)
@@ -8259,6 +8259,8 @@ qemu-kvm -net nic,model=? /dev/null
       &lt;source mode='bind' service='1234'/&gt;
       &lt;source mode='connect' host='1.2.3.4' service='1234'/&gt;
     &lt;/backend&gt;
+    &lt;!-- OR --&gt;
+    &lt;backend model='builtin'/&gt;
   &lt;/rng&gt;
 &lt;/devices&gt;
 ...
@@ -8323,6 +8325,14 @@ qemu-kvm -net nic,model=? /dev/null
               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>
index 6bf7a1c17ae5eeffc64cf6d2d35846e2c19e4140..aa4dece220e0ee532d81ef62f6db9272754ffbbc 100644 (file)
       &lt;enum name='backendModel'&gt;
         &lt;value&gt;random&lt;/value&gt;
         &lt;value&gt;egd&lt;/value&gt;
+        &lt;value&gt;builtin&lt;/value&gt;
       &lt;/enum&gt;
     &lt;/rng&gt;
     ...
index 76d94b156f255f5a15fb3c5b71f188dbabf44e0c..992525765002efe8e6f8f3946a3916eda02f0792 100644 (file)
           <ref name="qemucdevSrcType"/>
           <ref name="qemucdevSrcDef"/>
         </group>
+        <group>
+          <attribute name="model">
+            <value>builtin</value>
+          </attribute>
+          <empty/>
+        </group>
       </choice>
     </element>
   </define>
index fdccc585fbf0de7a0acaed6765473219905788dd..138f2701295b6925779b33c5112befab808ad7da 100644 (file)
@@ -227,6 +227,7 @@ virDomainAuditRNG(virDomainObjPtr vm,
             newsrcpath = virDomainChrSourceDefGetPath(newDef->source.chardev);
             break;
 
+        case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
         case VIR_DOMAIN_RNG_BACKEND_LAST:
             break;
         }
@@ -242,6 +243,7 @@ virDomainAuditRNG(virDomainObjPtr vm,
             oldsrcpath = virDomainChrSourceDefGetPath(oldDef->source.chardev);
             break;
 
+        case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
         case VIR_DOMAIN_RNG_BACKEND_LAST:
             break;
         }
index 707d58e1a43411a8f55f2ec9605e0c0518cbc3ef..839ad8331fc7355d09f45dff3ac5bdb74ebe759d 100644 (file)
@@ -1113,6 +1113,7 @@ VIR_ENUM_IMPL(virDomainRNGBackend,
               VIR_DOMAIN_RNG_BACKEND_LAST,
               "random",
               "egd",
+              "builtin",
 );
 
 VIR_ENUM_IMPL(virDomainTPMModel,
@@ -14792,6 +14793,7 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
             goto error;
         break;
 
+    case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
     case VIR_DOMAIN_RNG_BACKEND_LAST:
         break;
     }
@@ -17851,6 +17853,7 @@ virDomainRNGFind(virDomainDefPtr def,
                 continue;
             break;
 
+        case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
         case VIR_DOMAIN_RNG_BACKEND_LAST:
             break;
         }
@@ -26531,6 +26534,11 @@ virDomainRNGDefFormat(virBufferPtr buf,
             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;
@@ -26562,6 +26570,7 @@ virDomainRNGDefFree(virDomainRNGDefPtr def)
     case VIR_DOMAIN_RNG_BACKEND_EGD:
         virObjectUnref(def->source.chardev);
         break;
+    case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
     case VIR_DOMAIN_RNG_BACKEND_LAST:
         break;
     }
index 9ae8411f6ca40a39d700f4b1ba5d02a91354dd82..5d736e99c0e96e202e5f55c09efffe0e1dcfea27 100644 (file)
@@ -2106,6 +2106,7 @@ typedef enum {
 typedef enum {
     VIR_DOMAIN_RNG_BACKEND_RANDOM,
     VIR_DOMAIN_RNG_BACKEND_EGD,
+    VIR_DOMAIN_RNG_BACKEND_BUILTIN,
 
     VIR_DOMAIN_RNG_BACKEND_LAST
 } virDomainRNGBackend;
index c66b60fd21b9f811d2962037e101763f75f876a8..c8322c2112d75720ec38642e0ea8cc1e1945fae0 100644 (file)
@@ -5594,6 +5594,12 @@ qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager,
                                             rng->info.alias, qemuCaps,
                                             cdevflags)))
             return -1;
+        break;
+
+    case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
+        virReportUnsupportedError();
+        return -1;
+        break;
     }
 
     return 0;
@@ -5644,6 +5650,10 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
 
         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"));
index 4604b6c99304e97f4783bd49544e429d9f30d44f..50b116445a6d47b4718ea10c4723e9196214a9f7 100644 (file)
@@ -14807,8 +14807,10 @@ qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg G_GNUC_UNUSED,
     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;
@@ -15788,6 +15790,7 @@ qemuDomainNamespaceSetupRNG(virDomainObjPtr vm,
         break;
 
     case VIR_DOMAIN_RNG_BACKEND_EGD:
+    case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
     case VIR_DOMAIN_RNG_BACKEND_LAST:
         break;
     }
@@ -15811,6 +15814,7 @@ qemuDomainNamespaceTeardownRNG(virDomainObjPtr vm,
         break;
 
     case VIR_DOMAIN_RNG_BACKEND_EGD:
+    case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
     case VIR_DOMAIN_RNG_BACKEND_LAST:
         break;
     }