From mboxrd@z Thu Jan 1 00:00:00 1970 From: Goncalo Gomes Subject: [PATCH 5 of 6] xl: Add vncviewer options to create and restore Date: Mon, 7 May 2012 01:20:20 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: ian.campbell@citrix.com List-Id: xen-devel@lists.xenproject.org Signed-off-by: Goncalo Gomes diff -r 0663afbb57f5 -r ed41714d9ce9 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Mon May 07 01:10:58 2012 +0000 +++ b/tools/libxl/xl_cmdimpl.c Mon May 07 01:10:58 2012 +0000 @@ -736,6 +736,7 @@ static void parse_config_data(const char if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0)) b_info->rtc_timeoffset = l; + xlu_cfg_get_defbool(config, "vncviewer", &b_info->vncviewer, 0); xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0); if (!xlu_cfg_get_long (config, "videoram", &l, 0)) @@ -1414,6 +1415,8 @@ struct domain_create { int paused; int dryrun; int quiet; + int vnc; + int vncautopass; int console_autoconnect; const char *config_file; const char *extra_config; /* extra config string */ @@ -1527,6 +1530,8 @@ static int create_domain(struct domain_c int daemonize = dom_info->daemonize; int monitor = dom_info->monitor; int paused = dom_info->paused; + int vnc = dom_info->vnc; + int vncautopass = dom_info->vncautopass; const char *config_file = dom_info->config_file; const char *extra_config = dom_info->extra_config; const char *restore_file = dom_info->restore_file; @@ -1734,6 +1739,14 @@ start: if (!daemonize && !monitor) goto out; + if (vnc || (libxl_defbool_val(d_config.b_info.vncviewer) == 1)) { + char *domspec = libxl_domid_to_name(ctx, domid); + if (domspec) { + vncviewer(domspec, vncautopass); + free(domsec); + } + } + if (need_daemon) { char *fullname, *name; pid_t child1, got_child; @@ -3033,10 +3046,10 @@ int main_restore(int argc, char **argv) const char *config_file = NULL; struct domain_create dom_info; int paused = 0, debug = 0, daemonize = 1, monitor = 1, - console_autoconnect = 0; + console_autoconnect = 0, vnc = 0, vncautopass = 0; int opt, rc; - while ((opt = def_getopt(argc, argv, "Fcpde", "restore", 1)) != -1) { + while ((opt = def_getopt(argc, argv, "FcpdeVA", "restore", 1)) != -1) { switch (opt) { case 0: case 2: return opt; @@ -3056,6 +3069,12 @@ int main_restore(int argc, char **argv) daemonize = 0; monitor = 0; break; + case 'V': + vnc = 1; + break; + case 'A': + vnc = vncautopass = 1; + break; } } @@ -3077,6 +3096,8 @@ int main_restore(int argc, char **argv) dom_info.config_file = config_file; dom_info.restore_file = checkpoint_file; dom_info.migrate_fd = -1; + dom_info.vnc = vnc; + dom_info.vncautopass = vncautopass; dom_info.console_autoconnect = console_autoconnect; dom_info.incr_generationid = 1; @@ -3384,7 +3405,7 @@ int main_create(int argc, char **argv) char extra_config[1024]; struct domain_create dom_info; int paused = 0, debug = 0, daemonize = 1, console_autoconnect = 0, - quiet = 0, monitor = 1; + quiet = 0, monitor = 1, vnc = 0, vncautopass = 0; int opt, rc; int option_index = 0; static struct option long_options[] = { @@ -3392,6 +3413,8 @@ int main_create(int argc, char **argv) {"quiet", 0, 0, 'q'}, {"help", 0, 0, 'h'}, {"defconfig", 1, 0, 'f'}, + {"vncviewer", 0, 0, 'V'}, + {"vncviewer-autopass", 0, 0, 'A'}, {0, 0, 0, 0} }; @@ -3401,7 +3424,7 @@ int main_create(int argc, char **argv) } while (1) { - opt = getopt_long(argc, argv, "Fhnqf:pcde", long_options, &option_index); + opt = getopt_long(argc, argv, "Fhnqf:pcdeVA", long_options, &option_index); if (opt == -1) break; @@ -3434,6 +3457,12 @@ int main_create(int argc, char **argv) case 'q': quiet = 1; break; + case 'V': + vnc = 1; + break; + case 'A': + vnc = vncautopass = 1; + break; default: fprintf(stderr, "option `%c' not supported.\n", optopt); break; @@ -3463,6 +3492,8 @@ int main_create(int argc, char **argv) dom_info.config_file = filename; dom_info.extra_config = extra_config; dom_info.migrate_fd = -1; + dom_info.vnc = vnc; + dom_info.vncautopass = vncautopass; dom_info.console_autoconnect = console_autoconnect; dom_info.incr_generationid = 0;