]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: add privateData to virDomainVsockDef
authorJán Tomko <jtomko@redhat.com>
Thu, 17 May 2018 14:58:24 +0000 (16:58 +0200)
committerJán Tomko <jtomko@redhat.com>
Tue, 29 May 2018 13:42:03 +0000 (15:42 +0200)
An object for storing driver-specific data in the vsock definition.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851
Signed-off-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h

index 08d9c16ecedeb63d6511116df1b1f5e30694cc31..21a49bd5ac77982f62823f8ec89c33ca70f3e571 100644 (file)
@@ -2030,7 +2030,7 @@ virDomainActualNetDefFree(virDomainActualNetDefPtr def)
 
 
 virDomainVsockDefPtr
-virDomainVsockDefNew(virDomainXMLOptionPtr xmlopt ATTRIBUTE_UNUSED)
+virDomainVsockDefNew(virDomainXMLOptionPtr xmlopt)
 {
     virDomainVsockDefPtr ret = NULL;
     virDomainVsockDefPtr vsock;
@@ -2038,7 +2038,14 @@ virDomainVsockDefNew(virDomainXMLOptionPtr xmlopt ATTRIBUTE_UNUSED)
     if (VIR_ALLOC(vsock) < 0)
         return NULL;
 
+    if (xmlopt &&
+        xmlopt->privateData.vsockNew &&
+        !(vsock->privateData = xmlopt->privateData.vsockNew()))
+        goto cleanup;
+
     VIR_STEAL_PTR(ret, vsock);
+ cleanup:
+    virDomainVsockDefFree(vsock);
     return ret;
 }
 
@@ -2046,6 +2053,10 @@ virDomainVsockDefNew(virDomainXMLOptionPtr xmlopt ATTRIBUTE_UNUSED)
 void
 virDomainVsockDefFree(virDomainVsockDefPtr vsock)
 {
+    if (!vsock)
+        return;
+
+    virObjectUnref(vsock->privateData);
     VIR_FREE(vsock);
 }
 
index 187cae9428dfac8551f13946bba61736cef669d0..7877bcc9b1213750524b9f2a6ddd8b753237e4cb 100644 (file)
@@ -2315,6 +2315,7 @@ struct _virDomainIOMMUDef {
 };
 
 struct _virDomainVsockDef {
+    virObjectPtr privateData;
 };
 
 struct _virDomainVirtioOptions {
@@ -2687,6 +2688,7 @@ struct _virDomainXMLPrivateDataCallbacks {
     virDomainXMLPrivateDataNewFunc    diskNew;
     virDomainXMLPrivateDataNewFunc    vcpuNew;
     virDomainXMLPrivateDataNewFunc    chrSourceNew;
+    virDomainXMLPrivateDataNewFunc    vsockNew;
     virDomainXMLPrivateDataFormatFunc format;
     virDomainXMLPrivateDataParseFunc  parse;
     /* following function shall return a pointer which will be used as the