When ofctrl_add_flow() called ovn_flow_lookup(), the latter used the hash from the flow's hmap_node, but the former hadn't initialized it at that point. This commit fixes the problem.
Reported-by: Russell Bryant <rbry...@redhat.com> Reported-at: http://openvswitch.org/pipermail/dev/2015-July/057851.html Signed-off-by: Ben Pfaff <b...@nicira.com> --- ovn/controller/ofctrl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ovn/controller/ofctrl.c b/ovn/controller/ofctrl.c index c548645..e701f8b 100644 --- a/ovn/controller/ofctrl.c +++ b/ovn/controller/ofctrl.c @@ -268,6 +268,7 @@ ofctrl_add_flow(struct hmap *desired_flows, f->match = *match; f->ofpacts = xmemdup(actions->data, actions->size); f->ofpacts_len = actions->size; + f->hmap_node.hash = ovn_flow_hash(f); if (ovn_flow_lookup(desired_flows, f)) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 5); @@ -281,7 +282,7 @@ ofctrl_add_flow(struct hmap *desired_flows, return; } - hmap_insert(desired_flows, &f->hmap_node, ovn_flow_hash(f)); + hmap_insert(desired_flows, &f->hmap_node, f->hmap_node.hash); } /* ovn_flow. */ -- 2.1.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev