[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240229082138.81685-1-kuniyu@amazon.com>
Date: Thu, 29 Feb 2024 00:21:38 -0800
From: Kuniyuki Iwashima <kuniyu@...zon.com>
To: <bazsi77@...il.com>
CC: <balazs.scheidler@...flow.com>, <netdev@...r.kernel.org>,
<kuniyu@...zon.com>
Subject: Re: [PATCH net-next 1/2] net: port TP_STORE_ADDR_PORTS_SKB macro to be tcp/udp independent
From: Balazs Scheidler <bazsi77@...il.com>
Date: Thu, 29 Feb 2024 08:37:59 +0100
> This patch moves TP_STORE_ADDR_PORTS_SKB() to a common header and removes
> the TCP specific implementation details.
>
> Previously the macro assumed the skb passed as an argument is a
> TCP packet, the implementation now uses an argument to the L3 header and
nit: s/L3/L4/
> uses that to extract the source/destination ports, which happen
> to be named the same in "struct tcphdr" and "struct udphdr"
>
> Signed-off-by: Balazs Scheidler <balazs.scheidler@...flow.com>
> ---
> include/trace/events/net_probe_common.h | 41 ++++++++++++++++++++++
> include/trace/events/tcp.h | 45 ++-----------------------
> 2 files changed, 43 insertions(+), 43 deletions(-)
>
> diff --git a/include/trace/events/net_probe_common.h b/include/trace/events/net_probe_common.h
> index 3930119cab08..50c083b5687d 100644
> --- a/include/trace/events/net_probe_common.h
> +++ b/include/trace/events/net_probe_common.h
> @@ -41,4 +41,45 @@
>
> #endif
>
> +#define TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb, protoh) \
> + do { \
> + struct sockaddr_in *v4 = (void *)__entry->saddr; \
> + \
> + v4->sin_family = AF_INET; \
> + v4->sin_port = protoh->source; \
> + v4->sin_addr.s_addr = ip_hdr(skb)->saddr; \
> + v4 = (void *)__entry->daddr; \
> + v4->sin_family = AF_INET; \
> + v4->sin_port = protoh->dest; \
> + v4->sin_addr.s_addr = ip_hdr(skb)->daddr; \
> + } while (0)
> +
> +#if IS_ENABLED(CONFIG_IPV6)
> +
> +#define TP_STORE_ADDR_PORTS_SKB(__entry, skb, protoh) \
> + do { \
> + const struct iphdr *iph = ip_hdr(skb); \
> + \
> + if (iph->version == 6) { \
> + struct sockaddr_in6 *v6 = (void *)__entry->saddr; \
> + \
> + v6->sin6_family = AF_INET6; \
> + v6->sin6_port = protoh->source; \
> + v6->sin6_addr = ipv6_hdr(skb)->saddr; \
> + v6 = (void *)__entry->daddr; \
> + v6->sin6_family = AF_INET6; \
> + v6->sin6_port = protoh->dest; \
> + v6->sin6_addr = ipv6_hdr(skb)->daddr; \
> + } else \
> + TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb, protoh); \
> + } while (0)
> +
> +#else
> +
> +#define TP_STORE_ADDR_PORTS_SKB(__entry, skb, protoh) \
> + TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb, protoh)
> +
> +#endif
> +
> +
> #endif
> diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
> index 7b1ddffa3dfc..717f74454c17 100644
> --- a/include/trace/events/tcp.h
> +++ b/include/trace/events/tcp.h
> @@ -295,48 +295,6 @@ TRACE_EVENT(tcp_probe,
> __entry->srtt, __entry->rcv_wnd, __entry->sock_cookie)
> );
>
> -#define TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb) \
> - do { \
> - const struct tcphdr *th = (const struct tcphdr *)skb->data; \
> - struct sockaddr_in *v4 = (void *)__entry->saddr; \
> - \
> - v4->sin_family = AF_INET; \
> - v4->sin_port = th->source; \
> - v4->sin_addr.s_addr = ip_hdr(skb)->saddr; \
> - v4 = (void *)__entry->daddr; \
> - v4->sin_family = AF_INET; \
> - v4->sin_port = th->dest; \
> - v4->sin_addr.s_addr = ip_hdr(skb)->daddr; \
> - } while (0)
> -
> -#if IS_ENABLED(CONFIG_IPV6)
> -
> -#define TP_STORE_ADDR_PORTS_SKB(__entry, skb) \
> - do { \
> - const struct iphdr *iph = ip_hdr(skb); \
> - \
> - if (iph->version == 6) { \
> - const struct tcphdr *th = (const struct tcphdr *)skb->data; \
> - struct sockaddr_in6 *v6 = (void *)__entry->saddr; \
> - \
> - v6->sin6_family = AF_INET6; \
> - v6->sin6_port = th->source; \
> - v6->sin6_addr = ipv6_hdr(skb)->saddr; \
> - v6 = (void *)__entry->daddr; \
> - v6->sin6_family = AF_INET6; \
> - v6->sin6_port = th->dest; \
> - v6->sin6_addr = ipv6_hdr(skb)->daddr; \
> - } else \
> - TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb); \
> - } while (0)
> -
> -#else
> -
> -#define TP_STORE_ADDR_PORTS_SKB(__entry, skb) \
> - TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb)
> -
> -#endif
> -
> /*
> * tcp event with only skb
> */
> @@ -353,12 +311,13 @@ DECLARE_EVENT_CLASS(tcp_event_skb,
> ),
>
> TP_fast_assign(
> + const struct tcphdr *th = (const struct tcphdr *)skb->data;
> __entry->skbaddr = skb;
>
> memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));
> memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));
>
> - TP_STORE_ADDR_PORTS_SKB(__entry, skb);
> + TP_STORE_ADDR_PORTS_SKB(__entry, skb, th);
> ),
>
> TP_printk("src=%pISpc dest=%pISpc", __entry->saddr, __entry->daddr)
> --
> 2.40.1
Powered by blists - more mailing lists