[libvirt] [PATCH 0/4] Add TLS for TCP chardev redirdev and rng backends

This "would" conflict with other TLS/TCP changes on list depending on order of commit, but it does work against the current top. The conflict would be limited to the new helper qemuDomainGetChardevTLSObjects and changing the 'if (!cfg->chardevTLS)' to the corresponding 'if dev->source.data.tcp.haveTLS != VIR_TRISTATE_BOOL_YES)' once Pavel's changes are in and of course removing the need to fetch 'cfg'. Then if my other changes related to making 'source' a pointer in the _virDomainChrDef is accepted, the 'source.' here would change to 'source->'. Essentially during the review process of adding a secret to access the TLS environment, it was determined that the backends for redirdev and rng weren't adding the TLS object on hotplug, even though the command line processing would add it. NB: Smartcard would be in the same category, but it doesn't support hotplug, so we're off the hook for that. John Ferlan (4): qemu: Introduce qemuDomainGetChardevTLSObjects for hotplug qemu: Clean up error path in qemuDomainAttachRedirdevDevice qemu: Add TLS hotplug for qemuDomainAttachRedirdevDevice qemu: Add TLS hotplug for qemuDomainAttachRNGDevice src/qemu/qemu_hotplug.c | 125 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 99 insertions(+), 26 deletions(-) -- 2.7.4

As it turns out more than one place will need these objects, so rather than cut-copy-paste in each, make a helper Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 2cb2267..8a7c7cb 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1474,6 +1474,32 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, } +static int +qemuDomainGetChardevTLSObjects(virQEMUDriverConfigPtr cfg, + qemuDomainObjPrivatePtr priv, + virDomainChrSourceDefPtr dev, + char *charAlias, + virJSONValuePtr *tlsProps, + char **tlsAlias) +{ + if (!cfg->chardevTLS) + return 0; + + if (qemuBuildTLSx509BackendProps(cfg->chardevTLSx509certdir, + dev->data.tcp.listen, + cfg->chardevTLSx509verify, + priv->qemuCaps, + tlsProps) < 0) + return -1; + + if (!(*tlsAlias = qemuAliasTLSObjFromChardevAlias(charAlias))) + return -1; + dev->data.tcp.tlscreds = true; + + return 0; +} + + int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRedirdevDefPtr redirdev) @@ -1730,18 +1756,9 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, goto cleanup; if (dev->type == VIR_DOMAIN_CHR_TYPE_TCP && - cfg->chardevTLS) { - if (qemuBuildTLSx509BackendProps(cfg->chardevTLSx509certdir, - dev->data.tcp.listen, - cfg->chardevTLSx509verify, - priv->qemuCaps, - &tlsProps) < 0) - goto cleanup; - - if (!(tlsAlias = qemuAliasTLSObjFromChardevAlias(charAlias))) - goto cleanup; - dev->data.tcp.tlscreds = true; - } + qemuDomainGetChardevTLSObjects(cfg, priv, dev, charAlias, + &tlsProps, &tlsAlias) < 0) + goto cleanup; qemuDomainObjEnterMonitor(driver, vm); if (tlsAlias) { -- 2.7.4

On Fri, Oct 21, 2016 at 10:22:28AM -0400, John Ferlan wrote:
As it turns out more than one place will need these objects, so rather than cut-copy-paste in each, make a helper
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 2cb2267..8a7c7cb 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1474,6 +1474,32 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, }
+static int +qemuDomainGetChardevTLSObjects(virQEMUDriverConfigPtr cfg, + qemuDomainObjPrivatePtr priv, + virDomainChrSourceDefPtr dev, + char *charAlias, + virJSONValuePtr *tlsProps, + char **tlsAlias) +{ + if (!cfg->chardevTLS) + return 0; + + if (qemuBuildTLSx509BackendProps(cfg->chardevTLSx509certdir, + dev->data.tcp.listen, + cfg->chardevTLSx509verify, + priv->qemuCaps, + tlsProps) < 0) + return -1; + + if (!(*tlsAlias = qemuAliasTLSObjFromChardevAlias(charAlias))) + return -1; + dev->data.tcp.tlscreds = true; + + return 0; +} + + int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRedirdevDefPtr redirdev) @@ -1730,18 +1756,9 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, goto cleanup;
if (dev->type == VIR_DOMAIN_CHR_TYPE_TCP &&
I would move this check to the helper as well, see comments for patch 04. ACK with that fixed. Pavel
- cfg->chardevTLS) { - if (qemuBuildTLSx509BackendProps(cfg->chardevTLSx509certdir, - dev->data.tcp.listen, - cfg->chardevTLSx509verify, - priv->qemuCaps, - &tlsProps) < 0) - goto cleanup; - - if (!(tlsAlias = qemuAliasTLSObjFromChardevAlias(charAlias))) - goto cleanup; - dev->data.tcp.tlscreds = true; - } + qemuDomainGetChardevTLSObjects(cfg, priv, dev, charAlias, + &tlsProps, &tlsAlias) < 0) + goto cleanup;
qemuDomainObjEnterMonitor(driver, vm); if (tlsAlias) { -- 2.7.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

It's about to get more complicated - let's alter the logic to handle various failures. Adds saving of the error as well. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 8a7c7cb..cdd9222 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1509,6 +1509,8 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainDefPtr def = vm->def; char *charAlias = NULL; char *devstr = NULL; + bool chardevAdded = false; + virErrorPtr orig_err; if (qemuAssignDeviceRedirdevAlias(def, redirdev, -1) < 0) goto cleanup; @@ -1525,17 +1527,12 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, qemuDomainObjEnterMonitor(driver, vm); if (qemuMonitorAttachCharDev(priv->mon, charAlias, - &(redirdev->source.chr)) < 0) { - ignore_value(qemuDomainObjExitMonitor(driver, vm)); - goto audit; - } + &(redirdev->source.chr)) < 0) + goto exit_monitor; + chardevAdded = true; - if (qemuMonitorAddDevice(priv->mon, devstr) < 0) { - /* detach associated chardev on error */ - qemuMonitorDetachCharDev(priv->mon, charAlias); - ignore_value(qemuDomainObjExitMonitor(driver, vm)); - goto audit; - } + if (qemuMonitorAddDevice(priv->mon, devstr) < 0) + goto exit_monitor; if (qemuDomainObjExitMonitor(driver, vm) < 0) goto audit; @@ -1548,6 +1545,18 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, VIR_FREE(charAlias); VIR_FREE(devstr); return ret; + + exit_monitor: + orig_err = virSaveLastError(); + /* detach associated chardev on error */ + if (chardevAdded) + ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); + if (orig_err) { + virSetError(orig_err); + virFreeError(orig_err); + } + ignore_value(qemuDomainObjExitMonitor(driver, vm)); + goto audit; } static int -- 2.7.4

On Fri, Oct 21, 2016 at 10:22:29AM -0400, John Ferlan wrote:
It's about to get more complicated - let's alter the logic to handle various failures. Adds saving of the error as well.
Signed-off-by: John Ferlan <jferlan@redhat.com> ---
ACK Pavel

Commit id '2c322378' missed the nuance that the redirdev backend could be using a TCP chardev and if TLS is enabled on the host, thus will need to have the TLS object added. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index cdd9222..4b2a24c 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1505,11 +1505,16 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainRedirdevDefPtr redirdev) { int ret = -1; + int rc; + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr def = vm->def; char *charAlias = NULL; char *devstr = NULL; bool chardevAdded = false; + bool tlsobjAdded = false; + virJSONValuePtr tlsProps = NULL; + char *tlsAlias = NULL; virErrorPtr orig_err; if (qemuAssignDeviceRedirdevAlias(def, redirdev, -1) < 0) @@ -1524,7 +1529,21 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, if (VIR_REALLOC_N(def->redirdevs, def->nredirdevs+1) < 0) goto cleanup; + if (redirdev->source.chr.type == VIR_DOMAIN_CHR_TYPE_TCP && + qemuDomainGetChardevTLSObjects(cfg, priv, &(redirdev->source.chr), + charAlias, &tlsProps, &tlsAlias) < 0) + goto cleanup; + qemuDomainObjEnterMonitor(driver, vm); + if (tlsAlias) { + rc = qemuMonitorAddObject(priv->mon, "tls-creds-x509", + tlsAlias, tlsProps); + tlsProps = NULL; /* qemuMonitorAddObject consumes */ + if (rc < 0) + goto exit_monitor; + tlsobjAdded = true; + } + if (qemuMonitorAttachCharDev(priv->mon, charAlias, &(redirdev->source.chr)) < 0) @@ -1542,12 +1561,17 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, audit: virDomainAuditRedirdev(vm, redirdev, "attach", ret == 0); cleanup: + VIR_FREE(tlsAlias); + virJSONValueFree(tlsProps); VIR_FREE(charAlias); VIR_FREE(devstr); + virObjectUnref(cfg); return ret; exit_monitor: orig_err = virSaveLastError(); + if (tlsobjAdded) + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias)); /* detach associated chardev on error */ if (chardevAdded) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); -- 2.7.4

On Fri, Oct 21, 2016 at 10:22:30AM -0400, John Ferlan wrote:
Commit id '2c322378' missed the nuance that the redirdev backend could be using a TCP chardev and if TLS is enabled on the host, thus will need to have the TLS object added.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index cdd9222..4b2a24c 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1505,11 +1505,16 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, virDomainRedirdevDefPtr redirdev) { int ret = -1; + int rc; + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr def = vm->def; char *charAlias = NULL; char *devstr = NULL; bool chardevAdded = false; + bool tlsobjAdded = false; + virJSONValuePtr tlsProps = NULL; + char *tlsAlias = NULL; virErrorPtr orig_err;
if (qemuAssignDeviceRedirdevAlias(def, redirdev, -1) < 0) @@ -1524,7 +1529,21 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, if (VIR_REALLOC_N(def->redirdevs, def->nredirdevs+1) < 0) goto cleanup;
+ if (redirdev->source.chr.type == VIR_DOMAIN_CHR_TYPE_TCP &&
This check would be moved into the qemuDomainGetChardevTLSObjects() and we need to check for redirdev->bus == VIR_DOMAIN_REDIRDEV_BUS_USB even though the union has currently only one member. If someone adds a new member this case will be already covered by the check for proper bus type. ACK with that fixed. Pavel
+ qemuDomainGetChardevTLSObjects(cfg, priv, &(redirdev->source.chr), + charAlias, &tlsProps, &tlsAlias) < 0) + goto cleanup; + qemuDomainObjEnterMonitor(driver, vm); + if (tlsAlias) { + rc = qemuMonitorAddObject(priv->mon, "tls-creds-x509", + tlsAlias, tlsProps); + tlsProps = NULL; /* qemuMonitorAddObject consumes */ + if (rc < 0) + goto exit_monitor; + tlsobjAdded = true; + } + if (qemuMonitorAttachCharDev(priv->mon, charAlias, &(redirdev->source.chr)) < 0) @@ -1542,12 +1561,17 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, audit: virDomainAuditRedirdev(vm, redirdev, "attach", ret == 0); cleanup: + VIR_FREE(tlsAlias); + virJSONValueFree(tlsProps); VIR_FREE(charAlias); VIR_FREE(devstr); + virObjectUnref(cfg); return ret;
exit_monitor: orig_err = virSaveLastError(); + if (tlsobjAdded) + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias)); /* detach associated chardev on error */ if (chardevAdded) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); -- 2.7.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Commit id '2c322378' missed the nuance that the rng backend could be using a TCP chardev and if TLS is enabled on the host, thus will need to have the TLS object added. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 4b2a24c..aac1338 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1851,26 +1851,30 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRNGDefPtr rng) { + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; char *devstr = NULL; char *charAlias = NULL; char *objAlias = NULL; + char *tlsAlias = NULL; bool releaseaddr = false; bool chardevAdded = false; bool objAdded = false; + bool tlsobjAdded = false; virJSONValuePtr props = NULL; + virJSONValuePtr tlsProps = NULL; virDomainCCWAddressSetPtr ccwaddrs = NULL; const char *type; int ret = -1; int rv; if (qemuAssignDeviceRNGAlias(vm->def, rng) < 0) - return -1; + goto cleanup; /* preallocate space for the device definition */ if (VIR_REALLOC_N(vm->def->rngs, vm->def->nrngs + 1) < 0) - return -1; + goto cleanup; if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { if (qemuDomainMachineIsS390CCW(vm->def) && @@ -1882,14 +1886,14 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, } else { if (!qemuCheckCCWS390AddressSupport(vm->def, rng->info, priv->qemuCaps, rng->source.file)) - return -1; + goto cleanup; } releaseaddr = true; if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE || rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &rng->info) < 0) - return -1; + goto cleanup; } else if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { if (!(ccwaddrs = qemuDomainCCWAddrSetCreateFromDomain(vm->def))) goto cleanup; @@ -1911,8 +1915,22 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, if (!(charAlias = qemuAliasChardevFromDevAlias(rng->info.alias))) goto cleanup; + if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && + qemuDomainGetChardevTLSObjects(cfg, priv, rng->source.chardev, + charAlias, &tlsProps, &tlsAlias) < 0) + goto cleanup; + qemuDomainObjEnterMonitor(driver, vm); + if (tlsAlias) { + rv = qemuMonitorAddObject(priv->mon, "tls-creds-x509", + tlsAlias, tlsProps); + tlsProps = NULL; /* qemuMonitorAddObject consumes */ + if (rv < 0) + goto exit_monitor; + tlsobjAdded = true; + } + if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && qemuMonitorAttachCharDev(priv->mon, charAlias, rng->source.chardev) < 0) @@ -1940,17 +1958,22 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, audit: virDomainAuditRNG(vm, NULL, rng, "attach", ret == 0); cleanup: + virJSONValueFree(tlsProps); virJSONValueFree(props); if (ret < 0 && releaseaddr) qemuDomainReleaseDeviceAddress(vm, &rng->info, NULL); + VIR_FREE(tlsAlias); VIR_FREE(charAlias); VIR_FREE(objAlias); VIR_FREE(devstr); virDomainCCWAddressSetFree(ccwaddrs); + virObjectUnref(cfg); return ret; exit_monitor: orig_err = virSaveLastError(); + if (tlsobjAdded) + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias)); if (objAdded) ignore_value(qemuMonitorDelObject(priv->mon, objAlias)); if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && chardevAdded) -- 2.7.4

On Fri, Oct 21, 2016 at 10:22:31AM -0400, John Ferlan wrote:
Commit id '2c322378' missed the nuance that the rng backend could be using a TCP chardev and if TLS is enabled on the host, thus will need to have the TLS object added.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_hotplug.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 4b2a24c..aac1338 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1851,26 +1851,30 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRNGDefPtr rng) { + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; char *devstr = NULL; char *charAlias = NULL; char *objAlias = NULL; + char *tlsAlias = NULL; bool releaseaddr = false; bool chardevAdded = false; bool objAdded = false; + bool tlsobjAdded = false; virJSONValuePtr props = NULL; + virJSONValuePtr tlsProps = NULL; virDomainCCWAddressSetPtr ccwaddrs = NULL; const char *type; int ret = -1; int rv;
if (qemuAssignDeviceRNGAlias(vm->def, rng) < 0) - return -1; + goto cleanup;
/* preallocate space for the device definition */ if (VIR_REALLOC_N(vm->def->rngs, vm->def->nrngs + 1) < 0) - return -1; + goto cleanup;
if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { if (qemuDomainMachineIsS390CCW(vm->def) && @@ -1882,14 +1886,14 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, } else { if (!qemuCheckCCWS390AddressSupport(vm->def, rng->info, priv->qemuCaps, rng->source.file)) - return -1; + goto cleanup; } releaseaddr = true;
if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE || rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { if (virDomainPCIAddressEnsureAddr(priv->pciaddrs, &rng->info) < 0) - return -1; + goto cleanup; } else if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { if (!(ccwaddrs = qemuDomainCCWAddrSetCreateFromDomain(vm->def))) goto cleanup; @@ -1911,8 +1915,22 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, if (!(charAlias = qemuAliasChardevFromDevAlias(rng->info.alias))) goto cleanup;
+ if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
There should be check for dev->type == VIR_DOMAIN_CHR_TYPE_TCP, but as I've pointed out in patch 01 the check should be moved into the helper. ACK Pavel
+ qemuDomainGetChardevTLSObjects(cfg, priv, rng->source.chardev, + charAlias, &tlsProps, &tlsAlias) < 0) + goto cleanup; + qemuDomainObjEnterMonitor(driver, vm);
+ if (tlsAlias) { + rv = qemuMonitorAddObject(priv->mon, "tls-creds-x509", + tlsAlias, tlsProps); + tlsProps = NULL; /* qemuMonitorAddObject consumes */ + if (rv < 0) + goto exit_monitor; + tlsobjAdded = true; + } + if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && qemuMonitorAttachCharDev(priv->mon, charAlias, rng->source.chardev) < 0) @@ -1940,17 +1958,22 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, audit: virDomainAuditRNG(vm, NULL, rng, "attach", ret == 0); cleanup: + virJSONValueFree(tlsProps); virJSONValueFree(props); if (ret < 0 && releaseaddr) qemuDomainReleaseDeviceAddress(vm, &rng->info, NULL); + VIR_FREE(tlsAlias); VIR_FREE(charAlias); VIR_FREE(objAlias); VIR_FREE(devstr); virDomainCCWAddressSetFree(ccwaddrs); + virObjectUnref(cfg); return ret;
exit_monitor: orig_err = virSaveLastError(); + if (tlsobjAdded) + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias)); if (objAdded) ignore_value(qemuMonitorDelObject(priv->mon, objAlias)); if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && chardevAdded) -- 2.7.4
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
participants (2)
-
John Ferlan
-
Pavel Hrdina