
On Tue, Apr 09, 2013 at 19:05:28 +0200, Michal Privoznik wrote:
It's not desired to force users imagine path for a socket they are not even supposed to connect to. On the other hand, we already have a release where the qemu agent socket path is exposed to XML, so we cannot silently drop it from there. The new path is generated in form:
$LOCALSTATEDIR/lib/libvirt/qemu/channel/target/$domain.$name --- libvirt.spec.in | 1 + src/Makefile.am | 1 + src/conf/domain_conf.c | 34 ++++++++++++++++------------------ src/qemu/qemu_domain.c | 16 ++++++++++++++++ 4 files changed, 34 insertions(+), 18 deletions(-) ... diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 3d6eef4..967890f 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -738,6 +738,22 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, (def->os.arch == VIR_ARCH_S390 || def->os.arch == VIR_ARCH_S390X)) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO;
+ /* auto generate unix socket path */ + if (dev->type == VIR_DOMAIN_DEVICE_CHR && + dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL && + dev->data.chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO && + dev->data.chr->source.type == VIR_DOMAIN_CHR_TYPE_UNIX && + !dev->data.chr->source.data.nix.path && + (cfg || (driver && (cfg = virQEMUDriverGetConfig(driver))))) {
I think this should fail if path is NULL and (cfg || (driver && (cfg = virQEMUDriverGetConfig(driver)))) is not true. On the other hand, do we actually need to check for this? Aren't both cfg and driver guaranteed to be non-NULL at this point?
+ + if (virAsprintf(&dev->data.chr->source.data.nix.path, + "%s/channel/target/%s.%s", + cfg->libDir, def->name, + dev->data.chr->target.name) < 0) + goto no_memory; + dev->data.chr->source.data.nix.listen = true; + } + ret = 0;
cleanup:
Jirka