On Wed, 24 Aug 2011 13:43:05 -0500 Anthony Liguori <aligu...@us.ibm.com> wrote:
> This is a new QMP only command that only changes the VNC password. Isn't this useful in HMP too? > > Signed-off-by: Anthony Liguori <aligu...@us.ibm.com> > --- > qapi-schema.json | 13 +++++++++++++ > qmp-commands.hx | 8 ++++++++ > qmp.c | 11 ++++++++++- > 3 files changed, 31 insertions(+), 1 deletions(-) > > diff --git a/qapi-schema.json b/qapi-schema.json > index f159d81..3b2229f 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -96,3 +96,16 @@ > { 'command': 'set-blockdev-password', > 'data': {'device': 'str', 'password': 'str'} } > > +## > +# @change-vnc-password: > +# > +# Change the VNC server password. > +# > +# @target: the new password to use with VNC authentication The argument name is "password". > +# > +# Since: 1.0 > +# > +# Notes: An empty password in this command will set the password to the > empty > +# string. Existing clients are unaffected by executing this command. > +## > +{ 'command': 'change-vnc-password', 'data': {'password': 'str'} } > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 909c778..d60f72f 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -868,6 +868,14 @@ Example: > EQMP > > { > + .name = "change-vnc-password", > + .args_type = "password:s", > + .params = "password", > + .help = "set vnc password", > + .mhandler.cmd_new = qmp_marshal_input_change_vnc_password, > + }, > + > + { > .name = "set_password", > .args_type = "protocol:s,password:s,connected:s?", > .params = "protocol password action-if-connected", > diff --git a/qmp.c b/qmp.c > index 8aa9c66..f817a88 100644 > --- a/qmp.c > +++ b/qmp.c > @@ -12,9 +12,11 @@ > */ > > #include "qemu-common.h" > -#include "sysemu.h" > #include "qmp-commands.h" > > +#include "sysemu.h" > +#include "console.h" > + > NameInfo *qmp_query_name(Error **errp) > { > NameInfo *info = g_malloc0(sizeof(*info)); > @@ -26,3 +28,10 @@ NameInfo *qmp_query_name(Error **errp) > > return info; > } > + > +void qmp_change_vnc_password(const char *password, Error **err) > +{ > + if (vnc_display_password(NULL, password) < 0) { > + error_set(err, QERR_SET_PASSWD_FAILED); > + } > +}