[ovs-dev] [PATCH ovn v3 3/3] ovn-trace: Handle IPv6 packets for tcp_reset action.
Dumitru Ceara
dceara at redhat.com
Mon Oct 19 11:07:38 UTC 2020
On 10/19/20 9:27 AM, numans at ovn.org wrote:
> From: Numan Siddique <numans at ovn.org>
>
> tcp_reset action can be used for both IPv4 and IPv6 TCP packets, but ovn-trace
> was not handling IPv6.
>
> Reported-by: Dumitru Ceara <dceara at redhat.com>
> Signed-off-by: Numan Siddique <numans at ovn.org>
> ---
> utilities/ovn-trace.c | 57 +++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 52 insertions(+), 5 deletions(-)
>
> diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c
> index 89b93774d7..70d47fd1aa 100644
> --- a/utilities/ovn-trace.c
> +++ b/utilities/ovn-trace.c
> @@ -1700,11 +1700,11 @@ execute_icmp6(const struct ovnact_nest *on,
> }
>
> static void
> -execute_tcp_reset(const struct ovnact_nest *on,
> - const struct ovntrace_datapath *dp,
> - const struct flow *uflow, uint8_t table_id,
> - bool lookback, enum ovnact_pipeline pipeline,
> - struct ovs_list *super)
> +execute_tcp4_reset(const struct ovnact_nest *on,
> + const struct ovntrace_datapath *dp,
> + const struct flow *uflow, uint8_t table_id,
> + bool lookback, enum ovnact_pipeline pipeline,
> + struct ovs_list *super)
> {
> struct flow tcp_flow = *uflow;
>
> @@ -1733,6 +1733,53 @@ execute_tcp_reset(const struct ovnact_nest *on,
> table_id, pipeline, &node->subs);
> }
>
> +static void
> +execute_tcp6_reset(const struct ovnact_nest *on,
> + const struct ovntrace_datapath *dp,
> + const struct flow *uflow, uint8_t table_id,
> + bool lookback, enum ovnact_pipeline pipeline,
Typo: s/lookback/loopback
> + struct ovs_list *super)
> +{
> + struct flow tcp_flow = *uflow;
> +
> + /* Update fields for TCP segment. */
> + if (lookback) {
> + tcp_flow.dl_dst = uflow->dl_src;
> + tcp_flow.dl_src = uflow->dl_dst;
> + tcp_flow.ipv6_dst = uflow->ipv6_src;
> + tcp_flow.ipv6_src = uflow->ipv6_dst;
> + } else {
> + tcp_flow.dl_dst = uflow->dl_dst;
> + tcp_flow.dl_src = uflow->dl_src;
> + tcp_flow.ipv6_dst = uflow->ipv6_dst;
> + tcp_flow.ipv6_src = uflow->ipv6_src;
> + }
> + tcp_flow.nw_proto = IPPROTO_TCP;
> + tcp_flow.nw_ttl = 255;
> + tcp_flow.tp_src = uflow->tp_src;
> + tcp_flow.tp_dst = uflow->tp_dst;
> + tcp_flow.tcp_flags = htons(TCP_RST);
> +
> + struct ovntrace_node *node = ovntrace_node_append(
> + super, OVNTRACE_NODE_TRANSFORMATION, "tcp_reset");
> +
> + trace_actions(on->nested, on->nested_len, dp, &tcp_flow,
> + table_id, pipeline, &node->subs);
> +}
> +
> +static void
> +execute_tcp_reset(const struct ovnact_nest *on,
> + const struct ovntrace_datapath *dp,
> + const struct flow *uflow, uint8_t table_id,
> + bool lookback, enum ovnact_pipeline pipeline,
> + struct ovs_list *super)
Typo: s/lookback/loopback
With the typos fixed:
Acked-by: Dumitru Ceara <dceara at redhat.com>
Thanks,
Dumitru
More information about the dev
mailing list