[ovs-dev] [PATCH 1/4] lib/tc: Handle ttl for ipv6 too

Or Gerlitz gerlitz.or at gmail.com
Thu Jul 26 14:54:51 UTC 2018


On Thu, Jul 26, 2018 at 5:41 PM, Simon Horman
<simon.horman at netronome.com> wrote:
> On Wed, Jul 25, 2018 at 09:20:06PM +0300, Or Gerlitz wrote:
>> TTL can and should be used to match on IPv6's hop-limit, fix that.

>> Fixes: ab7ecf266b0a ('netdev-tc-offloads: Add nw_ttl matching using flower')
>> Fixes: 0b4b5203d12e ('tc: Add ip layer ttl matching')

>> --- a/lib/netdev-tc-offloads.c
>> +++ b/lib/netdev-tc-offloads.c
>> @@ -1025,8 +1025,10 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match,
>>      if (is_ip_any(key)) {
>>          flower.key.ip_proto = key->nw_proto;
>>          flower.mask.ip_proto = mask->nw_proto;
>> +        mask->nw_proto = 0;
>>          flower.key.ip_ttl = key->nw_ttl;
>>          flower.mask.ip_ttl = mask->nw_ttl;
>> +        mask->nw_ttl = 0;
>>
>>          if (mask->nw_frag & FLOW_NW_FRAG_ANY) {
>>              flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
>> @@ -1073,8 +1075,6 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match,
>>          }
>>
>>          mask->nw_tos = 0;
>> -        mask->nw_proto = 0;
>> -        mask->nw_ttl = 0;
>
> I'm not sure that I understand the purpose of the changes above.
> They seem to shuffle setting two mask values from one place to another.
> But what is the effect of this?

Setting mask->zzz to 0 means we consumed (== set into the mask
of the tc rule) the zzz field. The convention in the code is to have
this zeroing near the spot where you consume the field, I aligned
this code to that convention while fixing the bug.


More information about the dev mailing list