From 46d6f36f042e5a23d1548ca4d2f1c8eeca9031ca Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Wed, 11 Nov 2009 11:13:37 -0800 Subject: [PATCH] ofproto: Update stats for exact match flows before expiration. When a wildcarded flow is expired we remove all of the subrules to collect their stats before sending a flow expiration message. However, we were only removing exact match flows after the expiration message is composed. This uninstalls it first. CC: David Erickson --- secchan/ofproto.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/secchan/ofproto.c b/secchan/ofproto.c index 6319b0320..cfaf0cf95 100644 --- a/secchan/ofproto.c +++ b/secchan/ofproto.c @@ -3292,14 +3292,16 @@ expire_rule(struct cls_rule *cls_rule, void *p_) } COVERAGE_INC(ofproto_expired); + + /* Update stats. This code will be a no-op if the rule expired + * due to an idle timeout. */ if (rule->cr.wc.wildcards) { - /* Update stats. (This code will be a no-op if the rule expired - * due to an idle timeout, because in that case the rule has no - * subrules left.) */ struct rule *subrule, *next; LIST_FOR_EACH_SAFE (subrule, next, struct rule, list, &rule->list) { rule_remove(p, subrule); } + } else { + rule_uninstall(p, rule); } send_flow_exp(p, rule, now, -- 2.43.0