On Fri, Jul 24, 2015 at 09:14:33AM -0700, Alex Wang wrote:
> On Fri, Jul 24, 2015 at 8:48 AM, Ben Pfaff <b...@nicira.com> wrote:
> 
> > On Thu, Jul 23, 2015 at 05:32:55PM -0700, Alex Wang wrote:
> > > The get_in6() API defined in netdev-provider.h requires the return
> > > of error values when the 'netdev' has no assigned IPv6 address or
> > > the 'netdev' does not support IPv6.  However, the netdev_linux_get_in6()
> > > implementation does not follow this (always return 0).  And this
> > > causes the a bug in deleting vlan interfaces created for vlan
> > > splinter.
> > >
> > > This commit makes netdev_linux_get_in6() conform to the API definition
> > > and returns the specified error value when failing to get IPv6 address.
> > >
> > > VMware-BZ: #1485521
> > > Reported-by: Ronald Lee <ronald...@vmware.com>
> > > Signed-off-by: Alex Wang <al...@nicira.com>
> >
> > It's better if we can cache error conditions as well as success.  How
> > about this diff?
> >
> > diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
> > index 0656f36..aff2f62 100644
> > --- a/lib/netdev-linux.c
> > +++ b/lib/netdev-linux.c
> > @@ -458,6 +458,7 @@ struct netdev_linux {
> >      int netdev_policing_error;  /* Cached error code from set policing. */
> >      int get_features_error;     /* Cached error code from ETHTOOL_GSET. */
> >      int get_ifindex_error;      /* Cached error code from SIOCGIFINDEX. */
> > +    int in6_error;              /* Cached error code from reading in6
> > addr. */
> >
> >      enum netdev_features current;    /* Cached from ETHTOOL_GSET. */
> >      enum netdev_features advertised; /* Cached from ETHTOOL_GSET. */
> > @@ -2465,12 +2466,14 @@ parse_if_inet6_line(const char *line,
> >                      ifname);
> >  }
> >
> >
> 
> I did not notice that we cache other errors.  did not see we do so for in4.
>  that
> is why i did that.~

It would probably be better if we did so for IPv4 also.

> Could we just return netdev->in6_error and get rid of 'error'?

That would introduce a race against some other thread grabbing the lock
and changing netdev->in6_error before we read back what we just wrote.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to