1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM udp 4 5 #if !defined(_TRACE_UDP_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_UDP_H 7 8 #include <linux/udp.h> 9 #include <linux/tracepoint.h> 10 #include <trace/events/net_probe_common.h> 11 12 TRACE_EVENT(udp_fail_queue_rcv_skb, 13 14 TP_PROTO(int rc, struct sock *sk, struct sk_buff *skb), 15 16 TP_ARGS(rc, sk, skb), 17 18 TP_STRUCT__entry( 19 __field(int, rc) 20 21 __field(__u16, sport) 22 __field(__u16, dport) 23 __field(__u16, family) 24 __array(__u8, saddr, sizeof(struct sockaddr_in6)) 25 __array(__u8, daddr, sizeof(struct sockaddr_in6)) 26 ), 27 28 TP_fast_assign( 29 const struct udphdr *uh = (const struct udphdr *)udp_hdr(skb); 30 31 __entry->rc = rc; 32 33 /* for filtering use */ 34 __entry->sport = ntohs(uh->source); 35 __entry->dport = ntohs(uh->dest); 36 __entry->family = sk->sk_family; 37 38 memset(__entry->saddr, 0, sizeof(struct sockaddr_in6)); 39 memset(__entry->daddr, 0, sizeof(struct sockaddr_in6)); 40 41 TP_STORE_ADDR_PORTS_SKB(skb, uh, __entry->saddr, __entry->daddr); 42 ), 43 44 TP_printk("rc=%d family=%s src=%pISpc dest=%pISpc", __entry->rc, 45 show_family_name(__entry->family), 46 __entry->saddr, __entry->daddr) 47 ); 48 49 #endif /* _TRACE_UDP_H */ 50 51 /* This part must be outside protection */ 52 #include <trace/define_trace.h> 53