ofproto-dpif: Handle tunnel config changes in facet_revalidate().
authorEthan Jackson <ethan@nicira.com>
Wed, 27 Feb 2013 03:12:22 +0000 (19:12 -0800)
committerEthan Jackson <ethan@nicira.com>
Thu, 28 Feb 2013 00:48:59 +0000 (16:48 -0800)
commitf231418e8b95f3a0baf930dee587a2bb271ae196
treed31b410591d8ce550be9c29382371bc3b94fa513
parentc84451a66e5e1c03c2c057874f089047ab502735
ofproto-dpif: Handle tunnel config changes in facet_revalidate().

For most of the history of Open vSwitch, one could assume that a
given datapath flow key would consistently translate into the same
userspace struct flow representation.  However, with the switch to
flow based tunneling, we now have a situation where a database
configuration change can cause a datapath flow key's in_port to
correspond to a completely different OpenFlow in_port possibly on a
completely different bridge.  This can cause all sorts of problems,
including traffic black holes due to confused facet revalidations.

To solve the problem, this patch verifies that each facet's
subfacets still result in the appropriate struct flow.  If a facet
fails this test, it is simply removed.

Bug #15213.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
ofproto/ofproto-dpif.c