format_dpif_flow(struct ds *ds, const struct dpif_flow *f, struct hmap *ports,
struct dpctl_params *dpctl_p)
{
- if (dpctl_p->verbosity) {
- if (f->ufid_present) {
- odp_format_ufid(&f->ufid, ds);
- ds_put_cstr(ds, ", ");
- } else {
- ds_put_cstr(ds, "ufid:<empty>, ");
- }
+ if (dpctl_p->verbosity && f->ufid_present) {
+ odp_format_ufid(&f->ufid, ds);
+ ds_put_cstr(ds, ", ");
}
odp_flow_format(f->key, f->key_len, f->mask, f->mask_len, ports, ds,
dpctl_p->verbosity);
}
}
+ /* Make sure that these values are different. PMD_ID_NULL means that the
+ * pmd is unspecified (e.g. because the datapath doesn't have different
+ * pmd threads), while NON_PMD_CORE_ID refers to every non pmd threads
+ * in the userspace datapath */
+ BUILD_ASSERT(PMD_ID_NULL != NON_PMD_CORE_ID);
+
ds_init(&ds);
flow_dump = dpif_flow_dump_create(dpif, false);
flow_dump_thread = dpif_flow_dump_thread_create(flow_dump);
struct minimatch minimatch;
odp_flow_key_to_flow(f.key, f.key_len, &flow);
- odp_flow_key_to_mask(f.mask, f.mask_len, &wc.masks, &flow);
+ odp_flow_key_to_mask(f.mask, f.mask_len, f.key, f.key_len,
+ &wc.masks, &flow);
match_init(&match, &flow, &wc);
match_init(&match_filter, &flow_filter, &wc);