entry->key_mask,
table->params.key_size);
}
+
+ /* key_priority. */
+ new_entry->key_priority = entry->key_priority;
}
if (data_duplicate) {
tokens += 1 + table->info.n_match_fields;
n_tokens -= 1 + table->info.n_match_fields;
+ /*
+ * Match priority.
+ */
+ if (n_tokens && !strcmp(tokens[0], "priority")) {
+ char *priority = tokens[1];
+ uint32_t val;
+
+ if (n_tokens < 2)
+ goto error;
+
+ /* Parse. */
+ val = strtoul(priority, &priority, 0);
+ if (priority[0])
+ goto error;
+
+ /* Copy to entry. */
+ entry->key_priority = val;
+
+ tokens += 2;
+ n_tokens -= 2;
+ }
+
/*
* Action.
*/
fprintf(f, "%02x", entry->key_mask[i]);
}
+ fprintf(f, " priority %u", entry->key_priority);
+
fprintf(f, " action %s ", action->info.name);
for (i = 0; i < action->data_size; i++)
fprintf(f, "%02x", entry->action_data[i]);
*/
uint64_t key_signature;
+ /** Key priority for the current entry. Useful for wildcard match (as
+ * match rules are commonly overlapping with other rules), ignored for
+ * exact match (as match rules never overlap, hence all rules have the
+ * same match priority) and for LPM (match priority is driven by the
+ * prefix length, with non-overlapping prefixes essentially having the
+ * same match priority). Value 0 indicates the highest match priority.
+ */
+ uint32_t key_priority;
+
/** Action ID for the current entry. */
uint64_t action_id;