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>