static int xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def) { const char *listenAddr = NULL; if (STREQ(def->os.type, "hvm")) { if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { /* set others to false but may not be necessary */ if (xenConfigSetInt(conf, "sdl", 0) < 0) return -1; if (xenConfigSetInt(conf, "vnc", 0) < 0) return -1; if (xenConfigSetInt(conf, "spice", 1) < 0) return -1; if (xenConfigSetInt(conf, "spiceport", def->graphics[0]->data.spice.port) < 0) return -1; if (xenConfigSetInt(conf, "spicetls_port", def->graphics[0]->data.spice.tlsPort) < 0) return -1; if (def->graphics[0]->data.spice.auth.passwd) { if (xenConfigSetInt(conf, "spicedisable_ticketing", 1) < 0) return -1; if (def->graphics[0]->data.spice.auth.passwd && xenConfigSetString(conf, "spicepasswd", def->graphics[0]->data.spice.auth.passwd) < 0) return -1; } listenAddr = virDomainGraphicsListenGetAddress(def->graphics[0], 0); if (listenAddr && xenConfigSetString(conf, "spicehost", listenAddr) < 0) return -1; if (xenConfigSetInt(conf, "spiceagent_mouse", def->graphics[0]->data.spice.mousemode) < 0) return -1; if (def->graphics[0]->data.spice.copypaste) { if (xenConfigSetInt(conf, "spicedvagent", 1) < 0) return -1; if (xenConfigSetInt(conf, "spice_clipboard_sharing", def->graphics[0]->data.spice.copypaste) < 0) return -1; } } } return 0; }
int libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainGraphicsDefPtr l_vfb, libxl_device_vfb *x_vfb) { unsigned short port; const char *listenAddr; libxl_device_vfb_init(x_vfb); switch (l_vfb->type) { case VIR_DOMAIN_GRAPHICS_TYPE_SDL: libxl_defbool_set(&x_vfb->sdl.enable, 1); if (VIR_STRDUP(x_vfb->sdl.display, l_vfb->data.sdl.display) < 0) return -1; if (VIR_STRDUP(x_vfb->sdl.xauthority, l_vfb->data.sdl.xauth) < 0) return -1; break; case VIR_DOMAIN_GRAPHICS_TYPE_VNC: libxl_defbool_set(&x_vfb->vnc.enable, 1); /* driver handles selection of free port */ libxl_defbool_set(&x_vfb->vnc.findunused, 0); if (l_vfb->data.vnc.autoport) { if (virPortAllocatorAcquire(driver->reservedVNCPorts, &port) < 0) return -1; l_vfb->data.vnc.port = port; } x_vfb->vnc.display = l_vfb->data.vnc.port - LIBXL_VNC_PORT_MIN; listenAddr = virDomainGraphicsListenGetAddress(l_vfb, 0); if (listenAddr) { /* libxl_device_vfb_init() does VIR_STRDUP("127.0.0.1") */ VIR_FREE(x_vfb->vnc.listen); if (VIR_STRDUP(x_vfb->vnc.listen, listenAddr) < 0) return -1; } if (VIR_STRDUP(x_vfb->keymap, l_vfb->data.vnc.keymap) < 0) return -1; break; } return 0; }
static int xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def) { const char *listenAddr = NULL; virDomainGraphicsDefPtr graphics; if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { graphics = def->graphics[0]; if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { /* set others to false but may not be necessary */ if (xenConfigSetInt(conf, "sdl", 0) < 0) return -1; if (xenConfigSetInt(conf, "vnc", 0) < 0) return -1; if (xenConfigSetInt(conf, "spice", 1) < 0) return -1; listenAddr = virDomainGraphicsListenGetAddress(graphics, 0); if (listenAddr && xenConfigSetString(conf, "spicehost", listenAddr) < 0) return -1; if (xenConfigSetInt(conf, "spiceport", graphics->data.spice.port) < 0) return -1; if (xenConfigSetInt(conf, "spicetls_port", graphics->data.spice.tlsPort) < 0) return -1; if (graphics->data.spice.auth.passwd) { if (xenConfigSetInt(conf, "spicedisable_ticketing", 0) < 0) return -1; if (xenConfigSetString(conf, "spicepasswd", graphics->data.spice.auth.passwd) < 0) return -1; } else { if (xenConfigSetInt(conf, "spicedisable_ticketing", 1) < 0) return -1; } if (graphics->data.spice.mousemode) { switch (graphics->data.spice.mousemode) { case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER: if (xenConfigSetInt(conf, "spiceagent_mouse", 0) < 0) return -1; break; case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT: if (xenConfigSetInt(conf, "spiceagent_mouse", 1) < 0) return -1; /* * spicevdagent must be enabled if using client * mode mouse */ if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) return -1; break; default: break; } } if (graphics->data.spice.copypaste == VIR_TRISTATE_BOOL_YES) { if (xenConfigSetInt(conf, "spice_clipboard_sharing", 1) < 0) return -1; /* * spicevdagent must be enabled if spice_clipboard_sharing * is enabled */ if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) return -1; } } } return 0; }