When a rule displaces another, we are supposed to credit the stats
for packets that have already been processed to the displaced rule
before we eject it from the datapath. However, we were instead
crediting the new rule.
&put)) {
rule->installed = true;
if (displaced_rule) {
&put)) {
rule->installed = true;
if (displaced_rule) {
- update_stats(p, rule, &put.flow.stats);
+ update_stats(p, displaced_rule, &put.flow.stats);
rule_post_uninstall(p, displaced_rule);
}
}
rule_post_uninstall(p, displaced_rule);
}
}