1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-04-01 20:05:19 +00:00

qemu: add 'rdp' capability if qemu-rdp is available

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
Marc-André Lureau 2025-03-16 12:18:39 +04:00 committed by Martin Kletzander
parent e008d229f4
commit f5e5a9bec9
59 changed files with 87 additions and 6 deletions

View File

@ -6475,7 +6475,8 @@ virQEMUCapsFillDomainDeviceDiskCaps(virQEMUCaps *qemuCaps,
void
virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCaps *qemuCaps,
virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUDriverConfig *cfg,
virQEMUCaps *qemuCaps,
virDomainCapsDeviceGraphics *dev)
{
dev->supported = VIR_TRISTATE_BOOL_YES;
@ -6489,8 +6490,14 @@ virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCaps *qemuCaps,
VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SPICE);
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_EGL_HEADLESS))
VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS);
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY_DBUS))
VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_DBUS);
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY_DBUS)) {
VIR_DOMAIN_CAPS_ENUM_SET(dev->type,
VIR_DOMAIN_GRAPHICS_TYPE_DBUS);
if (qemuRdpAvailable(cfg->qemuRdpName)) {
VIR_DOMAIN_CAPS_ENUM_SET(dev->type,
VIR_DOMAIN_GRAPHICS_TYPE_RDP);
}
}
}
@ -6974,7 +6981,7 @@ virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg,
virQEMUCapsFillDomainCPUCaps(qemuCaps, hostarch, domCaps);
virQEMUCapsFillDomainMemoryBackingCaps(qemuCaps, memoryBacking);
virQEMUCapsFillDomainDeviceDiskCaps(qemuCaps, domCaps->machine, disk);
virQEMUCapsFillDomainDeviceGraphicsCaps(qemuCaps, graphics);
virQEMUCapsFillDomainDeviceGraphicsCaps(cfg, qemuCaps, graphics);
virQEMUCapsFillDomainDeviceVideoCaps(qemuCaps, video);
virQEMUCapsFillDomainDeviceHostdevCaps(qemuCaps, hostdev);
virQEMUCapsFillDomainDeviceRNGCaps(qemuCaps, rng);

View File

@ -876,7 +876,8 @@ int virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg,
void virQEMUCapsFillDomainMemoryBackingCaps(virQEMUCaps *qemuCaps,
virDomainCapsMemoryBacking *memoryBacking);
void virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCaps *qemuCaps,
void virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUDriverConfig *cfg,
virQEMUCaps *qemuCaps,
virDomainCapsDeviceGraphics *dev);
void virQEMUCapsFillDomainDeviceVideoCaps(virQEMUCaps *qemuCaps,

View File

@ -411,3 +411,14 @@ qemuRdpSetCredentials(virDomainObj *vm,
"SetCredentials",
args);
}
bool
qemuRdpAvailable(const char *helper)
{
g_autoptr(qemuRdp) rdp = NULL;
rdp = qemuRdpNewForHelper(helper);
return rdp && qemuRdpHasFeature(rdp, QEMU_RDP_FEATURE_DBUS_ADDRESS);
}

View File

@ -42,6 +42,8 @@ struct _qemuRdp {
guint leaving_id;
};
bool qemuRdpAvailable(const char *helper);
qemuRdp *qemuRdpNew(void);
qemuRdp *qemuRdpNewForHelper(const char *helper);

View File

@ -4513,9 +4513,10 @@ qemuValidateDomainDeviceDefGraphics(const virDomainGraphicsDef *graphics,
virQEMUDriver *driver,
virQEMUCaps *qemuCaps)
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
virDomainCapsDeviceGraphics graphicsCaps = { 0 };
virQEMUCapsFillDomainDeviceGraphicsCaps(qemuCaps, &graphicsCaps);
virQEMUCapsFillDomainDeviceGraphicsCaps(cfg, qemuCaps, &graphicsCaps);
if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(graphicsCaps.type, graphics->type)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,

View File

@ -697,6 +697,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1558,6 +1558,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1666,6 +1666,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1666,6 +1666,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -253,6 +253,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -697,6 +697,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1558,6 +1558,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1050,6 +1050,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1849,6 +1849,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1050,6 +1050,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1017,6 +1017,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1797,6 +1797,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1017,6 +1017,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1022,6 +1022,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1022,6 +1022,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1502,6 +1502,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1502,6 +1502,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -65,6 +65,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1022,6 +1022,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1104,6 +1104,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1597,6 +1597,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1104,6 +1104,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1363,6 +1363,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1619,6 +1619,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -342,6 +342,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -1363,6 +1363,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1364,6 +1364,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -72,6 +72,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>dbus</value>
</enum>

View File

@ -1585,6 +1585,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -120,6 +120,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -76,6 +76,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>dbus</value>
</enum>

View File

@ -120,6 +120,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -69,6 +69,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -342,6 +342,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -1364,6 +1364,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1364,6 +1364,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1514,6 +1514,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -60,6 +60,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1364,6 +1364,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1500,6 +1500,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -82,6 +82,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1619,6 +1619,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -71,6 +71,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -205,6 +205,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -1500,6 +1500,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -118,6 +118,7 @@
<graphics supported='yes'>
<enum name='type'>
<value>vnc</value>
<value>rdp</value>
<value>dbus</value>
</enum>
</graphics>

View File

@ -697,6 +697,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1558,6 +1558,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1666,6 +1666,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1666,6 +1666,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -205,6 +205,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>egl-headless</value>
<value>dbus</value>
</enum>

View File

@ -697,6 +697,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -1558,6 +1558,7 @@
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>rdp</value>
<value>spice</value>
<value>egl-headless</value>
<value>dbus</value>

View File

@ -52,6 +52,12 @@ bool virTPMHasSwtpm(void)
}
/* Enough to tell capabilities code that qemu-rdp is usable */
bool qemuRdpAvailable(const char *helper G_GNUC_UNUSED)
{
return true;
}
bool
virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap)