From: Jason Xing <kernelx...@tencent.com>

Introducing entry_saddr and entry_daddr parameters in this macro
for later use can help us record the reverse 4-tuple by analyzing
the 4-tuple of the incoming skb when receiving.

Signed-off-by: Jason Xing <kernelx...@tencent.com>
Reviewed-by: Eric Dumazet <eduma...@google.com>
---
 include/trace/events/net_probe_common.h | 20 +++++++++++---------
 include/trace/events/tcp.h              |  2 +-
 include/trace/events/udp.h              |  2 +-
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/include/trace/events/net_probe_common.h 
b/include/trace/events/net_probe_common.h
index 5e33f91bdea3..976a58364bff 100644
--- a/include/trace/events/net_probe_common.h
+++ b/include/trace/events/net_probe_common.h
@@ -70,14 +70,14 @@
        TP_STORE_V4MAPPED(__entry, saddr, daddr)
 #endif
 
-#define TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb, protoh)               \
+#define TP_STORE_ADDR_PORTS_SKB_V4(skb, protoh, entry_saddr, entry_daddr) \
        do {                                                            \
-               struct sockaddr_in *v4 = (void *)__entry->saddr;        \
+               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 = (void *)entry_daddr;                               \
                v4->sin_family = AF_INET;                               \
                v4->sin_port = protoh->dest;                            \
                v4->sin_addr.s_addr = ip_hdr(skb)->daddr;               \
@@ -85,28 +85,30 @@
 
 #if IS_ENABLED(CONFIG_IPV6)
 
-#define TP_STORE_ADDR_PORTS_SKB(__entry, skb, protoh)                  \
+#define TP_STORE_ADDR_PORTS_SKB(skb, protoh, entry_saddr, entry_daddr) \
        do {                                                            \
                const struct iphdr *iph = ip_hdr(skb);                  \
                                                                        \
                if (iph->version == 6) {                                \
-                       struct sockaddr_in6 *v6 = (void *)__entry->saddr; \
+                       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 = (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); \
+                       TP_STORE_ADDR_PORTS_SKB_V4(skb, protoh,         \
+                                                  entry_saddr,         \
+                                                  entry_daddr);        \
        } while (0)
 
 #else
 
-#define TP_STORE_ADDR_PORTS_SKB(__entry, skb, protoh)          \
-       TP_STORE_ADDR_PORTS_SKB_V4(__entry, skb, protoh)
+#define TP_STORE_ADDR_PORTS_SKB(skb, protoh, entry_saddr, entry_daddr) \
+       TP_STORE_ADDR_PORTS_SKB_V4(skb, protoh, entry_saddr, entry_daddr)
 
 #endif
 
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index 1db95175c1e5..cf14b6fcbeed 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -295,7 +295,7 @@ DECLARE_EVENT_CLASS(tcp_event_skb,
                memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));
                memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));
 
-               TP_STORE_ADDR_PORTS_SKB(__entry, skb, th);
+               TP_STORE_ADDR_PORTS_SKB(skb, th, __entry->saddr, 
__entry->daddr);
        ),
 
        TP_printk("skbaddr=%p src=%pISpc dest=%pISpc",
diff --git a/include/trace/events/udp.h b/include/trace/events/udp.h
index 62bebe2a6ece..6142be4068e2 100644
--- a/include/trace/events/udp.h
+++ b/include/trace/events/udp.h
@@ -38,7 +38,7 @@ TRACE_EVENT(udp_fail_queue_rcv_skb,
                memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));
                memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));
 
-               TP_STORE_ADDR_PORTS_SKB(__entry, skb, uh);
+               TP_STORE_ADDR_PORTS_SKB(skb, uh, __entry->saddr, 
__entry->daddr);
        ),
 
        TP_printk("rc=%d family=%s src=%pISpc dest=%pISpc", __entry->rc,
-- 
2.37.3


Reply via email to