aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_qmp.c
diff options
context:
space:
mode:
authorAnthony PERARD <anthony.perard@citrix.com>2012-02-20 18:45:29 +0000
committerAnthony PERARD <anthony.perard@citrix.com>2012-02-20 18:45:29 +0000
commit60d92830c6c31d0ba286b0ff1e8a377e84b061ca (patch)
tree54ea9a4b08a94e9a3ab24d95c2f39efdb41bee94 /tools/libxl/libxl_qmp.c
parent58aa83301c4c4f6d7000136433e36e14335dc462 (diff)
downloadxen-60d92830c6c31d0ba286b0ff1e8a377e84b061ca.tar.gz
xen-60d92830c6c31d0ba286b0ff1e8a377e84b061ca.tar.bz2
xen-60d92830c6c31d0ba286b0ff1e8a377e84b061ca.zip
libxl: Set VNC password through QMP
This patch provide the code to set the VNC password to QEMU upstream through VNC. The password is still stored in xenstore but will not be used by QEMU upstream. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Acked-by: Ian Campbell <ian.campbell.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_qmp.c')
-rw-r--r--tools/libxl/libxl_qmp.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c
index 69d4d0517b..43fd134d8b 100644
--- a/tools/libxl/libxl_qmp.c
+++ b/tools/libxl/libxl_qmp.c
@@ -880,8 +880,33 @@ out:
return rc;
}
-int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid)
+static int qmp_change(libxl__gc *gc, libxl__qmp_handler *qmp,
+ char *device, char *target, char *arg)
{
+ flexarray_t *parameters = NULL;
+ libxl_key_value_list args = NULL;
+ int rc = 0;
+
+ parameters = flexarray_make(6, 1);
+ flexarray_append_pair(parameters, "device", device);
+ flexarray_append_pair(parameters, "target", target);
+ if (arg)
+ flexarray_append_pair(parameters, "arg", arg);
+ args = libxl__xs_kvs_of_flexarray(gc, parameters, parameters->count);
+ if (!args)
+ return ERROR_NOMEM;
+
+ rc = qmp_synchronous_send(qmp, "change", &args,
+ NULL, NULL, qmp->timeout);
+
+ flexarray_free(parameters);
+ return rc;
+}
+
+int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid,
+ const libxl_domain_config *guest_config)
+{
+ const libxl_vnc_info *vnc = libxl__dm_vnc(guest_config);
libxl__qmp_handler *qmp = NULL;
int ret = 0;
@@ -889,6 +914,9 @@ int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid)
if (!qmp)
return -1;
ret = libxl__qmp_query_serial(qmp);
+ if (!ret && vnc && vnc->passwd) {
+ ret = qmp_change(gc, qmp, "vnc", "password", vnc->passwd);
+ }
libxl__qmp_close(qmp);
return ret;
}