[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 1/4] xl/libxl: add gatewaydev/netdev to vif specification



On Wed, 2013-02-06 at 18:04 +0000, Roger Pau Monne wrote:
> 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@xxxxxxxxxx>
> Cc: Ulf Kreutzberg <ulf.kreutzberg@xxxxxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> Cc: George Dunlap <george.dunlap@xxxxxxxxxx>
> ---
> Changes since v1:
>  * Don't pass a NULL as a value of a env variable
>  * Change netdev to gatewaydev
> ---
>  docs/misc/xl-network-configuration.markdown |   10 ++++++++++
>  tools/libxl/libxl.c                         |    6 +++++-
>  tools/libxl/libxl_linux.c                   |    9 ++++++++-
>  tools/libxl/libxl_types.idl                 |    1 +
>  tools/libxl/xl_cmdimpl.c                    |   14 ++++++++++++++
>  5 files changed, 38 insertions(+), 2 deletions(-)
> 
> diff --git a/docs/misc/xl-network-configuration.markdown 
> b/docs/misc/xl-network-configuration.markdown
> index 5e2f049..e0d3d2a 100644
> --- a/docs/misc/xl-network-configuration.markdown
> +++ b/docs/misc/xl-network-configuration.markdown
> @@ -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
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index 73e0dc3..5d590f1 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -2826,7 +2826,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)) {
> @@ -2862,6 +2862,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");
> diff --git a/tools/libxl/libxl_linux.c b/tools/libxl/libxl_linux.c
> index 1fed3cd..60fc533 100644
> --- a/tools/libxl/libxl_linux.c
> +++ b/tools/libxl/libxl_linux.c
> @@ -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");
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index acc4bc9..0112a7a 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -382,6 +382,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", [
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 080bbd8..dc1788e 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -1205,6 +1205,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:
> @@ -5471,6 +5479,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)) {



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.