odp_flows[0].key = rule->cr.flow;
}
- /* Fetch up-to-date statistics from the datapath and add them in. */ */
+ /* Fetch up-to-date statistics from the datapath and add them in. */
if (!dpif_flow_get_multiple(p->dpif, odp_flows, n_odp_flows)) {
size_t i;
for (i = 0; i < n_odp_flows; i++) {
} else {
size_t actions_len = n_actions * sizeof *rule->actions;
+ rule->flow_cookie = ofm->cookie;
if (n_actions == rule->n_actions
&& !memcmp(ofm->actions, rule->actions, actions_len))
{
free(rule->actions);
rule->actions = xmemdup(ofm->actions, actions_len);
rule->n_actions = n_actions;
- rule->flow_cookie = ofm->cookie;
if (rule->cr.wc.wildcards) {
COVERAGE_INC(ofproto_mod_wc_flow);
{
struct ofp_flow_removed *ofr;
struct ofpbuf *buf;
- long long int tdiff = time_msec() - rule->created;
+ long long int tdiff = now - rule->created;
uint32_t sec = tdiff / 1000;
uint32_t msec = tdiff - (sec * 1000);