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
/* Get updated flow stats. */
memset(&odp_flow, 0, sizeof odp_flow);
/* 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;
}
expired.flow = rule->cr.flow;