You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.3 KiB
90 lines
3.3 KiB
From 242ddaa613c4d41cbdd063b73d20292049944b47 Mon Sep 17 00:00:00 2001 |
|
From: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> |
|
Date: Mon, 7 Oct 2013 16:02:37 +0200 |
|
Subject: [PATCH 24/60] KVMRedirectionSAP: Only return redirection SAPs for VNC |
|
graphics |
|
|
|
Since pty consoles still show up as GraphicsRASDs the check for |
|
VNC redirection proved to be too rigid. Instead of failing the |
|
associator call, PTY consoles will just be ignored now. |
|
This is an old bug, but will be exposed when cimtest is extended |
|
to handle consoles. |
|
|
|
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> |
|
Reviewed-by: Daniel Hansel <daniel.hansel@linux.vnet.ibm.com> |
|
Signed-off-by: John Ferlan <jferlan@redhat.com> |
|
--- |
|
src/Virt_KVMRedirectionSAP.c | 26 +++++++++++++++----------- |
|
1 file changed, 15 insertions(+), 11 deletions(-) |
|
|
|
diff --git a/src/Virt_KVMRedirectionSAP.c b/src/Virt_KVMRedirectionSAP.c |
|
index 708b0d1..1533e52 100644 |
|
--- a/src/Virt_KVMRedirectionSAP.c |
|
+++ b/src/Virt_KVMRedirectionSAP.c |
|
@@ -264,28 +264,31 @@ static CMPIStatus get_vnc_sessions(const CMPIBroker *broker, |
|
return s; |
|
} |
|
|
|
-static bool check_graphics(virDomainPtr dom, |
|
- struct domain **dominfo) |
|
+static int check_graphics(virDomainPtr dom, |
|
+ struct domain **dominfo) |
|
{ |
|
int ret = 0; |
|
+ int i; |
|
|
|
ret = get_dominfo(dom, dominfo); |
|
if (!ret) { |
|
CU_DEBUG("Unable to get domain info"); |
|
- return false; |
|
+ return -1; |
|
} |
|
|
|
if ((*dominfo)->dev_graphics == NULL) { |
|
CU_DEBUG("No graphics device associated with guest"); |
|
- return false; |
|
+ return -1; |
|
} |
|
|
|
- if (!STREQC((*dominfo)->dev_graphics->dev.graphics.type, "vnc")) { |
|
- CU_DEBUG("Only vnc devices have console redirection sessions"); |
|
- return false; |
|
+ for (i = 0; i < (*dominfo)->dev_graphics_ct; i++) { |
|
+ if (STREQC((*dominfo)->dev_graphics[i].dev.graphics.type, "vnc")) { |
|
+ return i; |
|
+ } |
|
} |
|
|
|
- return true; |
|
+ CU_DEBUG("Only vnc devices have console redirection sessions"); |
|
+ return -1; |
|
} |
|
|
|
static CMPIStatus return_console_sap(const CMPIObjectPath *ref, |
|
@@ -362,12 +365,13 @@ CMPIStatus enum_console_sap(const CMPIBroker *broker, |
|
} |
|
|
|
for (i = 0; i < count; i++) { |
|
- if (!check_graphics(domain_list[i], &dominfo)) { |
|
+ int pos = check_graphics(domain_list[i], &dominfo); |
|
+ if (pos < 0) { |
|
cleanup_dominfo(&dominfo); |
|
continue; |
|
} |
|
|
|
- ret = sscanf(dominfo->dev_graphics->dev.graphics.dev.vnc.port, |
|
+ ret = sscanf(dominfo->dev_graphics[pos].dev.graphics.dev.vnc.port, |
|
"%d", |
|
&lport); |
|
if (ret != 1) { |
|
@@ -449,7 +453,7 @@ CMPIStatus get_console_sap_by_name(const CMPIBroker *broker, |
|
goto out; |
|
} |
|
|
|
- if (!check_graphics(dom, &dominfo)) { |
|
+ if (check_graphics(dom, &dominfo) < 0) { |
|
virt_set_status(broker, &s, |
|
CMPI_RC_ERR_FAILED, |
|
conn, |
|
-- |
|
2.1.0
|
|
|