summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Chaudron <echaudro@redhat.com>2022-02-22 16:26:55 +0100
committerIlya Maximets <i.maximets@ovn.org>2022-03-21 00:42:55 +0100
commite9b3b9876e74489b3a223ac17da555f6c19d1fe7 (patch)
tree85457cc3dc74b8a013277a96a3745e19bf68bac7
parentfe65aebbd692f876bd89586b26aa725954107121 (diff)
downloadopenvswitch-e9b3b9876e74489b3a223ac17da555f6c19d1fe7.tar.gz
odp-util: Fix output for tc to be equal to kernel.
When the same flow is programmed in the kernel and tc, they look different due to the way they are translated. They take the userspace approach by always including the packet type attribute. To make the outputs the same, show the ethernet header when the packet type is wildcarded, and not printed. So without the fix the kernel would show (ovs-appctl dpctl/dump-flows): in_port(3),eth(),eth_type(0x0800),ipv4(frag=no), ..., actions:output Where as TC would show: in_port(3),eth_type(0x0800),ipv4(frag=no), ..., actions:output Signed-off-by: Eelco Chaudron <echaudro@redhat.com> Acked-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
-rw-r--r--lib/odp-util.c5
-rw-r--r--tests/tunnel.at2
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/odp-util.c b/lib/odp-util.c
index 6245e0c26..102003fc8 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -4597,6 +4597,11 @@ odp_flow_format(const struct nlattr *key, size_t key_len,
ds_put_char(ds, ',');
}
ds_put_cstr(ds, "eth()");
+ } else if (attr_type == OVS_KEY_ATTR_PACKET_TYPE && is_wildcard) {
+ /* See the above help text, however in the case where the
+ * packet type is not shown, we still need to display the
+ * eth() header if the packets type is wildcarded. */
+ has_packet_type_key = false;
}
ofpbuf_clear(&ofp);
}
diff --git a/tests/tunnel.at b/tests/tunnel.at
index b8ae7caa9..fd482aa87 100644
--- a/tests/tunnel.at
+++ b/tests/tunnel.at
@@ -126,7 +126,7 @@ AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
AT_CHECK([ovs-appctl dpctl/add-flow "tunnel(dst=1.1.1.1,src=3.3.3.200/255.255.255.0,tp_dst=123,tp_src=1,ttl=64),recirc_id(0),in_port(1),eth(),eth_type(0x0800),ipv4()" "2"])
AT_CHECK([ovs-appctl dpctl/dump-flows | tail -1], [0], [dnl
-tunnel(src=3.3.3.200/255.255.255.0,dst=1.1.1.1,ttl=64,tp_src=1,tp_dst=123),recirc_id(0),in_port(1),eth_type(0x0800), packets:0, bytes:0, used:never, actions:2
+tunnel(src=3.3.3.200/255.255.255.0,dst=1.1.1.1,ttl=64,tp_src=1,tp_dst=123),recirc_id(0),in_port(1),eth(),eth_type(0x0800), packets:0, bytes:0, used:never, actions:2
])
OVS_VSWITCHD_STOP