[ovs-dev] [v6tos] flow: flow_extract() improperly parses IPv6 TOS bits.
ethan at nicira.com
Wed Nov 16 18:33:39 UTC 2011
> It's weird that this bug has been in there so long and been undetected. In any case, the fix looks good to me. Thanks for tracking it down.
I just tried reproducing the problem on branch-1.2. OVS handles TOS
incorrectly for IPv6 traffic on this branch, but it fails to warn.
Instead it simply installs the wrong flow in the datapath, and then
happily removes it later when no traffic has hit it. Given that IPv6
traffic with TOS set is so rare, this may explain why we haven't
noticed the issue before.
> On Nov 15, 2011, at 6:43 PM, Ethan Jackson wrote:
>> This problem could cause userspace to automatically evict IPv6
>> flows from the datapath which had TOS bits set.
>> Bug #8323.
>> lib/flow.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>> diff --git a/lib/flow.c b/lib/flow.c
>> index 8b03e76..3f0bea5 100644
>> --- a/lib/flow.c
>> +++ b/lib/flow.c
>> @@ -148,7 +148,7 @@ parse_ipv6(struct ofpbuf *packet, struct flow *flow)
>> flow->ipv6_dst = nh->ip6_dst;
>> tc_flow = get_unaligned_be32(&nh->ip6_flow);
>> - flow->nw_tos = ntohl(tc_flow) >> 4;
>> + flow->nw_tos = ntohl(tc_flow) >> 20;
>> flow->ipv6_label = tc_flow & htonl(IPV6_LABEL_MASK);
>> flow->nw_ttl = nh->ip6_hlim;
>> flow->nw_proto = IPPROTO_NONE;
>> dev mailing list
>> dev at openvswitch.org
More information about the dev