aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Pau Monne <roger.pau@citrix.com>2013-03-13 17:42:17 +0000
committerIan Jackson <Ian.Jackson@eu.citrix.com>2013-03-15 12:40:25 +0000
commitcb724faf0138a92dcebb8cf249ae79ba87a67ff9 (patch)
tree43099a2f1f52089377fdb1079451032850a0fec7
parente2abe690babf06fc49bdec49b08cb45dd3e09138 (diff)
downloadxen-cb724faf0138a92dcebb8cf249ae79ba87a67ff9.tar.gz
xen-cb724faf0138a92dcebb8cf249ae79ba87a67ff9.tar.bz2
xen-cb724faf0138a92dcebb8cf249ae79ba87a67ff9.zip
xl: allow specifying a default gatewaydev in xl.conf
This adds a new global option in the xl configuration file called "vif.default.gatewaydev", that is used to specify the default gatewaydev to use when none is passed in the vif specification. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Tested-by: Ulf Kreutzberg <ulf.kreutzberg@hosteurope.de> Cc: Ulf Kreutzberg <ulf.kreutzberg@hosteurope.de> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: George Dunlap <george.dunlap@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--docs/man/xl.conf.pod.56
-rw-r--r--tools/examples/xl.conf3
-rw-r--r--tools/libxl/xl.c14
-rw-r--r--tools/libxl/xl.h1
-rw-r--r--tools/libxl/xl_cmdimpl.c5
5 files changed, 29 insertions, 0 deletions
diff --git a/docs/man/xl.conf.pod.5 b/docs/man/xl.conf.pod.5
index 82c6b20251..f8f7e7fc79 100644
--- a/docs/man/xl.conf.pod.5
+++ b/docs/man/xl.conf.pod.5
@@ -82,6 +82,12 @@ Configures the default bridge to set for virtual network devices.
Default: C<xenbr0>
+=item B<vif.default.gatewaydev="NAME">
+
+Configures the default gateway device to set for virtual network devices.
+
+Default: C<None>
+
=item B<output_format="json|sxp">
Configures the default output format used by xl when printing "machine
diff --git a/tools/examples/xl.conf b/tools/examples/xl.conf
index 28ab796ea3..9a03ffffe3 100644
--- a/tools/examples/xl.conf
+++ b/tools/examples/xl.conf
@@ -20,3 +20,6 @@
# if disabled the old behaviour will be used, and hotplug scripts will be
# launched by udev.
#run_hotplug_scripts=1
+
+# default gateway device to use with vif-route hotplug script
+#vif.default.gatewaydev="eth0"
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c
index ecbcd3bf1d..71561a49ef 100644
--- a/tools/libxl/xl.c
+++ b/tools/libxl/xl.c
@@ -43,6 +43,7 @@ int run_hotplug_scripts = 1;
char *lockfile;
char *default_vifscript = NULL;
char *default_bridge = NULL;
+char *default_gatewaydev = NULL;
enum output_format default_output_format = OUTPUT_FORMAT_JSON;
static xentoollog_level minmsglevel = XTL_PROGRESS;
@@ -85,12 +86,25 @@ static void parse_global_config(const char *configfile,
exit(1);
}
+ /*
+ * For global options that are related to a specific type of device
+ * we use the following nomenclature:
+ *
+ * <device type>.default.<option name>
+ *
+ * This allows us to keep the default options classified for the
+ * different device kinds.
+ */
+
if (!xlu_cfg_get_string (config, "vifscript", &buf, 0))
default_vifscript = strdup(buf);
if (!xlu_cfg_get_string (config, "defaultbridge", &buf, 0))
default_bridge = strdup(buf);
+ if (!xlu_cfg_get_string (config, "vif.default.gatewaydev", &buf, 0))
+ default_gatewaydev = strdup(buf);
+
if (!xlu_cfg_get_string (config, "output_format", &buf, 0)) {
if (!strcmp(buf, "json"))
default_output_format = OUTPUT_FORMAT_JSON;
diff --git a/tools/libxl/xl.h b/tools/libxl/xl.h
index be6f38b2fa..b881f92269 100644
--- a/tools/libxl/xl.h
+++ b/tools/libxl/xl.h
@@ -148,6 +148,7 @@ extern int dryrun_only;
extern char *lockfile;
extern char *default_vifscript;
extern char *default_bridge;
+extern char *default_gatewaydev;
extern char *blkdev_start;
enum output_format {
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index d7ffc507b8..2d40f8f79c 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1146,6 +1146,11 @@ static void parse_config_data(const char *config_source,
nic->bridge = strdup(default_bridge);
}
+ if (default_gatewaydev) {
+ free(nic->gatewaydev);
+ nic->gatewaydev = strdup(default_gatewaydev);
+ }
+
p = strtok(buf2, ",");
if (!p)
goto skip_nic;