There is a race in add_flow() in ofproto.c, in that the flow becomes visible in the flow table (to the forwarding threads) before it is initialaized. This tends to cause crashes under load when the flow table is changing. This series of commits fixes the problem.
Ben Pfaff (6): Fix typos in a couple of OpenFlow related comments. classifier: New function cls_rule_move(). ofproto-dpif-xlate: Fix fin_timeout to make rules expirable. ofp-util: Abstract flow_mod OFPFF_* flags. ofproto: Make OFPFC_ADD internally modify a rule instead of swapping. ofproto: Fully construct rules before putting them in the classifier. OPENFLOW-1.1+ | 3 - include/openflow/openflow-1.0.h | 2 +- lib/classifier.c | 12 +- lib/classifier.h | 3 +- lib/flow.c | 23 ++ lib/flow.h | 2 + lib/learn.c | 15 +- lib/match.c | 9 + lib/match.h | 3 +- lib/ofp-actions.h | 2 +- lib/ofp-errors.h | 3 +- lib/ofp-parse.c | 10 +- lib/ofp-print.c | 28 ++- lib/ofp-util.c | 145 +++++++++--- lib/ofp-util.h | 14 +- ofproto/ofproto-dpif-xlate.c | 24 +- ofproto/ofproto-dpif.c | 38 +++- ofproto/ofproto-provider.h | 185 ++++++++++------ ofproto/ofproto.c | 465 ++++++++++++++++++++++----------------- utilities/ovs-ofctl.c | 3 +- 20 files changed, 630 insertions(+), 359 deletions(-) -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev