if (want_path != SF_FAST_PATH) {
struct xlate_in xin;
- xlate_in_init(&xin, ofproto, &facet->flow, &facet->initial_vals,
+ xlate_in_init(&xin, ofproto, &miss->flow, &miss->initial_vals,
facet->rule, 0, packet);
xlate_actions_for_side_effects(&xin);
}
put->actions = facet->xout.odp_actions.data;
put->actions_len = facet->xout.odp_actions.size;
} else {
- compose_slow_path(ofproto, &facet->flow, facet->xout.slow,
+ compose_slow_path(ofproto, &miss->flow, facet->xout.slow,
op->slow_stub, sizeof op->slow_stub,
&put->actions, &put->actions_len);
}
CLS_CURSOR_FOR_EACH (facet, cr, &cursor) {
cls_rule_format(&facet->cr, &ds);
ds_put_cstr(&ds, ", ");
- ds_put_format(&ds, "n_subfacets:%"PRIu64", ",
- list_size(&facet->subfacets));
+ ds_put_format(&ds, "n_subfacets:%zu, ", list_size(&facet->subfacets));
ds_put_format(&ds, "used:%.3fs, ", (now - facet->used) / 1000.0);
ds_put_cstr(&ds, "Datapath actions: ");
- format_odp_actions(&ds, facet->xout.odp_actions.data,
- facet->xout.odp_actions.size);
+ if (facet->xout.slow) {
+ uint64_t slow_path_stub[128 / 8];
+ const struct nlattr *actions;
+ size_t actions_len;
+
+ compose_slow_path(ofproto, &facet->flow, facet->xout.slow,
+ slow_path_stub, sizeof slow_path_stub,
+ &actions, &actions_len);
+ format_odp_actions(&ds, actions, actions_len);
+ } else {
+ format_odp_actions(&ds, facet->xout.odp_actions.data,
+ facet->xout.odp_actions.size);
+ }
ds_put_cstr(&ds, "\n");
}