- /* Convert odp_key to flow. */
- fitness = odp_flow_key_to_flow(odp_key.data, odp_key.size, &flow);
- switch (fitness) {
- case ODP_FIT_PERFECT:
- break;
-
- case ODP_FIT_TOO_LITTLE:
- printf("ODP_FIT_TOO_LITTLE: ");
- break;
-
- case ODP_FIT_TOO_MUCH:
- printf("ODP_FIT_TOO_MUCH: ");
- break;
-
- case ODP_FIT_ERROR:
- printf("odp_flow_key_to_flow: error\n");
- goto next;
- }
-
- /* Convert cls_rule back to odp_key. */
- ofpbuf_uninit(&odp_key);
- ofpbuf_init(&odp_key, 0);
- odp_flow_key_from_flow(&odp_key, &flow);
-
- if (odp_key.size > ODPUTIL_FLOW_KEY_BYTES) {
- printf ("too long: %zu > %d\n",
- odp_key.size, ODPUTIL_FLOW_KEY_BYTES);
- exit_code = 1;
+ if (!wc_keys) {
+ /* Convert odp_key to flow. */
+ fitness = odp_flow_key_to_flow(odp_key.data, odp_key.size, &flow);
+ switch (fitness) {
+ case ODP_FIT_PERFECT:
+ break;
+
+ case ODP_FIT_TOO_LITTLE:
+ printf("ODP_FIT_TOO_LITTLE: ");
+ break;
+
+ case ODP_FIT_TOO_MUCH:
+ printf("ODP_FIT_TOO_MUCH: ");
+ break;
+
+ case ODP_FIT_ERROR:
+ printf("odp_flow_key_to_flow: error\n");
+ goto next;
+ }
+ /* Convert cls_rule back to odp_key. */
+ ofpbuf_uninit(&odp_key);
+ ofpbuf_init(&odp_key, 0);
+ odp_flow_key_from_flow(&odp_key, &flow, flow.in_port.odp_port);
+
+ if (odp_key.size > ODPUTIL_FLOW_KEY_BYTES) {
+ printf ("too long: %zu > %d\n",
+ odp_key.size, ODPUTIL_FLOW_KEY_BYTES);
+ exit_code = 1;
+ }