[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvswitch-dev
Subject:    [ovs-dev] [netlink v2 4/4] datapath: Make adding and attaching a vport a single step.
From:       jesse () nicira ! com (Jesse Gross)
Date:       2010-09-30 0:35:24
Message-ID: AANLkTi=fw8bbMRiQ1BovJOz8vuRCrzJ_MTkQ5YGtZVne () mail ! gmail ! com
[Download RAW message or body]

On Fri, Sep 24, 2010 at 5:15 PM, Ben Pfaff <blp at nicira.com> wrote:
> diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c
> index 90eb741..ffbb4b3 100644
> +int
> +netdev_vport_parse_config(struct odp_port *port, const char *name,
> + ? ? ? ? ? ? ? ? ? ? ? ? ?const char *type, const struct shash *args)
> ?{
> - ? ?const struct vport_class *c = vport_class_cast(netdev_class);
> - ? ?if (c->parse_config) {
> - ? ? ? ?struct vport_info info;
> - ? ? ? ?int error;
> -
> - ? ? ? ?info.devname = name;
> - ? ? ? ?info.type = netdev_class->type;
> - ? ? ? ?error = (c->parse_config)(&info, args);
> - ? ? ? ?*configp = info.config;
> - ? ? ? ?return error;
> + ? ?memset(port, 0, sizeof *port);
> + ? ?strncpy(port->devname, name, sizeof port->devname);
> +
> + ? ?if (type[0] == '\0' || !strcmp(type, "system")) {
> + ? ? ? ?strncpy(port->type, "netdev", sizeof port->type);
> ? ? } else {
> - ? ? ? ?if (!shash_is_empty(args)) {
> - ? ? ? ? ? ?VLOG_WARN("%s: arguments for %s vports should be empty",
> - ? ? ? ? ? ? ? ? ? ? ?name, netdev_class->type);
> + ? ? ? ?const struct netdev_class *netdev_class;
> + ? ? ? ?const struct vport_class *class;
> +
> + ? ? ? ?strncpy(port->type, type, sizeof port->type);
> +
> + ? ? ? ?netdev_class = netdev_lookup_provider(port->type);
> + ? ? ? ?class = (netdev_class && is_vport_class(netdev_class)
> + ? ? ? ? ? ? ? ? ? vport_class_cast(netdev_class)
> + ? ? ? ? ? ? ? ? : NULL);
> +
> + ? ? ? ?if (!class) {
> + ? ? ? ? ? ?VLOG_WARN("%s: unsupported port type \"%s\"", name, type);
> + ? ? ? ? ? ?return EINVAL;
> + ? ? ? ?} else if (class->parse_config) {
> + ? ? ? ? ? ?return (class->parse_config)(port, args);

Does this break "internal"/non-vport devices (if we had others)?  They
won't get caught by the "system" type and it won't find a vport class
type.

> diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
> index 6c271fb..c310311 100644
> + ? ? ? ?/* Determine interface type. ?The local port always has type
> + ? ? ? ? * "internal". ?Other ports take their type from the database and
> + ? ? ? ? * default to "netdev" if none is specified. */

Default is "system" in userspace.



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic