+Tue Jul 24 10:29:11 EST 2007 Daniel P. Berrange <berrange@redhat.com>
+
+ * src/qemu_conf.c, src/qemu_conf.h: Added support for the VNC
+ 'listen' parameter in XML. Move -nographics flag to start of
+ command line to avoid issues with QEMU default monitor settings.
+ * tests/qemuxml2argvtest.c, tests/qemuxml2xmltest.c: Re-enable
+ VNC & SDL tests now they are working correctly
+ * tests/qemudxml2argvdata/*.args: Move -nographics arg to new
+ location due to qemu_conf.c changes
+
Tue Jul 24 10:24:11 EST 2007 Daniel P. Berrange <berrange@redhat.com>
* src/qemu_driver.c: Fixed crash when cleaning up after failed
def->graphicsType = QEMUD_GRAPHICS_NONE;
} else if ((prop = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "type"))) {
if (!strcmp((char *)prop, "vnc")) {
+ xmlChar *vncport, *vnclisten;
def->graphicsType = QEMUD_GRAPHICS_VNC;
- prop = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "port");
- if (prop) {
+ vncport = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "port");
+ if (vncport) {
conv = NULL;
- def->vncPort = strtoll((const char*)prop, &conv, 10);
+ def->vncPort = strtoll((const char*)vncport, &conv, 10);
} else {
def->vncPort = -1;
}
+ vnclisten = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "listen");
+ if (vnclisten && *vnclisten)
+ strncpy(def->vncListen, (char *)vnclisten, BR_INET_ADDR_MAXLEN-1);
+ else
+ strcpy(def->vncListen, "127.0.0.1");
+ def->vncListen[BR_INET_ADDR_MAXLEN-1] = '\0';
+ xmlFree(vncport);
+ xmlFree(vnclisten);
} else if (!strcmp((char *)prop, "sdl")) {
def->graphicsType = QEMUD_GRAPHICS_SDL;
} else {
if (!((*argv)[++n] = strdup(vcpus)))
goto no_memory;
+ /*
+ * NB, -nographic *MUST* come before any serial, or monitor
+ * or parallel port flags due to QEMU craziness, where it
+ * decides to change the serial port & monitor to be on stdout
+ * if you ask for nographic. So we have to make sure we override
+ * these defaults ourselves...
+ */
+ if (vm->def->graphicsType == QEMUD_GRAPHICS_NONE) {
+ if (!((*argv)[++n] = strdup("-nographic")))
+ goto no_memory;
+ }
+
if (!((*argv)[++n] = strdup("-monitor")))
goto no_memory;
if (!((*argv)[++n] = strdup("pty")))
}
if (vm->def->graphicsType == QEMUD_GRAPHICS_VNC) {
- char port[10];
+ char vncdisplay[BR_INET_ADDR_MAXLEN+20];
int ret;
- ret = snprintf(port, sizeof(port),
- ((driver->qemuCmdFlags & QEMUD_CMD_FLAG_VNC_COLON) ?
- ":%d" : "%d"),
- vm->def->vncActivePort - 5900);
- if (ret < 0 || ret >= (int)sizeof(port))
+ if (driver->qemuCmdFlags & QEMUD_CMD_FLAG_VNC_COLON)
+ ret = snprintf(vncdisplay, sizeof(vncdisplay), "%s:%d",
+ vm->def->vncListen,
+ vm->def->vncActivePort - 5900);
+ else
+ ret = snprintf(vncdisplay, sizeof(vncdisplay), "%d",
+ vm->def->vncActivePort - 5900);
+ if (ret < 0 || ret >= (int)sizeof(vncdisplay))
goto error;
if (!((*argv)[++n] = strdup("-vnc")))
goto no_memory;
- if (!((*argv)[++n] = strdup(port)))
+ if (!((*argv)[++n] = strdup(vncdisplay)))
goto no_memory;
} else if (vm->def->graphicsType == QEMUD_GRAPHICS_NONE) {
- if (!((*argv)[++n] = strdup("-nographic")))
- goto no_memory;
+ /* Nada - we added -nographic earlier in this function */
} else {
/* SDL is the default. no args needed */
}
qemudIsActiveVM(vm) && live ? def->vncActivePort : def->vncPort) < 0)
goto no_memory;
+ if (def->vncListen[0] &&
+ virBufferVSprintf(buf, " listen='%s'",
+ def->vncListen) < 0)
+ goto no_memory;
+
if (virBufferAdd(buf, "/>\n", -1) < 0)
goto no_memory;
break;
int graphicsType;
int vncPort;
int vncActivePort;
+ char vncListen[BR_INET_ADDR_MAXLEN];
int ndisks;
struct qemud_vm_disk_def *disks;
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot d -cdrom /dev/cdrom -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot d -cdrom /dev/cdrom -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot a -hda /dev/HostVG/QEMUGuest1 -fda /tmp/firmware.img -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot a -hda /dev/HostVG/QEMUGuest1 -fda /tmp/firmware.img -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot n -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot n -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -localtime -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -localtime -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -cdrom /root/boot.iso -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -cdrom /root/boot.iso -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -fda /dev/fd0 -fdb /tmp/firmware.img -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -fda /dev/fd0 -fdb /tmp/firmware.img -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -hdb /dev/HostVG/QEMUGuest2 -hdc /tmp/data.img -hdd /tmp/logs.img -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -hdb /dev/HostVG/QEMUGuest2 -hdc /tmp/data.img -hdd /tmp/logs.img -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -sdl
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice mouse -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice mouse
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice tablet -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -usbdevice tablet
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-reboot -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-reboot -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -usb
\ No newline at end of file
-/usr/bin/qemu -M pc -m 214 -smp 1 -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net user,vlan=0 -usb -nographic
\ No newline at end of file
+/usr/bin/qemu -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net user,vlan=0 -usb
\ No newline at end of file
1, testCompareXMLToArgvHelper, "disk-many") < 0)
ret = -1;
- if (0 && virtTestRun("QEMU XML-2-ARGV Graphics VNC",
+ if (virtTestRun("QEMU XML-2-ARGV Graphics VNC",
1, testCompareXMLToArgvHelper, "graphics-vnc") < 0)
ret = -1;
- if (0 && virtTestRun("QEMU XML-2-ARGV Graphics SDL",
+ if (virtTestRun("QEMU XML-2-ARGV Graphics SDL",
1, testCompareXMLToArgvHelper, "graphics-sdl") < 0)
ret = -1;
1, testCompareXMLToXMLHelper, "disk-many") < 0)
ret = -1;
- if (0 && virtTestRun("QEMU XML-2-ARGV Graphics VNC",
+ if (virtTestRun("QEMU XML-2-ARGV Graphics VNC",
1, testCompareXMLToXMLHelper, "graphics-vnc") < 0)
ret = -1;