/* clear auto generated unix socket path for inactive definitions */
if ((parseFlags & VIR_DOMAIN_DEF_PARSE_INACTIVE) &&
dev->type == VIR_DOMAIN_DEVICE_CHR) {
- if (qemuDomainChrDefDropDefaultPath(dev->data.chr, driver) < 0)
+ virDomainChrDefPtr chr = dev->data.chr;
+ if (qemuDomainChrDefDropDefaultPath(chr, driver) < 0)
goto cleanup;
+
+ /* For UNIX chardev if no path is provided we generate one.
+ * This also implies that the mode is 'bind'. */
+ if (chr->source &&
+ chr->source->type == VIR_DOMAIN_CHR_TYPE_UNIX &&
+ !chr->source->data.nix.path) {
+ chr->source->data.nix.listen = true;
+ }
}
if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
return -1;
}
- channel->source->data.nix.listen = true;
-
return 0;
}
--- /dev/null
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <devices>
+ <emulator>/usr/bin/qemu-system-i686</emulator>
+ <controller type='virtio-serial' index='1'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
+ </controller>
+ <channel type='unix'>
+ <source mode='connect' path='/tmp/channel/domain-oldname/asdf'>
+ <reconnect enabled='yes' timeout='10'/>
+ </source>
+ <target type='virtio' name='asdf'/>
+ </channel>
+ <memballoon model='none'/>
+ </devices>
+</domain>
DO_TEST_PARSE_ERROR("chardev-reconnect-invalid-timeout",
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_CHARDEV_RECONNECT);
+ DO_TEST_PARSE_ERROR("chardev-reconnect-generated-path",
+ QEMU_CAPS_NODEFCONFIG,
+ QEMU_CAPS_CHARDEV_RECONNECT);
DO_TEST("usb-controller",
QEMU_CAPS_NODEFCONFIG);