[ovs-dev] [PATCH] datapath: More strict vlan encap netlink check

Andy Zhou azhou at nicira.com
Thu Aug 22 20:13:57 UTC 2013


On Thu, Aug 22, 2013 at 11:37 AM, Jesse Gross <jesse at nicira.com> wrote:

> On Thu, Aug 15, 2013 at 2:16 PM, Andy Zhou <azhou at nicira.com> wrote:
> > diff --git a/datapath/flow.c b/datapath/flow.c
> > index 4075350..a36a1ea 100644
> > --- a/datapath/flow.c
> > +++ b/datapath/flow.c
> > @@ -1585,26 +1585,37 @@ int ovs_match_from_nlattrs(struct sw_flow_match
> *match,
> >         if (err)
> >                 return err;
> >
> > -       if (key_attrs & 1ULL << OVS_KEY_ATTR_ENCAP) {
> > -               encap = a[OVS_KEY_ATTR_ENCAP];
> > -               key_attrs &= ~(1ULL << OVS_KEY_ATTR_ENCAP);
> > -               if (nla_len(encap)) {
> > -                       __be16 eth_type = 0; /* ETH_P_8021Q */
> > +       if ((key_attrs & (1ULL << OVS_KEY_ATTR_ETHERNET)) &&
> > +           (key_attrs & (1ULL << OVS_KEY_ATTR_ETHERTYPE)) &&
> > +           (nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]) ==
> htons(ETH_P_8021Q))) {
> > +               __be16 tci;
> >
> > -                       if (a[OVS_KEY_ATTR_ETHERTYPE])
> > -                               eth_type =
> nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]);
> > +               if (!((key_attrs & (1ULL << OVS_KEY_ATTR_VLAN)) &&
> > +                     (key_attrs & (1ULL << OVS_KEY_ATTR_ETHERTYPE)) &&
> > +                     (key_attrs & (1ULL << OVS_KEY_ATTR_ENCAP)))) {
>
> Thanks, I think this is a big improvement. One question: it seems like
> we check EtherType twice in the above two blocks. Is this just
> redundant or is there something the second check is supposed to catch?
>

Good catch, It is simply redundant & can be removed. Do you need a V2?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20130822/73217740/attachment-0003.html>


More information about the dev mailing list