ofproto: Only initiate flow table modifications if they will succeed.
authorBen Pfaff <blp@nicira.com>
Fri, 6 Jun 2014 02:56:53 +0000 (19:56 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 12 Jun 2014 21:23:26 +0000 (14:23 -0700)
commitaf822017badabfb624f8cd5dd65def7f7f557516
treee14c42f37534a10f70fb46967b57dc4e75d6b958
parent3d900aa74d174925c1c1d01de7f6fdd417f3aead
ofproto: Only initiate flow table modifications if they will succeed.

In OpenFlow, a single "flow_mod" operation can change the actions (and
some other properties) of an arbitrary number of flows.  Until now,
Open vSwitch has assumed that any subset of these operations could
fail.  However, it has come out in discussion in the OpenFlow extensibility
working group that "partial failure" of a flow table operation is
undesirable, and furthermore that it should be possible to avoid it on
hardware implementations.  (The latter is the reason that Open vSwitch
permitted it to be with.)

This commit changes Open vSwitch to check whether all of a set of flow
table modifications will succeed before it initiates any of them.
This will not change visible behavior of the Open vSwitch software
switch, which never failed flow table modifications anyway.  It might
change behavior of some hardware implementation, but I don't actually know
of any.

ONF-JIRA: EXT-362.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
CONTRIBUTING
include/openflow/nicira-ext.h
ofproto/ofproto-dpif.c
ofproto/ofproto-provider.h
ofproto/ofproto.c