xl: Check for duplicate vncdisplay options, and return an error
authorGeorge Dunlap <george.dunlap@eu.citrix.com>
Tue, 4 Dec 2012 15:50:20 +0000 (15:50 +0000)
committerGeorge Dunlap <george.dunlap@eu.citrix.com>
Tue, 4 Dec 2012 15:50:20 +0000 (15:50 +0000)
If the user has set a vnc display number both in vnclisten (with
"xxxx:yy"), and with vncdisplay, throw an error.

Update man pages to match.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
docs/man/xl.cfg.pod.5
tools/libxl/xl_cmdimpl.c

index fe4fac95dd18210771121c41b6f6f85587c43601..dc3f49417c699242fd779909cd3b277916f23337 100644 (file)
@@ -350,11 +350,17 @@ other VNC-related settings.  The default is to enable this.
 
 Specifies the IP address, and optionally VNC display number, to use.
 
+NB that if you specify the display number here, you should not use
+vncdisplay.
+
 =item C<vncdisplay=DISPLAYNUM>
 
 Specifies the VNC display number to use.  The actual TCP port number
 will be DISPLAYNUM+5900.
 
+NB that you should not use this option if you set the displaynum in the
+vnclisten string.
+
 =item C<vncunused=BOOLEAN>
 
 Requests that the VNC display setup search for a free TCP port to use.
index 5d444a88d631ad98ca2805b835b8161dde841e52..4b75fc3d6631363acce245a9e26796867c81cdb6 100644 (file)
@@ -1257,6 +1257,7 @@ skip_nic:
                     vfb->sdl.xauthority = strdup(p2 + 1);
                 }
             } while ((p = strtok(NULL, ",")) != NULL);
+
 skip_vfb:
             free(buf2);
             d_config->num_vfbs++;
@@ -1490,6 +1491,16 @@ skip_vfb:
         xlu_cfg_replace_string (config, "soundhw", &b_info->u.hvm.soundhw, 0);
         xlu_cfg_get_defbool(config, "xen_platform_pci",
                             &b_info->u.hvm.xen_platform_pci, 0);
+
+        if(b_info->u.hvm.vnc.listen
+           && b_info->u.hvm.vnc.display
+           && strchr(b_info->u.hvm.vnc.listen, ':') != NULL) {
+            fprintf(stderr,
+                    "ERROR: Display specified both in vnclisten"
+                    " and vncdisplay!\n");
+            exit (1);
+
+        }
     }
 
     xlu_cfg_destroy(config);