From: Jesse Gross Date: Fri, 6 Nov 2009 21:26:42 +0000 (-0800) Subject: netflow: Only query stats of installed flows. X-Git-Tag: v0.90.7~18 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=094e151456b597c278f3b416523cf36b5e8e7f99;p=sliver-openvswitch.git netflow: Only query stats of installed flows. NetFlow active timeouts was querying the stats of all exact match flows that had reached a certain age including those that could not be installed. This was not harmful but it was wasteful and produced log spew. This changes it to only query the flows that are actually installed. Bug #2252 --- diff --git a/secchan/ofproto.c b/secchan/ofproto.c index babf01ed0..cdb94b504 100644 --- a/secchan/ofproto.c +++ b/secchan/ofproto.c @@ -3318,14 +3318,16 @@ active_timeout(struct ofproto *ofproto, struct rule *rule) /* Get updated flow stats. */ memset(&odp_flow, 0, sizeof odp_flow); - odp_flow.key = rule->cr.flow; - odp_flow.flags = ODPFF_ZERO_TCP_FLAGS; - dpif_flow_get(&ofproto->dpif, &odp_flow); - - if (odp_flow.stats.n_packets) { - update_time(ofproto, rule, &odp_flow.stats); - netflow_flow_update_flags(&rule->nf_flow, odp_flow.stats.ip_tos, - odp_flow.stats.tcp_flags); + if (rule->installed) { + odp_flow.key = rule->cr.flow; + odp_flow.flags = ODPFF_ZERO_TCP_FLAGS; + dpif_flow_get(&ofproto->dpif, &odp_flow); + + if (odp_flow.stats.n_packets) { + update_time(ofproto, rule, &odp_flow.stats); + netflow_flow_update_flags(&rule->nf_flow, odp_flow.stats.ip_tos, + odp_flow.stats.tcp_flags); + } } expired.flow = rule->cr.flow;