mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xl/libxl: add gatewaydev/netdev to vif specification
This option is used by the vif-route hotplug script. A new more descriptive name is used, "gatewaydev", but "netdev" is also supported as a deprecated backwards compatible option. This option was supported in the past, according to http://wiki.xen.org/wiki/Vif-route, so we should also support it in libxl. 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>
This commit is contained in:
1 parent
50ae2d0cb6
commit
e2abe690ba
5 files changed
+38
-2
No files matched your search
@@ -67,6 +67,15 @@ added to. The default is `xenbr0`. The bridge must be configured using
|
||||
your distribution's network configuration tools. See the [wiki][net]
|
||||
for guidance and examples.
|
||||
|
||||
### gatewaydev
|
||||
|
||||
Specifies the name of the network interface which has an IP and which
|
||||
is in the network the VIF should communicate with. This is used in the host
|
||||
by the vif-route hotplug script. See [wiki][vifroute] for guidance and
|
||||
examples.
|
||||
|
||||
NOTE: netdev is a deprecated alias of this option.
|
||||
|
||||
### type
|
||||
|
||||
This keyword is valid for HVM guests only.
|
||||
@@ -158,3 +167,4 @@ on the underlying netback implementation.
|
||||
|
||||
[oui]: http://en.wikipedia.org/wiki/Organizationally_Unique_Identifier
|
||||
[net]: http://wiki.xen.org/wiki/HostConfiguration/Networking
|
||||
[vifroute]: http://wiki.xen.org/wiki/Vif-route
|
||||
+5
-1
@@ -2829,7 +2829,7 @@ void libxl__device_nic_add(libxl__egc *egc, uint32_t domid,
|
||||
if (rc) goto out;
|
||||
|
||||
front = flexarray_make(gc, 16, 1);
|
||||
back = flexarray_make(gc, 16, 1);
|
||||
back = flexarray_make(gc, 18, 1);
|
||||
|
||||
if (nic->devid == -1) {
|
||||
if ((nic->devid = libxl__device_nextid(gc, domid, "vif") < 0)) {
|
||||
@@ -2865,6 +2865,10 @@ void libxl__device_nic_add(libxl__egc *egc, uint32_t domid,
|
||||
flexarray_append(back, "ip");
|
||||
flexarray_append(back, libxl__strdup(gc, nic->ip));
|
||||
}
|
||||
if (nic->gatewaydev) {
|
||||
flexarray_append(back, "gatewaydev");
|
||||
flexarray_append(back, libxl__strdup(gc, nic->gatewaydev));
|
||||
}
|
||||
|
||||
if (nic->rate_interval_usecs > 0) {
|
||||
flexarray_append(back, "rate");
|
||||
|
||||
@@ -84,11 +84,16 @@ static char **get_hotplug_env(libxl__gc *gc,
|
||||
char *script, libxl__device *dev)
|
||||
{
|
||||
const char *type = libxl__device_kind_to_string(dev->backend_kind);
|
||||
char *be_path = libxl__device_backend_path(gc, dev);
|
||||
char **env;
|
||||
char *gatewaydev;
|
||||
int nr = 0;
|
||||
libxl_nic_type nictype;
|
||||
|
||||
const int arraysize = 13;
|
||||
gatewaydev = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/%s", be_path,
|
||||
"gatewaydev"));
|
||||
|
||||
const int arraysize = 15;
|
||||
GCNEW_ARRAY(env, arraysize);
|
||||
env[nr++] = "script";
|
||||
env[nr++] = script;
|
||||
@@ -98,6 +103,8 @@ static char **get_hotplug_env(libxl__gc *gc,
|
||||
env[nr++] = GCSPRINTF("backend/%s/%u/%d", type, dev->domid, dev->devid);
|
||||
env[nr++] = "XENBUS_BASE_PATH";
|
||||
env[nr++] = "backend";
|
||||
env[nr++] = "netdev";
|
||||
env[nr++] = gatewaydev ? : "";
|
||||
if (dev->backend_kind == LIBXL__DEVICE_KIND_VIF) {
|
||||
if (libxl__nic_type(gc, dev, &nictype)) {
|
||||
LOG(ERROR, "unable to get nictype");
|
||||
|
||||
@@ -385,6 +385,7 @@ libxl_device_nic = Struct("device_nic", [
|
||||
("nictype", libxl_nic_type),
|
||||
("rate_bytes_per_interval", uint64),
|
||||
("rate_interval_usecs", uint32),
|
||||
("gatewaydev", string),
|
||||
])
|
||||
|
||||
libxl_device_pci = Struct("device_pci", [
|
||||
|
||||
@@ -1210,6 +1210,14 @@ static void parse_config_data(const char *config_source,
|
||||
parse_vif_rate(&config, (p2 + 1), nic);
|
||||
} else if (!strcmp(p, "accel")) {
|
||||
fprintf(stderr, "the accel parameter for vifs is currently not supported\n");
|
||||
} else if (!strcmp(p, "netdev")) {
|
||||
fprintf(stderr, "the netdev parameter is deprecated, "
|
||||
"please use gatewaydev instead\n");
|
||||
free(nic->gatewaydev);
|
||||
nic->gatewaydev = strdup(p2 + 1);
|
||||
} else if (!strcmp(p, "gatewaydev")) {
|
||||
free(nic->gatewaydev);
|
||||
nic->gatewaydev = strdup(p2 + 1);
|
||||
}
|
||||
} while ((p = strtok(NULL, ",")) != NULL);
|
||||
skip_nic:
|
||||
@@ -5494,6 +5502,12 @@ int main_networkattach(int argc, char **argv)
|
||||
}
|
||||
} else if (MATCH_OPTION("bridge", *argv, oparg)) {
|
||||
replace_string(&nic.bridge, oparg);
|
||||
} else if (MATCH_OPTION("netdev", *argv, oparg)) {
|
||||
fprintf(stderr, "the netdev parameter is deprecated, "
|
||||
"please use gatewaydev instead\n");
|
||||
replace_string(&nic.gatewaydev, oparg);
|
||||
} else if (MATCH_OPTION("gatewaydev", *argv, oparg)) {
|
||||
replace_string(&nic.gatewaydev, oparg);
|
||||
} else if (MATCH_OPTION("ip", *argv, oparg)) {
|
||||
replace_string(&nic.ip, oparg);
|
||||
} else if (MATCH_OPTION("script", *argv, oparg)) {
|
||||
|
||||