return;
virDomainChrSourceDefClear(def);
+ virObjectUnref(def->privateData);
VIR_FREE(def);
}
VIR_FREE(def->seclabels);
}
- virObjectUnref(def->privateData);
-
VIR_FREE(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;
}
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;
}
/* The host side information for a character device. */
struct _virDomainChrSourceDef {
int type; /* virDomainChrType */
+ virObjectPtr privateData;
union {
/* no <source> for null, vc, stdio */
struct {
/* A complete character device, both host and domain views. */
struct _virDomainChrDef {
int deviceType; /* enum virDomainChrDeviceType */
- virObjectPtr privateData;
bool targetTypeAttr;
int targetType; /* enum virDomainChrConsoleTargetType ||
virDomainXMLPrivateDataNewFunc diskNew;
virDomainXMLPrivateDataNewFunc hostdevNew;
virDomainXMLPrivateDataNewFunc vcpuNew;
- virDomainXMLPrivateDataNewFunc chardevNew;
+ virDomainXMLPrivateDataNewFunc chrSourceNew;
virDomainXMLPrivateDataFormatFunc format;
virDomainXMLPrivateDataParseFunc parse;
};
}
-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;
static void
-qemuDomainChardevPrivateDispose(void *obj)
+qemuDomainChrSourcePrivateDispose(void *obj)
{
- qemuDomainChardevPrivatePtr priv = obj;
+ qemuDomainChrSourcePrivatePtr priv = obj;
qemuDomainSecretInfoFree(&priv->secinfo);
}
.diskNew = qemuDomainDiskPrivateNew,
.vcpuNew = qemuDomainVcpuPrivateNew,
.hostdevNew = qemuDomainHostdevPrivateNew,
- .chardevNew = qemuDomainChardevPrivateNew,
+ .chrSourceNew = qemuDomainChrSourcePrivateNew,
.parse = qemuDomainObjPrivateXMLParse,
.format = qemuDomainObjPrivateXMLFormat,
};
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