Commit 15aaf59932a3 (ofproto: Add global locking around flow table changes.) introduced doubled messages for expirations.
Reported-by: John Hurley <[email protected]> Signed-off-by: Ben Pfaff <[email protected]> --- ofproto/ofproto.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index f44a7c4..f67e1fb 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -1139,7 +1139,8 @@ ofproto_get_snoops(const struct ofproto *ofproto, struct sset *snoops) } static void -ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule) +ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule, + uint8_t reason) OVS_REQUIRES(ofproto_mutex) { struct ofopgroup *group; @@ -1147,7 +1148,7 @@ ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule) ovs_assert(!rule->pending); group = ofopgroup_create_unattached(ofproto); - delete_flow__(rule, group, OFPRR_DELETE); + delete_flow__(rule, group, reason); ofopgroup_submit(group); } @@ -1202,7 +1203,7 @@ ofproto_flush__(struct ofproto *ofproto) ovs_rwlock_unlock(&table->cls.rwlock); CLS_CURSOR_FOR_EACH_SAFE (rule, next_rule, cr, &cursor) { if (!rule->pending) { - ofproto_rule_delete__(ofproto, rule); + ofproto_rule_delete__(ofproto, rule, OFPRR_DELETE); } } } @@ -4322,8 +4323,7 @@ ofproto_rule_expire(struct rule *rule, uint8_t reason) ovs_assert(reason == OFPRR_HARD_TIMEOUT || reason == OFPRR_IDLE_TIMEOUT || reason == OFPRR_DELETE || reason == OFPRR_GROUP_DELETE); - ofproto_rule_send_removed(rule, reason); - ofproto_rule_delete__(ofproto, rule); + ofproto_rule_delete__(ofproto, rule, reason); } /* Reduces '*timeout' to no more than 'max'. A value of zero in either case -- 1.7.10.4 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
