[ovs-dev] [PATCH] datapath: More strict vlan encap netlink check
Jesse Gross
jesse at nicira.com
Thu Aug 22 20:27:19 UTC 2013
On Thu, Aug 22, 2013 at 1:13 PM, Andy Zhou <azhou at nicira.com> wrote:
> 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?
No, I just applied the patch with this change. I just wanted to confirm first.
More information about the dev
mailing list