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

John Ferlan jferlan at redhat.com
Mon May 2 11:38:24 UTC 2016



On 05/02/2016 07:17 AM, Ján Tomko wrote:
> 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.
> 

Nor does qemuProcessEventType in qemu_domain.h

Nor does qemuMonitorJSONObjectPropertyType in qemu_monitor_json.h

But I can make the change to VIR_DOMAIN_SECRET_INFO_TYPE_{PLAIN|IV|LAST}

>> +
>> +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.
> 

OK - I'll make these adjustments and send it along as the 1st patch of
the follow-up series.

John




More information about the libvir-list mailing list