From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=38775 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Py2WD-0002DX-2p for qemu-devel@nongnu.org; Fri, 11 Mar 2011 08:36:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Py2W7-0005Pf-IE for qemu-devel@nongnu.org; Fri, 11 Mar 2011 08:36:37 -0500 Received: from mail-iw0-f173.google.com ([209.85.214.173]:54388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Py2W7-0005PY-Bc for qemu-devel@nongnu.org; Fri, 11 Mar 2011 08:36:31 -0500 Received: by iwl42 with SMTP id 42so3066148iwl.4 for ; Fri, 11 Mar 2011 05:36:30 -0800 (PST) Message-ID: <4D7A255B.4000409@codemonkey.ws> Date: Fri, 11 Mar 2011 07:36:27 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1299847134-5854-1-git-send-email-Jes.Sorensen@redhat.com> In-Reply-To: <1299847134-5854-1-git-send-email-Jes.Sorensen@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] Make VNC support optional List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jes.Sorensen@redhat.com Cc: qemu-devel@nongnu.org On 03/11/2011 06:38 AM, Jes.Sorensen@redhat.com wrote: > From: Jes Sorensen > > Per default VNC is enabled. > > Signed-off-by: Jes Sorensen > --- > Makefile.objs | 19 ++++++++++--------- > configure | 37 +++++++++++++++++++++++++------------ > monitor.c | 16 ++++++++++++++++ > vl.c | 10 +++++++++- > 4 files changed, 60 insertions(+), 22 deletions(-) > > diff --git a/Makefile.objs b/Makefile.objs > index 9e98a66..58388e2 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -127,19 +127,20 @@ common-obj-y += $(addprefix audio/, $(audio-obj-y)) > ui-obj-y += keymaps.o > ui-obj-$(CONFIG_SDL) += sdl.o sdl_zoom.o x_keymap.o > ui-obj-$(CONFIG_CURSES) += curses.o > -ui-obj-y += vnc.o d3des.o > -ui-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o > -ui-obj-y += vnc-enc-tight.o vnc-palette.o > -ui-obj-y += vnc-enc-zrle.o > -ui-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o > -ui-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o > -ui-obj-$(CONFIG_COCOA) += cocoa.o > +vnc-obj-y += vnc.o d3des.o > +vnc-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o > +vnc-obj-y += vnc-enc-tight.o vnc-palette.o > +vnc-obj-y += vnc-enc-zrle.o > +vnc-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o > +vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o > +vnc-obj-$(CONFIG_COCOA) += cocoa.o > ifdef CONFIG_VNC_THREAD > -ui-obj-y += vnc-jobs-async.o > +vnc-obj-y += vnc-jobs-async.o > else > -ui-obj-y += vnc-jobs-sync.o > +vnc-obj-y += vnc-jobs-sync.o > endif > common-obj-y += $(addprefix ui/, $(ui-obj-y)) > +common-obj-$(CONFIG_VNC) += $(addprefix ui/, $(vnc-obj-y)) > > common-obj-y += iov.o acl.o > common-obj-$(CONFIG_THREAD) += qemu-thread.o > diff --git a/configure b/configure > index 39cdf2b..a64b750 100755 > --- a/configure > +++ b/configure > @@ -117,6 +117,7 @@ kvm="" > kvm_para="" > nptl="" > sdl="" > +vnc="yes" > sparse="no" > uuid="" > vde="" > @@ -539,6 +540,10 @@ for opt do > ;; > --enable-sdl) sdl="yes" > ;; > + --disable-vnc) vnc="no" > + ;; > + --enable-vnc) vnc="yes" > + ;; > --fmod-lib=*) fmod_lib="$optarg" > ;; > --fmod-inc=*) fmod_inc="$optarg" > @@ -836,6 +841,8 @@ echo " --disable-strip disable stripping binaries" > echo " --disable-werror disable compilation abort on warning" > echo " --disable-sdl disable SDL" > echo " --enable-sdl enable SDL" > +echo " --disable-vnc disable VNC" > +echo " --enable-vnc enable VNC" > echo " --enable-cocoa enable COCOA (Mac OS X only)" > echo " --audio-drv-list=LIST set audio drivers list:" > echo " Available drivers: $audio_possible_drivers" > @@ -1273,7 +1280,7 @@ fi > > ########################################## > # VNC TLS detection > -if test "$vnc_tls" != "no" ; then > +if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then > cat> $TMPC< #include > int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } > @@ -1293,7 +1300,7 @@ fi > > ########################################## > # VNC SASL detection > -if test "$vnc_sasl" != "no" ; then > +if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then > cat> $TMPC< #include > #include > @@ -1315,7 +1322,7 @@ fi > > ########################################## > # VNC JPEG detection > -if test "$vnc_jpeg" != "no" ; then > +if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then > cat> $TMPC< #include > #include > @@ -1336,7 +1343,7 @@ fi > > ########################################## > # VNC PNG detection > -if test "$vnc_png" != "no" ; then > +if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then > cat> $TMPC< //#include > #include > @@ -2495,11 +2502,14 @@ echo "Audio drivers $audio_drv_list" > echo "Extra audio cards $audio_card_list" > echo "Block whitelist $block_drv_whitelist" > echo "Mixer emulation $mixemu" > -echo "VNC TLS support $vnc_tls" > -echo "VNC SASL support $vnc_sasl" > -echo "VNC JPEG support $vnc_jpeg" > -echo "VNC PNG support $vnc_png" > -echo "VNC thread $vnc_thread" > +echo "VNC support $vnc" > +if test "$vnc" = "yes" ; then > + echo "VNC TLS support $vnc_tls" > + echo "VNC SASL support $vnc_sasl" > + echo "VNC JPEG support $vnc_jpeg" > + echo "VNC PNG support $vnc_png" > + echo "VNC thread $vnc_thread" > +fi > if test -n "$sparc_cpu"; then > echo "Target Sparc Arch $sparc_cpu" > fi > @@ -2649,6 +2659,9 @@ echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist">> $config_host_mak > if test "$mixemu" = "yes" ; then > echo "CONFIG_MIXEMU=y">> $config_host_mak > fi > +if test "$vnc" = "yes" ; then > + echo "CONFIG_VNC=y">> $config_host_mak > +fi > if test "$vnc_tls" = "yes" ; then > echo "CONFIG_VNC_TLS=y">> $config_host_mak > echo "VNC_TLS_CFLAGS=$vnc_tls_cflags">> $config_host_mak > @@ -2657,15 +2670,15 @@ if test "$vnc_sasl" = "yes" ; then > echo "CONFIG_VNC_SASL=y">> $config_host_mak > echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags">> $config_host_mak > fi > -if test "$vnc_jpeg" != "no" ; then > +if test "$vnc_jpeg" = "yes" ; then > echo "CONFIG_VNC_JPEG=y">> $config_host_mak > echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags">> $config_host_mak > fi > -if test "$vnc_png" != "no" ; then > +if test "$vnc_png" = "yes" ; then > echo "CONFIG_VNC_PNG=y">> $config_host_mak > echo "VNC_PNG_CFLAGS=$vnc_png_cflags">> $config_host_mak > fi > -if test "$vnc_thread" != "no" ; then > +if test "$vnc_thread" = "yes" ; then > echo "CONFIG_VNC_THREAD=y">> $config_host_mak > echo "CONFIG_THREAD=y">> $config_host_mak > fi > diff --git a/monitor.c b/monitor.c > index 22ae3bb..4425315 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -441,6 +441,7 @@ void monitor_protocol_event(MonitorEvent event, QObject *data) > case QEVENT_RESUME: > event_name = "RESUME"; > break; > +#ifdef CONFIG_VNC > case QEVENT_VNC_CONNECTED: > event_name = "VNC_CONNECTED"; > break; > @@ -450,6 +451,7 @@ void monitor_protocol_event(MonitorEvent event, QObject *data) > case QEVENT_VNC_DISCONNECTED: > event_name = "VNC_DISCONNECTED"; > break; > +#endif No need to if this out. > case QEVENT_BLOCK_IO_ERROR: > event_name = "BLOCK_IO_ERROR"; > break; > @@ -1016,6 +1018,7 @@ static int do_quit(Monitor *mon, const QDict *qdict, QObject **ret_data) > return 0; > } > > +#ifdef CONFIG_VNC > static int change_vnc_password(const char *password) > { > if (!password || !password[0]) { > @@ -1062,6 +1065,7 @@ static int do_change_vnc(Monitor *mon, const char *target, const char *arg) > > return 0; > } > +#endif > > /** > * do_change(): Change a removable medium, or VNC configuration > @@ -1073,11 +1077,15 @@ static int do_change(Monitor *mon, const QDict *qdict, QObject **ret_data) > const char *arg = qdict_get_try_str(qdict, "arg"); > int ret; > > +#ifdef CONFIG_VNC > if (strcmp(device, "vnc") == 0) { > ret = do_change_vnc(mon, target, arg); > } else { > +#endif > ret = do_change_block(mon, device, target, arg); > +#ifdef CONFIG_VNC > } > +#endif > > return ret; > } Or this stuff. Provide a stub function for changing the VNC password and have it return a failure. Then this function can check that failure and throw a proper QError indicating that VNC is not present. > @@ -1119,6 +1127,7 @@ static int set_password(Monitor *mon, const QDict *qdict, QObject **ret_data) > return 0; > } > > +#ifdef CONFIG_VNC > if (strcmp(protocol, "vnc") == 0) { > if (fail_if_connected || disconnect_if_connected) { > /* vnc supports "connected=keep" only */ > @@ -1134,6 +1143,7 @@ static int set_password(Monitor *mon, const QDict *qdict, QObject **ret_data) > } > return 0; > } > +#endif > > qerror_report(QERR_INVALID_PARAMETER, "protocol"); > return -1; > @@ -1170,6 +1180,7 @@ static int expire_password(Monitor *mon, const QDict *qdict, QObject **ret_data) > return 0; > } > > +#ifdef CONFIG_VNC > if (strcmp(protocol, "vnc") == 0) { > rc = vnc_display_pw_expire(NULL, when); > if (rc != 0) { > @@ -1178,6 +1189,7 @@ static int expire_password(Monitor *mon, const QDict *qdict, QObject **ret_data) > } > return 0; > } > +#endif > > qerror_report(QERR_INVALID_PARAMETER, "protocol"); > return -1; > @@ -3002,6 +3014,7 @@ static const mon_cmd_t info_cmds[] = { > .user_print = do_info_mice_print, > .mhandler.info_new = do_info_mice, > }, > +#ifdef CONFIG_VNC > { > .name = "vnc", > .args_type = "", > @@ -3010,6 +3023,7 @@ static const mon_cmd_t info_cmds[] = { > .user_print = do_info_vnc_print, > .mhandler.info_new = do_info_vnc, > }, > +#endif We don't want to hide commands based on compile settings. Otherwise, looks good. Regards, Anthony Liguori