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@xxxxxxxxxx> > --- > 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; > +}; > + -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list