On Mon, Aug 06, 2018 at 07:24:39PM -0700, Darrell Ball wrote:
> By making opt_dpif_open() more general, it can be used effectively
> by all potential callers and avoids trying to open potentially bogus
> datapaths provided by the user. Also, the error handling is improved by
> having more specific errors.
> 
> Signed-off-by: Darrell Ball <[email protected]>
> ---
>  lib/dpctl.c             | 61 
> +++++++++++++++++++++++++++++++++++++++++++++----
>  tests/system-traffic.at |  8 +++----
>  2 files changed, 60 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/dpctl.c b/lib/dpctl.c
> index c600eeb..b8a8dbf 100644
> --- a/lib/dpctl.c
> +++ b/lib/dpctl.c
> @@ -187,18 +187,69 @@ parsed_dpif_open(const char *arg_, bool create, struct 
> dpif **dpifp)
>      return result;
>  }
>  
> +static bool
> +dp_exists(const char *queried_dp)
> +{
> +    struct sset dpif_names = SSET_INITIALIZER(&dpif_names),
> +                dpif_types = SSET_INITIALIZER(&dpif_types);
> +    bool found = false;
> +    char *queried_name, *queried_type;
> +
> +    dp_parse_name(queried_dp, &queried_name, &queried_type);
> +    dp_enumerate_types(&dpif_types);
> +
> +    const char *type;
> +    SSET_FOR_EACH (type, &dpif_types) {
> +        int error = dp_enumerate_names(type, &dpif_names);
> +        if (!error) {
> +            const char *name;
> +            SSET_FOR_EACH (name, &dpif_names) {
> +                if (!strcmp(type, queried_type) &&
> +                    !strcmp(name, queried_name)) {
> +                    found = true;
> +                    goto out;
> +                }
> +            }
> +        }
> +    }
> +
> +out:
> +    sset_destroy(&dpif_names);
> +    sset_destroy(&dpif_types);
> +    return found;
> +}

Thanks for working to make ovs-dpctl error messages better!

I don't see why one would bother to enumerate the types here.  There is
only one type that could be of interest.  I think you said that you
don't want to just try to blindly open (type,name), but even if so, why
not just try to enumerate the names within 'type'?

Thanks,

Ben.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to