[libvirt] [PATCH v2 01/12] qemu: Introduce qemuDomainSecretInfo

Ján Tomko jtomko at redhat.com
Mon May 2 11:17:23 UTC 2016


On Sat, Apr 16, 2016 at 10:17:34AM -0400, John Ferlan wrote:
> Introduce a new private structure to hold qemu domain auth/secret data.
> This will be stored in the qemuDomainDiskPrivate as a means to store the
> auth and fetched secret data rather than generating during building of
> the command line.
> 
> The initial changes will handle the current username and secret values
> for rbd and iscsi disks (in their various forms). The rbd secret is
> stored as a base64 encoded value, while the iscsi secret is stored as
> a plain text value. Future changes will store encoded/encrypted secret
> data as well as an initialization vector needed to be given to qemu
> in order to decrypt the encoded password along with the domain masterKey.
> The inital assumption will be that VIR_DOMAIN_SECRET_INFO_PLAIN is
> being used.
> 
> Although it's expected that the cleanup of the secret data will be
> done immediately after command line generation, reintroduce the object
> dispose function qemuDomainDiskPrivateDispose to handle removing
> memory associated with the structure for "normal" cleanup paths.
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  src/qemu/qemu_domain.c | 32 +++++++++++++++++++++++++++++++-
>  src/qemu/qemu_domain.h | 27 +++++++++++++++++++++++++++
>  2 files changed, 58 insertions(+), 1 deletion(-)

> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index 7d2c4fd..9cfe3e4 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -239,6 +239,29 @@ struct _qemuDomainObjPrivate {
>      size_t masterKeyLen;
>  };
>  
> +/* Type of domain secret */
> +typedef enum {
> +    VIR_DOMAIN_SECRET_INFO_PLAIN = 0,
> +
> +    VIR_DOMAIN_SECRET_INFO_LAST
> +} qemuDomainSecretInfoType;

Just a nit: the enum name has 'Type' in it, but the enum values do not.

> +
> +typedef struct _qemuDomainSecretPlain qemuDomainSecretPlain;
> +typedef struct _qemuDomainSecretPlain *qemuDomainSecretPlainPtr;
> +struct _qemuDomainSecretPlain {
> +    char *username;
> +    char *secret;
> +};
> +
> +typedef struct _qemuDomainSecretInfo qemuDomainSecretInfo;
> +typedef qemuDomainSecretInfo *qemuDomainSecretInfoPtr;
> +struct _qemuDomainSecretInfo {
> +    int type;  /* qemuDomainSecretInfoType */

Is there any issue with using:
qemuDomainSecretInfoType type;

As far as I know we cannot use enums in public structures because their
size varies per-platform/compiler, but they should be safe in internal
code.

Jan

> +    union {
> +        qemuDomainSecretPlain plain;
> +    } s;
> +};
> +




More information about the libvir-list mailing list