* [PATHCH] vncpassword support in libxl
@ 2010-05-06 15:01 Gihan Munasinghe
2010-05-06 15:45 ` [PATCH] " Gihan Munasinghe
0 siblings, 1 reply; 10+ messages in thread
From: Gihan Munasinghe @ 2010-05-06 15:01 UTC (permalink / raw)
To: xen-devel
[-- Attachment #1: Type: text/plain, Size: 401 bytes --]
Guys
When trying to move xen4.0 and libxl I found that libxl does not support
vncpassword with in the device model.
Was there are particular reason this feature is not implemented . To get
our vms ported in to xen4 and to change our management stack to use
libxl. I have done the following patch what do you guys think.
Thank
--
Gihan Munasinghe
R&D Team Leader
Flexiant Ltd.
www.flexiant.com
[-- Attachment #2: xen4-libxl-vncpass.patch --]
[-- Type: text/x-patch, Size: 6541 bytes --]
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.c xen-4.0.0/tools/libxl/libxl.c
--- vanila/xen-4.0.0/tools/libxl/libxl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.c 2010-05-06 15:38:02.000000000 +0100
@@ -186,7 +186,7 @@
if (info->hvm) {
ret = build_hvm(ctx, domid, info, state);
if (ret) goto out;
-
+
vments = libxl_calloc(ctx, 5, sizeof(char *));
vments[0] = "rtc/timeoffset";
vments[1] = (info->u.hvm.timeoffset) ? info->u.hvm.timeoffset : "";
@@ -663,7 +663,11 @@
flexarray_set(dm_args, num++, "-vnc");
if (info->vncdisplay) {
if (info->vnclisten && strchr(info->vnclisten, ':') == NULL) {
- flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ if(info->vncpasswd){
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d,password", info->vnclisten, info->vncdisplay));
+ }else{
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ }
} else {
flexarray_set(dm_args, num++, libxl_sprintf(ctx, "127.0.0.1:%d", info->vncdisplay));
}
@@ -786,6 +790,7 @@
vfb->vnclisten = info->vnclisten;
vfb->vncdisplay = info->vncdisplay;
vfb->vncunused = info->vncunused;
+ vfb->vncpasswd = info->vncpasswd;
vfb->keymap = info->keymap;
vfb->sdl = info->sdl;
vfb->opengl = info->opengl;
@@ -1012,10 +1017,32 @@
p->dom_path = libxl_xs_get_dompath(ctx, info->domid);
if (!p->dom_path) { libxl_free(ctx, p); return ERROR_FAIL; }
+ xs_transaction_t t;
+ char *vm_path;
+ char **pass_stuff;
+ if(info->vncpasswd){
+ retry_transaction:
+ //Supporting vnc password
+ // Need to find uuid and the write the vnc password to xenstore so that qemu can pick it up
+ t = xs_transaction_start(ctx->xsh);
+ vm_path = libxl_xs_read(ctx,t,libxl_sprintf(ctx, "%s/vm", p->dom_path));
+ if(vm_path){
+ //Now write the vncpassword in to it
+ pass_stuff = libxl_calloc(ctx, 2, sizeof(char *));
+ pass_stuff[0] = "vncpasswd";
+ pass_stuff[1] = info->vncpasswd;
+ libxl_xs_writev(ctx,t,vm_path,pass_stuff);
+ if (!xs_transaction_end(ctx->xsh, t, 0))
+ if (errno == EAGAIN)
+ goto retry_transaction;
+ }
+
+ }
+
rc = libxl_spawn_spawn(ctx, p, "device model", dm_xenstore_record_pid);
if (rc < 0) goto xit;
if (!rc) { /* inner child */
- libxl_exec(null, logfile_w, logfile_w,
+ libxl_exec(null, logfile_w, logfile_w,
info->device_model, args);
}
@@ -1571,6 +1598,8 @@
info->vnclisten = libxl_sprintf(ctx, "%s", vfb->vnclisten);
info->vncdisplay = vfb->vncdisplay;
info->vncunused = vfb->vncunused;
+ if(vfb->vncpasswd)
+ info->vncpasswd = vfb->vncpasswd;
if (vfb->keymap)
info->keymap = libxl_sprintf(ctx, "%s", vfb->keymap);
info->sdl = vfb->sdl;
@@ -1652,6 +1681,8 @@
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vnc));
flexarray_set(back, boffset++, "vnclisten");
flexarray_set(back, boffset++, vfb->vnclisten);
+ flexarray_set(back, boffset++, "vncpasswd");
+ flexarray_set(back, boffset++, vfb->vncpasswd);
flexarray_set(back, boffset++, "vncdisplay");
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vncdisplay));
flexarray_set(back, boffset++, "vncunused");
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.h xen-4.0.0/tools/libxl/libxl.h
--- vanila/xen-4.0.0/tools/libxl/libxl.h 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.h 2010-05-06 14:59:28.000000000 +0100
@@ -128,6 +128,7 @@
bool stdvga; /* stdvga enabled or disabled */
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
@@ -149,6 +150,7 @@
int devid;
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
diff -Naur vanila/xen-4.0.0/tools/libxl/xl.c xen-4.0.0/tools/libxl/xl.c
--- vanila/xen-4.0.0/tools/libxl/xl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/xl.c 2010-05-06 15:32:57.000000000 +0100
@@ -561,6 +561,8 @@
(*vfbs)[*num_vfbs].vnc = atoi(p2 + 1);
} else if (!strcmp(p, "vnclisten")) {
(*vfbs)[*num_vfbs].vnclisten = strdup(p2 + 1);
+ } else if (!strcmp(p, "vncpasswd")) {
+ (*vfbs)[*num_vfbs].vncpasswd = strdup(p2 + 1);
} else if (!strcmp(p, "vncdisplay")) {
(*vfbs)[*num_vfbs].vncdisplay = atoi(p2 + 1);
} else if (!strcmp(p, "vncunused")) {
@@ -639,6 +641,8 @@
dm_info->vnc = l;
if (!xlu_cfg_get_string (config, "vnclisten", &buf))
dm_info->vnclisten = strdup(buf);
+ if (!xlu_cfg_get_string (config, "vncpasswd", &buf))
+ dm_info->vncpasswd = strdup(buf);
if (!xlu_cfg_get_long (config, "vncdisplay", &l))
dm_info->vncdisplay = l;
if (!xlu_cfg_get_long (config, "vncunused", &l))
@@ -697,7 +701,6 @@
libxl_waiter *w1 = NULL, *w2 = NULL;
memset(&dm_info, 0x00, sizeof(dm_info));
- printf("Parsing config file %s\n", config_file);
parse_config_file(config_file, &info1, &info2, &disks, &num_disks, &vifs, &num_vifs, &pcidevs, &num_pcidevs, &vfbs, &num_vfbs, &vkbs, &num_vkbs, &dm_info);
if (debug)
printf_info(&info1, &info2, disks, num_disks, vifs, num_vifs, pcidevs, num_pcidevs, vfbs, num_vfbs, vkbs, num_vkbs, &dm_info);
@@ -718,12 +721,14 @@
return;
}
+
if (!restore_file || !need_daemon) {
if (dm_info.saved_state) {
free(dm_info.saved_state);
dm_info.saved_state = NULL;
}
ret = libxl_domain_build(&ctx, &info2, domid, &state);
+
} else {
int restore_fd;
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] vncpassword support in libxl
2010-05-06 15:01 [PATHCH] vncpassword support in libxl Gihan Munasinghe
@ 2010-05-06 15:45 ` Gihan Munasinghe
2010-05-06 16:02 ` Stefano Stabellini
2010-05-06 16:07 ` Ian Jackson
0 siblings, 2 replies; 10+ messages in thread
From: Gihan Munasinghe @ 2010-05-06 15:45 UTC (permalink / raw)
To: xen-devel
[-- Attachment #1: Type: text/plain, Size: 341 bytes --]
Guys
When trying to move xen4.0 and libxl I found that libxl does not support
vncpassword with in the device model.
Was there are particular reason this feature is not implemented . To get
our vms ported in to xen4 and to change our management stack to use
libxl. I have done the following patch what do you guys think.
Thanks
Gihan
[-- Attachment #2: xen4-libxl-vncpass.patch --]
[-- Type: text/x-patch, Size: 6541 bytes --]
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.c xen-4.0.0/tools/libxl/libxl.c
--- vanila/xen-4.0.0/tools/libxl/libxl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.c 2010-05-06 15:38:02.000000000 +0100
@@ -186,7 +186,7 @@
if (info->hvm) {
ret = build_hvm(ctx, domid, info, state);
if (ret) goto out;
-
+
vments = libxl_calloc(ctx, 5, sizeof(char *));
vments[0] = "rtc/timeoffset";
vments[1] = (info->u.hvm.timeoffset) ? info->u.hvm.timeoffset : "";
@@ -663,7 +663,11 @@
flexarray_set(dm_args, num++, "-vnc");
if (info->vncdisplay) {
if (info->vnclisten && strchr(info->vnclisten, ':') == NULL) {
- flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ if(info->vncpasswd){
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d,password", info->vnclisten, info->vncdisplay));
+ }else{
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ }
} else {
flexarray_set(dm_args, num++, libxl_sprintf(ctx, "127.0.0.1:%d", info->vncdisplay));
}
@@ -786,6 +790,7 @@
vfb->vnclisten = info->vnclisten;
vfb->vncdisplay = info->vncdisplay;
vfb->vncunused = info->vncunused;
+ vfb->vncpasswd = info->vncpasswd;
vfb->keymap = info->keymap;
vfb->sdl = info->sdl;
vfb->opengl = info->opengl;
@@ -1012,10 +1017,32 @@
p->dom_path = libxl_xs_get_dompath(ctx, info->domid);
if (!p->dom_path) { libxl_free(ctx, p); return ERROR_FAIL; }
+ xs_transaction_t t;
+ char *vm_path;
+ char **pass_stuff;
+ if(info->vncpasswd){
+ retry_transaction:
+ //Supporting vnc password
+ // Need to find uuid and the write the vnc password to xenstore so that qemu can pick it up
+ t = xs_transaction_start(ctx->xsh);
+ vm_path = libxl_xs_read(ctx,t,libxl_sprintf(ctx, "%s/vm", p->dom_path));
+ if(vm_path){
+ //Now write the vncpassword in to it
+ pass_stuff = libxl_calloc(ctx, 2, sizeof(char *));
+ pass_stuff[0] = "vncpasswd";
+ pass_stuff[1] = info->vncpasswd;
+ libxl_xs_writev(ctx,t,vm_path,pass_stuff);
+ if (!xs_transaction_end(ctx->xsh, t, 0))
+ if (errno == EAGAIN)
+ goto retry_transaction;
+ }
+
+ }
+
rc = libxl_spawn_spawn(ctx, p, "device model", dm_xenstore_record_pid);
if (rc < 0) goto xit;
if (!rc) { /* inner child */
- libxl_exec(null, logfile_w, logfile_w,
+ libxl_exec(null, logfile_w, logfile_w,
info->device_model, args);
}
@@ -1571,6 +1598,8 @@
info->vnclisten = libxl_sprintf(ctx, "%s", vfb->vnclisten);
info->vncdisplay = vfb->vncdisplay;
info->vncunused = vfb->vncunused;
+ if(vfb->vncpasswd)
+ info->vncpasswd = vfb->vncpasswd;
if (vfb->keymap)
info->keymap = libxl_sprintf(ctx, "%s", vfb->keymap);
info->sdl = vfb->sdl;
@@ -1652,6 +1681,8 @@
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vnc));
flexarray_set(back, boffset++, "vnclisten");
flexarray_set(back, boffset++, vfb->vnclisten);
+ flexarray_set(back, boffset++, "vncpasswd");
+ flexarray_set(back, boffset++, vfb->vncpasswd);
flexarray_set(back, boffset++, "vncdisplay");
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vncdisplay));
flexarray_set(back, boffset++, "vncunused");
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.h xen-4.0.0/tools/libxl/libxl.h
--- vanila/xen-4.0.0/tools/libxl/libxl.h 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.h 2010-05-06 14:59:28.000000000 +0100
@@ -128,6 +128,7 @@
bool stdvga; /* stdvga enabled or disabled */
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
@@ -149,6 +150,7 @@
int devid;
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
diff -Naur vanila/xen-4.0.0/tools/libxl/xl.c xen-4.0.0/tools/libxl/xl.c
--- vanila/xen-4.0.0/tools/libxl/xl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/xl.c 2010-05-06 15:32:57.000000000 +0100
@@ -561,6 +561,8 @@
(*vfbs)[*num_vfbs].vnc = atoi(p2 + 1);
} else if (!strcmp(p, "vnclisten")) {
(*vfbs)[*num_vfbs].vnclisten = strdup(p2 + 1);
+ } else if (!strcmp(p, "vncpasswd")) {
+ (*vfbs)[*num_vfbs].vncpasswd = strdup(p2 + 1);
} else if (!strcmp(p, "vncdisplay")) {
(*vfbs)[*num_vfbs].vncdisplay = atoi(p2 + 1);
} else if (!strcmp(p, "vncunused")) {
@@ -639,6 +641,8 @@
dm_info->vnc = l;
if (!xlu_cfg_get_string (config, "vnclisten", &buf))
dm_info->vnclisten = strdup(buf);
+ if (!xlu_cfg_get_string (config, "vncpasswd", &buf))
+ dm_info->vncpasswd = strdup(buf);
if (!xlu_cfg_get_long (config, "vncdisplay", &l))
dm_info->vncdisplay = l;
if (!xlu_cfg_get_long (config, "vncunused", &l))
@@ -697,7 +701,6 @@
libxl_waiter *w1 = NULL, *w2 = NULL;
memset(&dm_info, 0x00, sizeof(dm_info));
- printf("Parsing config file %s\n", config_file);
parse_config_file(config_file, &info1, &info2, &disks, &num_disks, &vifs, &num_vifs, &pcidevs, &num_pcidevs, &vfbs, &num_vfbs, &vkbs, &num_vkbs, &dm_info);
if (debug)
printf_info(&info1, &info2, disks, num_disks, vifs, num_vifs, pcidevs, num_pcidevs, vfbs, num_vfbs, vkbs, num_vkbs, &dm_info);
@@ -718,12 +721,14 @@
return;
}
+
if (!restore_file || !need_daemon) {
if (dm_info.saved_state) {
free(dm_info.saved_state);
dm_info.saved_state = NULL;
}
ret = libxl_domain_build(&ctx, &info2, domid, &state);
+
} else {
int restore_fd;
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 15:45 ` [PATCH] " Gihan Munasinghe
@ 2010-05-06 16:02 ` Stefano Stabellini
2010-05-06 16:10 ` Ian Jackson
2010-05-06 16:10 ` Gihan Munasinghe
2010-05-06 16:07 ` Ian Jackson
1 sibling, 2 replies; 10+ messages in thread
From: Stefano Stabellini @ 2010-05-06 16:02 UTC (permalink / raw)
To: Gihan Munasinghe; +Cc: xen-devel@lists.xensource.com
On Thu, 6 May 2010, Gihan Munasinghe wrote:
>
> Guys
>
> When trying to move xen4.0 and libxl I found that libxl does not support
> vncpassword with in the device model.
> Was there are particular reason this feature is not implemented . To get
> our vms ported in to xen4 and to change our management stack to use
> libxl. I have done the following patch what do you guys think.
>
> Thanks
> Gihan
>
>
The indentation is often wrong and sometimes you are adding\removing
blank lines for no reason.
But apart from this small cosmetic issues the patch looks good.
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 15:45 ` [PATCH] " Gihan Munasinghe
2010-05-06 16:02 ` Stefano Stabellini
@ 2010-05-06 16:07 ` Ian Jackson
2010-05-06 19:48 ` Gihan Munasinghe
1 sibling, 1 reply; 10+ messages in thread
From: Ian Jackson @ 2010-05-06 16:07 UTC (permalink / raw)
To: Gihan Munasinghe; +Cc: xen-devel
Gihan Munasinghe writes ("[Xen-devel] [PATCH] vncpassword support in libxl"):
> When trying to move xen4.0 and libxl I found that libxl does not support
> vncpassword with in the device model.
> Was there are particular reason this feature is not implemented . To get
> our vms ported in to xen4 and to change our management stack to use
> libxl. I have done the following patch what do you guys think.
It looks like a mostly reasonable patch, thanks. However you have
made a couple of apparently accidental changes:
- libxl_exec(null, logfile_w, logfile_w,
+ libxl_exec(null, logfile_w, logfile_w,
...
- printf("Parsing config file %s\n", config_file);
and so on.
Could people please review your patches by eye - yes, read every line
- before sending ?
In this case, please resubmit with only the necessary changes. While
you're at it, you should probably ensure that you submit a patch which
doesn't introduce tabs. I don't mind them but I know some people do.
You may want (setq indent-tabs-mode nil) in Emacs.
Ian.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 16:02 ` Stefano Stabellini
@ 2010-05-06 16:10 ` Ian Jackson
2010-05-06 16:12 ` Gihan Munasinghe
2010-05-06 16:10 ` Gihan Munasinghe
1 sibling, 1 reply; 10+ messages in thread
From: Ian Jackson @ 2010-05-06 16:10 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: Gihan Munasinghe, xen-devel@lists.xensource.com
Stefano Stabellini writes ("Re: [Xen-devel] [PATCH] vncpassword support in libxl"):
> The indentation is often wrong and sometimes you are adding\removing
> blank lines for no reason.
> But apart from this small cosmetic issues the patch looks good.
You missed that he removed this line:
- printf("Parsing config file %s\n", config_file);
This demonstrates why patches with spurious stuff in should be
rejected - it's too easy to miss a mistake when scanning past a lot of
spurious changes.
Ian.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 16:02 ` Stefano Stabellini
2010-05-06 16:10 ` Ian Jackson
@ 2010-05-06 16:10 ` Gihan Munasinghe
1 sibling, 0 replies; 10+ messages in thread
From: Gihan Munasinghe @ 2010-05-06 16:10 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel
Stefano Stabellini wrote:
> On Thu, 6 May 2010, Gihan Munasinghe wrote:
>
>> Guys
>>
>> When trying to move xen4.0 and libxl I found that libxl does not support
>> vncpassword with in the device model.
>> Was there are particular reason this feature is not implemented . To get
>> our vms ported in to xen4 and to change our management stack to use
>> libxl. I have done the following patch what do you guys think.
>>
>> Thanks
>> Gihan
>>
>>
>>
>
> The indentation is often wrong and sometimes you are adding\removing
> blank lines for no reason.
> But apart from this small cosmetic issues the patch looks good.
>
Cool, I'll do the cosmetic changes and resubmit the patch
> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 16:10 ` Ian Jackson
@ 2010-05-06 16:12 ` Gihan Munasinghe
0 siblings, 0 replies; 10+ messages in thread
From: Gihan Munasinghe @ 2010-05-06 16:12 UTC (permalink / raw)
To: Ian Jackson; +Cc: xen-devel@lists.xensource.com, Stefano Stabellini
Ian Jackson wrote:
> Stefano Stabellini writes ("Re: [Xen-devel] [PATCH] vncpassword support in libxl"):
>
>> The indentation is often wrong and sometimes you are adding\removing
>> blank lines for no reason.
>> But apart from this small cosmetic issues the patch looks good.
>>
>
> You missed that he removed this line:
>
> - printf("Parsing config file %s\n", config_file);
>
> This demonstrates why patches with spurious stuff in should be
> rejected - it's too easy to miss a mistake when scanning past a lot of
> spurious changes.
>
> Ian.
>
>
>
Yes my mad will do the changes and resubmit again
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 16:07 ` Ian Jackson
@ 2010-05-06 19:48 ` Gihan Munasinghe
2010-05-07 10:02 ` Ian Jackson
0 siblings, 1 reply; 10+ messages in thread
From: Gihan Munasinghe @ 2010-05-06 19:48 UTC (permalink / raw)
To: Ian Jackson; +Cc: xen-devel
[-- Attachment #1: Type: text/plain, Size: 1101 bytes --]
Ian Jackson wrote:
> Gihan Munasinghe writes ("[Xen-devel] [PATCH] vncpassword support in libxl"):
>
>> When trying to move xen4.0 and libxl I found that libxl does not support
>> vncpassword with in the device model.
>> Was there are particular reason this feature is not implemented . To get
>> our vms ported in to xen4 and to change our management stack to use
>> libxl. I have done the following patch what do you guys think.
>>
>
> It looks like a mostly reasonable patch, thanks. However you have
> made a couple of apparently accidental changes:
>
> - libxl_exec(null, logfile_w, logfile_w,
> + libxl_exec(null, logfile_w, logfile_w,
> ...
> - printf("Parsing config file %s\n", config_file);
>
> and so on.
>
Done
> In this case, please resubmit with only the necessary changes. While
> you're at it, you should probably ensure that you submit a patch which
> doesn't introduce tabs. I don't mind them but I know some people do.
> You may want (setq indent-tabs-mode nil) in Emacs.
>
Made the code to use spaces as well
New patch attached
Thanks
Gihan
[-- Attachment #2: xen4-libxl-vncpass.patch --]
[-- Type: text/plain, Size: 5407 bytes --]
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.c xen-4.0.0/tools/libxl/libxl.c
--- vanila/xen-4.0.0/tools/libxl/libxl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.c 2010-05-06 17:34:45.000000000 +0100
@@ -663,7 +663,11 @@
flexarray_set(dm_args, num++, "-vnc");
if (info->vncdisplay) {
if (info->vnclisten && strchr(info->vnclisten, ':') == NULL) {
- flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ if(info->vncpasswd){
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d,password", info->vnclisten, info->vncdisplay));
+ }else{
+ flexarray_set(dm_args, num++, libxl_sprintf(ctx, "%s:%d", info->vnclisten, info->vncdisplay));
+ }
} else {
flexarray_set(dm_args, num++, libxl_sprintf(ctx, "127.0.0.1:%d", info->vncdisplay));
}
@@ -786,6 +790,7 @@
vfb->vnclisten = info->vnclisten;
vfb->vncdisplay = info->vncdisplay;
vfb->vncunused = info->vncunused;
+ vfb->vncpasswd = info->vncpasswd;
vfb->keymap = info->keymap;
vfb->sdl = info->sdl;
vfb->opengl = info->opengl;
@@ -1012,6 +1017,27 @@
p->dom_path = libxl_xs_get_dompath(ctx, info->domid);
if (!p->dom_path) { libxl_free(ctx, p); return ERROR_FAIL; }
+ xs_transaction_t t;
+ char *vm_path;
+ char **pass_stuff;
+ if(info->vncpasswd){
+ retry_transaction:
+ //Supporting vnc password
+ // Need to find uuid and the write the vnc password to xenstore so that qemu can pick it up
+ t = xs_transaction_start(ctx->xsh);
+ vm_path = libxl_xs_read(ctx,t,libxl_sprintf(ctx, "%s/vm", p->dom_path));
+ if(vm_path){
+ //Now write the vncpassword in to it
+ pass_stuff = libxl_calloc(ctx, 2, sizeof(char *));
+ pass_stuff[0] = "vncpasswd";
+ pass_stuff[1] = info->vncpasswd;
+ libxl_xs_writev(ctx,t,vm_path,pass_stuff);
+ if (!xs_transaction_end(ctx->xsh, t, 0))
+ if (errno == EAGAIN)
+ goto retry_transaction;
+ }
+ }
+
rc = libxl_spawn_spawn(ctx, p, "device model", dm_xenstore_record_pid);
if (rc < 0) goto xit;
if (!rc) { /* inner child */
@@ -1571,6 +1597,8 @@
info->vnclisten = libxl_sprintf(ctx, "%s", vfb->vnclisten);
info->vncdisplay = vfb->vncdisplay;
info->vncunused = vfb->vncunused;
+ if(vfb->vncpasswd)
+ info->vncpasswd = vfb->vncpasswd;
if (vfb->keymap)
info->keymap = libxl_sprintf(ctx, "%s", vfb->keymap);
info->sdl = vfb->sdl;
@@ -1652,6 +1680,8 @@
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vnc));
flexarray_set(back, boffset++, "vnclisten");
flexarray_set(back, boffset++, vfb->vnclisten);
+ flexarray_set(back, boffset++, "vncpasswd");
+ flexarray_set(back, boffset++, vfb->vncpasswd);
flexarray_set(back, boffset++, "vncdisplay");
flexarray_set(back, boffset++, libxl_sprintf(ctx, "%d", vfb->vncdisplay));
flexarray_set(back, boffset++, "vncunused");
diff -Naur vanila/xen-4.0.0/tools/libxl/libxl.h xen-4.0.0/tools/libxl/libxl.h
--- vanila/xen-4.0.0/tools/libxl/libxl.h 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/libxl.h 2010-05-06 14:59:28.000000000 +0100
@@ -128,6 +128,7 @@
bool stdvga; /* stdvga enabled or disabled */
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
@@ -149,6 +150,7 @@
int devid;
bool vnc; /* vnc enabled or disabled */
char *vnclisten; /* address:port that should be listened on for the VNC server if vnc is set */
+ char *vncpasswd; /* the VNC password */
int vncdisplay; /* set VNC display number */
bool vncunused; /* try to find an unused port for the VNC server */
char *keymap; /* set keyboard layout, default is en-us keyboard */
diff -Naur vanila/xen-4.0.0/tools/libxl/xl.c xen-4.0.0/tools/libxl/xl.c
--- vanila/xen-4.0.0/tools/libxl/xl.c 2010-04-07 17:12:04.000000000 +0100
+++ xen-4.0.0/tools/libxl/xl.c 2010-05-06 17:40:44.000000000 +0100
@@ -561,6 +561,8 @@
(*vfbs)[*num_vfbs].vnc = atoi(p2 + 1);
} else if (!strcmp(p, "vnclisten")) {
(*vfbs)[*num_vfbs].vnclisten = strdup(p2 + 1);
+ } else if (!strcmp(p, "vncpasswd")) {
+ (*vfbs)[*num_vfbs].vncpasswd = strdup(p2 + 1);
} else if (!strcmp(p, "vncdisplay")) {
(*vfbs)[*num_vfbs].vncdisplay = atoi(p2 + 1);
} else if (!strcmp(p, "vncunused")) {
@@ -639,6 +641,8 @@
dm_info->vnc = l;
if (!xlu_cfg_get_string (config, "vnclisten", &buf))
dm_info->vnclisten = strdup(buf);
+ if (!xlu_cfg_get_string (config, "vncpasswd", &buf))
+ dm_info->vncpasswd = strdup(buf);
if (!xlu_cfg_get_long (config, "vncdisplay", &l))
dm_info->vncdisplay = l;
if (!xlu_cfg_get_long (config, "vncunused", &l))
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-06 19:48 ` Gihan Munasinghe
@ 2010-05-07 10:02 ` Ian Jackson
2010-05-07 10:37 ` Keir Fraser
0 siblings, 1 reply; 10+ messages in thread
From: Ian Jackson @ 2010-05-07 10:02 UTC (permalink / raw)
To: Gihan Munasinghe; +Cc: xen-devel@lists.xensource.com
Gihan Munasinghe writes ("Re: [Xen-devel] [PATCH] vncpassword support in libxl"):
> New patch attached
Great, thanks.
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Ian.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] vncpassword support in libxl
2010-05-07 10:02 ` Ian Jackson
@ 2010-05-07 10:37 ` Keir Fraser
0 siblings, 0 replies; 10+ messages in thread
From: Keir Fraser @ 2010-05-07 10:37 UTC (permalink / raw)
To: Ian Jackson, Gihan Munasinghe; +Cc: xen-devel@lists.xensource.com
On 07/05/2010 11:02, "Ian Jackson" <Ian.Jackson@eu.citrix.com> wrote:
> Gihan Munasinghe writes ("Re: [Xen-devel] [PATCH] vncpassword support in
> libxl"):
>> New patch attached
>
> Great, thanks.
>
> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Actually it was still full of hard tabs, but I fixed it before applying it.
-- Keir
> Ian.
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-05-07 10:37 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-06 15:01 [PATHCH] vncpassword support in libxl Gihan Munasinghe
2010-05-06 15:45 ` [PATCH] " Gihan Munasinghe
2010-05-06 16:02 ` Stefano Stabellini
2010-05-06 16:10 ` Ian Jackson
2010-05-06 16:12 ` Gihan Munasinghe
2010-05-06 16:10 ` Gihan Munasinghe
2010-05-06 16:07 ` Ian Jackson
2010-05-06 19:48 ` Gihan Munasinghe
2010-05-07 10:02 ` Ian Jackson
2010-05-07 10:37 ` Keir Fraser
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).