On Thu, May 26, 2016 at 05:34:59PM -0300, Thadeu Lima de Souza Cascardo wrote:
> If we cannot find the device type because it's not opened yet, check if it 
> uses
> a reserved prefix for a vport type and return that type.
> 
> Since these names are reserved, we can assume this is the right type.
> 
> This is important when we are querying the datapath right after vswitch has
> started and using the right type will be even more important when we add 
> support
> to creating tunnel ports with rtnetlink.
> 
> Signed-off-by: Thadeu Lima de Souza Cascardo <casca...@redhat.com>

Thanks for the patch.

I haven't thought deeply yet about whether this is correct behavior, but
I have some comments nonetheless.

> +static const char *
> +netdev_vport_type_from_name(const char *name)
> +{
> +    struct netdev_registered_class *rc;
> +    const char *type;

I don't think we need to take netdev_class_mutex here.  cmaps don't
inherently need to be protected against change during iteration, because
they are RCU-protected.

> +    ovs_mutex_lock(&netdev_class_mutex);
> +    CMAP_FOR_EACH (rc, cmap_node, &netdev_classes) {
> +        const char *dpif_port = netdev_vport_class_get_dpif_port(rc->class);
> +        if (dpif_port && !strncmp(name, dpif_port, strlen(dpif_port))) {
> +            type = rc->class->type;
> +            ovs_mutex_unlock(&netdev_class_mutex);
> +            return type;
> +        }
> +    }
> +    ovs_mutex_unlock(&netdev_class_mutex);
> +    return NULL;
> +}

Here, please do not use the GCC x?:y extension, because OVS needs to
build with MSVC as well:

> +    type = type ?: netdev_vport_type_from_name(name);

Thanks,

Ben.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to