1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #if !defined(_TRACE_NET_PROBE_COMMON_H) || defined(TRACE_HEADER_MULTI_READ) |
4 | #define _TRACE_NET_PROBE_COMMON_H |
5 | |
6 | #define TP_STORE_ADDR_PORTS_V4(__entry, inet, sk) \ |
7 | do { \ |
8 | struct sockaddr_in *v4 = (void *)__entry->saddr; \ |
9 | \ |
10 | v4->sin_family = AF_INET; \ |
11 | v4->sin_port = inet->inet_sport; \ |
12 | v4->sin_addr.s_addr = inet->inet_saddr; \ |
13 | v4 = (void *)__entry->daddr; \ |
14 | v4->sin_family = AF_INET; \ |
15 | v4->sin_port = inet->inet_dport; \ |
16 | v4->sin_addr.s_addr = inet->inet_daddr; \ |
17 | } while (0) |
18 | |
19 | #if IS_ENABLED(CONFIG_IPV6) |
20 | |
21 | #define TP_STORE_ADDR_PORTS(__entry, inet, sk) \ |
22 | do { \ |
23 | if (sk->sk_family == AF_INET6) { \ |
24 | struct sockaddr_in6 *v6 = (void *)__entry->saddr; \ |
25 | \ |
26 | v6->sin6_family = AF_INET6; \ |
27 | v6->sin6_port = inet->inet_sport; \ |
28 | v6->sin6_addr = inet6_sk(sk)->saddr; \ |
29 | v6 = (void *)__entry->daddr; \ |
30 | v6->sin6_family = AF_INET6; \ |
31 | v6->sin6_port = inet->inet_dport; \ |
32 | v6->sin6_addr = sk->sk_v6_daddr; \ |
33 | } else \ |
34 | TP_STORE_ADDR_PORTS_V4(__entry, inet, sk); \ |
35 | } while (0) |
36 | |
37 | #else |
38 | |
39 | #define TP_STORE_ADDR_PORTS(__entry, inet, sk) \ |
40 | TP_STORE_ADDR_PORTS_V4(__entry, inet, sk); |
41 | |
42 | #endif |
43 | |
44 | #endif |
45 | |