net->mac = mac;
}
- /* do fake auto-alloc of graphics ports, if such config is used */
- for (i = 0; i < vm->def->ngraphics; ++i) {
- virDomainGraphicsDefPtr graphics = vm->def->graphics[i];
- if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
- if (qemuProcessVNCAllocatePorts(driver, graphics, false) < 0)
- goto cleanup;
- } else if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
- if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics, false) < 0)
- goto cleanup;
- }
- }
-
if (!(cmd = qemuProcessCreatePretendCmd(conn, driver, vm, NULL,
qemuCheckFips(), true,
VIR_QEMU_PROCESS_START_COLD)))
virDomainObjListForEach(driver->domains, qemuProcessReconnectHelper, &data);
}
-int
+static int
qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver,
virDomainGraphicsDefPtr graphics,
bool allocate)
return 0;
}
-int
+static int
qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
virQEMUDriverConfigPtr cfg,
virDomainGraphicsDefPtr graphics,
static int
qemuProcessSetupGraphics(virQEMUDriverPtr driver,
- virDomainObjPtr vm)
+ virDomainObjPtr vm,
+ unsigned int flags)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ bool allocate = !(flags & VIR_QEMU_PROCESS_START_PRETEND);
size_t i;
int ret = -1;
- if (qemuProcessGraphicsReservePorts(driver, vm) < 0)
+ if (allocate && qemuProcessGraphicsReservePorts(driver, vm) < 0)
goto cleanup;
for (i = 0; i < vm->def->ngraphics; ++i) {
switch (graphics->type) {
case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
- if (qemuProcessVNCAllocatePorts(driver, graphics, true) < 0)
+ if (qemuProcessVNCAllocatePorts(driver, graphics, allocate) < 0)
goto cleanup;
break;
case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
- if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics, true) < 0)
+ if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics, allocate) < 0)
goto cleanup;
break;
if (qemuAssignDeviceAliases(vm->def, priv->qemuCaps) < 0)
goto cleanup;
+ VIR_DEBUG("Setting up ports for graphics");
+ if (qemuProcessSetupGraphics(driver, vm, flags) < 0)
+ goto cleanup;
+
/* Fill in run-time values for graphics devices. */
for (i = 0; i < vm->def->ngraphics; i++) {
virDomainGraphicsDefPtr graphics = vm->def->graphics[i];
VIR_DEBUG("Ensuring no historical cgroup is lying around");
qemuRemoveCgroup(vm);
- VIR_DEBUG("Setting up ports for graphics");
- if (qemuProcessSetupGraphics(driver, vm) < 0)
- goto cleanup;
-
if (virFileMakePath(cfg->logDir) < 0) {
virReportSystemError(errno,
_("cannot create log directory %s"),
int qemuProcessSetSchedParams(int id, pid_t pid, size_t nsp,
virDomainThreadSchedParamPtr sp);
-int qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver,
- virDomainGraphicsDefPtr graphics,
- bool allocate);
-int qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
- virQEMUDriverConfigPtr cfg,
- virDomainGraphicsDefPtr graphics,
- bool allocate);
-
virDomainDiskDefPtr qemuProcessFindDomainDiskByAlias(virDomainObjPtr vm,
const char *alias);
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\
id=channel0,name=com.redhat.spice.0 \
-device usb-tablet,id=input0 \
--spice port=0 \
+-spice port=5901,tls-port=5902,addr=0.0.0.0,x509-dir=/etc/pki/libvirt-spice \
-vga cirrus \
-device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,\
id=channel1,name=com.redhat.spice.0 \
-device usb-tablet,id=input0 \
--spice port=0 \
+-spice port=5901,tls-port=5902,addr=127.0.0.1,x509-dir=/etc/pki/libvirt-spice \
-vga qxl \
-global qxl-vga.ram_size=67108864 \
-global qxl-vga.vram_size=67108864 \
-drive file=/var/lib/libvirt/images/QEMUGuest1,format=qcow2,if=none,\
id=drive-ide0-0-0,cache=none \
-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \
--vnc 127.0.0.1:-5900 \
+-vnc 127.0.0.1:0 \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pci.0,\
addr=0x3 \
-device qxl,id=video1,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x4 \