diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ab243088df17a13301f568033903ec217e881bc4..c4983ec2216ed9f766a3143961549885eb8c5d7d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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); diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 7c9364f35ee53cb9759b1033e654d12f9e71eb5e..2e1515fa15e7771f2d8a01e6eb804f96ff022760 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -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)