ofproto-dpif: Ignore non-packet field masks during flow revalidation
authorAndy Zhou <azhou@nicira.com>
Wed, 11 Dec 2013 07:32:51 +0000 (23:32 -0800)
committerAndy Zhou <azhou@nicira.com>
Wed, 11 Dec 2013 21:00:04 +0000 (13:00 -0800)
commitc11c6faa557fb7f363375f988731fff19562dee5
tree5503c7c0df972eaa869b9e1f3d5009036774727e
parent5a8cc7859f9f0b2aebbe7f931fc64603136ed22d
ofproto-dpif: Ignore non-packet field masks during flow revalidation

Commit bcd2633a5be(ofproto-dpif: Store relevant fields for wildcarding
in facet) implements flow revalidation by comparing the newly looked
up flow mask with that of the existing facet.

The non-packet fields, such as register masks, are always cleared
by xlate_actions in the masks stored within facets, but they are not
cleared in the newly looked up flow masks, causing otherwise valid
flows to be declared as invalid flows and be removed from the datapath.

This patch provides a fix. I was able to verify the fix on a system set
up by Ying Chen where the bug can be reproduced.

Bug #21680
Reported by: Ying Chen <yingchen@vmware.com>

Acked-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
lib/flow.c
lib/flow.h
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif.c