From 7bd8312e7f764aef2878382f016ab4c5b7abc33b Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Fri, 21 Oct 2016 08:31:37 -0400 Subject: [PATCH] conf: Move the privateData from virDomainChrDef to virDomainChrSourceDef Commit id '5f2a132786' should have placed the data in the host source def structure since that's also used by smartcard, redirdev, and rng in order to provide a backend tcp channel. The data in the private structure will be necessary in order to provide the secret properly. This also renames the previous names from "Chardev" to "ChrSource" for the private data structures and API's --- src/conf/domain_conf.c | 17 +++++++---------- src/conf/domain_conf.h | 4 ++-- src/qemu/qemu_domain.c | 32 ++++++++++++++++---------------- src/qemu/qemu_domain.h | 10 +++++----- 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bc410f7ad2..748ffd56a0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2024,6 +2024,7 @@ void virDomainChrSourceDefFree(virDomainChrSourceDefPtr def) return; virDomainChrSourceDefClear(def); + virObjectUnref(def->privateData); VIR_FREE(def); } @@ -2125,8 +2126,6 @@ void virDomainChrDefFree(virDomainChrDefPtr def) VIR_FREE(def->seclabels); } - virObjectUnref(def->privateData); - VIR_FREE(def); } @@ -10318,13 +10317,17 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def, static virDomainChrSourceDefPtr -virDomainChrSourceDefNew(void) +virDomainChrSourceDefNew(virDomainXMLOptionPtr xmlopt) { virDomainChrSourceDefPtr def = NULL; if (VIR_ALLOC(def) < 0) return NULL; + if (xmlopt && xmlopt->privateData.chrSourceNew && + !(def->privateData = xmlopt->privateData.chrSourceNew())) + VIR_FREE(def); + return def; } @@ -10342,14 +10345,8 @@ virDomainChrDefNew(virDomainXMLOptionPtr xmlopt) def->target.port = -1; - if (!(def->source = virDomainChrSourceDefNew())) - VIR_FREE(def); - - if (xmlopt && xmlopt->privateData.chardevNew && - !(def->privateData = xmlopt->privateData.chardevNew())) { - virDomainChrSourceDefFree(def->source); + if (!(def->source = virDomainChrSourceDefNew(xmlopt))) VIR_FREE(def); - } return def; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5247d34a8d..8738c80441 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1078,6 +1078,7 @@ typedef enum { /* The host side information for a character device. */ struct _virDomainChrSourceDef { int type; /* virDomainChrType */ + virObjectPtr privateData; union { /* no for null, vc, stdio */ struct { @@ -1117,7 +1118,6 @@ struct _virDomainChrSourceDef { /* A complete character device, both host and domain views. */ struct _virDomainChrDef { int deviceType; /* enum virDomainChrDeviceType */ - virObjectPtr privateData; bool targetTypeAttr; int targetType; /* enum virDomainChrConsoleTargetType || @@ -2447,7 +2447,7 @@ struct _virDomainXMLPrivateDataCallbacks { virDomainXMLPrivateDataNewFunc diskNew; virDomainXMLPrivateDataNewFunc hostdevNew; virDomainXMLPrivateDataNewFunc vcpuNew; - virDomainXMLPrivateDataNewFunc chardevNew; + virDomainXMLPrivateDataNewFunc chrSourceNew; virDomainXMLPrivateDataFormatFunc format; virDomainXMLPrivateDataParseFunc parse; }; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 88c50a37e9..f11bc010ca 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -864,34 +864,34 @@ qemuDomainVcpuPrivateDispose(void *obj) } -static virClassPtr qemuDomainChardevPrivateClass; -static void qemuDomainChardevPrivateDispose(void *obj); +static virClassPtr qemuDomainChrSourcePrivateClass; +static void qemuDomainChrSourcePrivateDispose(void *obj); static int -qemuDomainChardevPrivateOnceInit(void) +qemuDomainChrSourcePrivateOnceInit(void) { - qemuDomainChardevPrivateClass = + qemuDomainChrSourcePrivateClass = virClassNew(virClassForObject(), - "qemuDomainChardevPrivate", - sizeof(qemuDomainChardevPrivate), - qemuDomainChardevPrivateDispose); - if (!qemuDomainChardevPrivateClass) + "qemuDomainChrSourcePrivate", + sizeof(qemuDomainChrSourcePrivate), + qemuDomainChrSourcePrivateDispose); + if (!qemuDomainChrSourcePrivateClass) return -1; else return 0; } -VIR_ONCE_GLOBAL_INIT(qemuDomainChardevPrivate) +VIR_ONCE_GLOBAL_INIT(qemuDomainChrSourcePrivate) static virObjectPtr -qemuDomainChardevPrivateNew(void) +qemuDomainChrSourcePrivateNew(void) { - qemuDomainChardevPrivatePtr priv; + qemuDomainChrSourcePrivatePtr priv; - if (qemuDomainChardevPrivateInitialize() < 0) + if (qemuDomainChrSourcePrivateInitialize() < 0) return NULL; - if (!(priv = virObjectNew(qemuDomainChardevPrivateClass))) + if (!(priv = virObjectNew(qemuDomainChrSourcePrivateClass))) return NULL; return (virObjectPtr) priv; @@ -899,9 +899,9 @@ qemuDomainChardevPrivateNew(void) static void -qemuDomainChardevPrivateDispose(void *obj) +qemuDomainChrSourcePrivateDispose(void *obj) { - qemuDomainChardevPrivatePtr priv = obj; + qemuDomainChrSourcePrivatePtr priv = obj; qemuDomainSecretInfoFree(&priv->secinfo); } @@ -1807,7 +1807,7 @@ virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks = { .diskNew = qemuDomainDiskPrivateNew, .vcpuNew = qemuDomainVcpuPrivateNew, .hostdevNew = qemuDomainHostdevPrivateNew, - .chardevNew = qemuDomainChardevPrivateNew, + .chrSourceNew = qemuDomainChrSourcePrivateNew, .parse = qemuDomainObjPrivateXMLParse, .format = qemuDomainObjPrivateXMLFormat, }; diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 707a995dc5..29125a2123 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -352,12 +352,12 @@ struct _qemuDomainHostdevPrivate { qemuDomainSecretInfoPtr secinfo; }; -# define QEMU_DOMAIN_CHARDEV_PRIVATE(chardev) \ - ((qemuDomainChardevPrivatePtr) (chardev)->privateData) +# define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \ + ((qemuDomainChrSourcePrivatePtr) (dev)->privateData) -typedef struct _qemuDomainChardevPrivate qemuDomainChardevPrivate; -typedef qemuDomainChardevPrivate *qemuDomainChardevPrivatePtr; -struct _qemuDomainChardevPrivate { +typedef struct _qemuDomainChrSourcePrivate qemuDomainChrSourcePrivate; +typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr; +struct _qemuDomainChrSourcePrivate { virObject parent; /* for char devices using secret -- GitLab