On Fri, 2 Sep 2011 12:34:55 -0500 Anthony Liguori <aligu...@us.ibm.com> wrote:
> New QMP only command to change the VNC server's listening address. > > Signed-off-by: Anthony Liguori <aligu...@us.ibm.com> > --- > v1 -> v2 > - Enhanced docs (Luiz) > --- > qapi-schema.json | 15 +++++++++++++++ > qmp-commands.hx | 8 ++++++++ > qmp.c | 7 +++++++ > 3 files changed, 30 insertions(+), 0 deletions(-) > > diff --git a/qapi-schema.json b/qapi-schema.json > index 350cf1c..0c6c9b8 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -109,3 +109,18 @@ > # string. Existing clients are unaffected by executing this command. > ## > { 'command': 'change-vnc-password', 'data': {'password': 'str'} } > + > +## > +# @change-vnc-listen: > +# > +# Change the host that the VNC server listens on. > +# > +# @target: the new server specification to listen on > +# > +# Since: 1.0 > +# > +# Notes: At this moment in time, the behavior of existing client connections > +# when this command is executed is undefined. The authentication > +# settings may change after executing this command. It seems to completely disable authentication. At least when using password auth. I'd be very clear about that. > +## > +{ 'command': 'change-vnc-listen', 'data': {'target': 'str'} } > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 7df3938..5cab212 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -876,6 +876,14 @@ EQMP > }, > > { > + .name = "change-vnc-listen", > + .args_type = "target:s", > + .params = "target", > + .help = "set vnc listening address", > + .mhandler.cmd_new = qmp_marshal_input_change_vnc_listen, > + }, > + > + { > .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 f817a88..73d6172 100644 > --- a/qmp.c > +++ b/qmp.c > @@ -35,3 +35,10 @@ void qmp_change_vnc_password(const char *password, Error > **err) > error_set(err, QERR_SET_PASSWD_FAILED); > } > } > + > +void qmp_change_vnc_listen(const char *target, Error **err) > +{ > + if (vnc_display_open(NULL, target) < 0) { > + error_set(err, QERR_VNC_SERVER_FAILED, target); > + } > +}