From: Kuniyuki Iwashima <kuniyu@amazon.com>
To: <bazsi77@gmail.com>
Cc: <balazs.scheidler@axoflow.com>, <netdev@vger.kernel.org>,
<kuniyu@amazon.com>
Subject: Re: [PATCH net-next 1/2] net: port TP_STORE_ADDR_PORTS_SKB macro to be tcp/udp independent
Date: Thu, 29 Feb 2024 00:21:38 -0800 [thread overview]
Message-ID: <20240229082138.81685-1-kuniyu@amazon.com> (raw)
In-Reply-To: <b9b8f2ee80038707f2f237c4910c46e1cbed82cd.1709191570.git.balazs.scheidler@axoflow.com>
From: Balazs Scheidler <bazsi77@gmail.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@axoflow.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
next prev parent reply other threads:[~2024-02-29 8:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-29 7:37 [PATCH net-next 0/2] Add IP/port information to UDP drop tracepoint Balazs Scheidler
2024-02-29 7:37 ` [PATCH net-next 1/2] net: port TP_STORE_ADDR_PORTS_SKB macro to be tcp/udp independent Balazs Scheidler
2024-02-29 8:21 ` Kuniyuki Iwashima [this message]
2024-02-29 7:38 ` [PATCH net-next 2/2] net: udp: add IP/port data to the tracepoint udp/udp_fail_queue_rcv_skb Balazs Scheidler
2024-02-29 8:27 ` Kuniyuki Iwashima
2024-02-29 8:56 ` Balazs Scheidler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240229082138.81685-1-kuniyu@amazon.com \
--to=kuniyu@amazon.com \
--cc=balazs.scheidler@axoflow.com \
--cc=bazsi77@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).