]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Introduce privateData object for virStorageSource
authorJohn Ferlan <jferlan@redhat.com>
Thu, 5 Oct 2017 13:22:09 +0000 (09:22 -0400)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 19 Oct 2017 16:20:30 +0000 (18:20 +0200)
Add the object definition and helpers to store security-related private
data for virStorageSources.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h

index ab243088df17a13301f568033903ec217e881bc4..c4983ec2216ed9f766a3143961549885eb8c5d7d 100644 (file)
@@ -932,6 +932,49 @@ qemuDomainDiskPrivateDispose(void *obj)
 }
 
 
+static virClassPtr qemuDomainStorageSourcePrivateClass;
+static void qemuDomainStorageSourcePrivateDispose(void *obj);
+
+static int
+qemuDomainStorageSourcePrivateOnceInit(void)
+{
+    qemuDomainStorageSourcePrivateClass = virClassNew(virClassForObject(),
+                                                      "qemuDomainStorageSourcePrivate",
+                                                      sizeof(qemuDomainStorageSourcePrivate),
+                                                      qemuDomainStorageSourcePrivateDispose);
+    if (!qemuDomainStorageSourcePrivateClass)
+        return -1;
+    else
+        return 0;
+}
+
+VIR_ONCE_GLOBAL_INIT(qemuDomainStorageSourcePrivate)
+
+virObjectPtr
+qemuDomainStorageSourcePrivateNew(void)
+{
+    qemuDomainStorageSourcePrivatePtr priv;
+
+    if (qemuDomainStorageSourcePrivateInitialize() < 0)
+        return NULL;
+
+    if (!(priv = virObjectNew(qemuDomainStorageSourcePrivateClass)))
+        return NULL;
+
+    return (virObjectPtr) priv;
+}
+
+
+static void
+qemuDomainStorageSourcePrivateDispose(void *obj)
+{
+    qemuDomainStorageSourcePrivatePtr priv = obj;
+
+    qemuDomainSecretInfoFree(&priv->secinfo);
+    qemuDomainSecretInfoFree(&priv->encinfo);
+}
+
+
 static virClassPtr qemuDomainHostdevPrivateClass;
 static void qemuDomainHostdevPrivateDispose(void *obj);
 
index 7c9364f35ee53cb9759b1033e654d12f9e71eb5e..2e1515fa15e7771f2d8a01e6eb804f96ff022760 100644 (file)
@@ -363,6 +363,23 @@ struct _qemuDomainDiskPrivate {
     bool removable; /* device media can be removed/changed */
 };
 
+# define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \
+    ((qemuDomainStorageSourcePrivatePtr) (src)->privateData)
+
+typedef struct _qemuDomainStorageSourcePrivate qemuDomainStorageSourcePrivate;
+typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr;
+struct _qemuDomainStorageSourcePrivate {
+    virObject parent;
+
+    /* data required for authentication to the storage source */
+    qemuDomainSecretInfoPtr secinfo;
+
+    /* data required for decryption of encrypted storage source */
+    qemuDomainSecretInfoPtr encinfo;
+};
+
+virObjectPtr qemuDomainStorageSourcePrivateNew(void);
+
 # define QEMU_DOMAIN_HOSTDEV_PRIVATE(hostdev)   \
     ((qemuDomainHostdevPrivatePtr) (hostdev)->privateData)