Skip to content

Commit

Permalink
odp-util: Fix output for tc to be equal to kernel.
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Roi Dayan <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
  • Loading branch information
chaudron authored and igsilya committed Mar 20, 2022
1 parent 6d76cfc commit 31b467a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
5 changes: 5 additions & 0 deletions lib/odp-util.c
Original file line number Diff line number Diff line change
Expand Up @@ -4630,6 +4630,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);
}
Expand Down
2 changes: 1 addition & 1 deletion tests/tunnel.at
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 31b467a

Please sign in to comment.