2017-10-13 13:03:16 -07:00
# undef TRACE_SYSTEM
# define TRACE_SYSTEM tcp
# if !defined(_TRACE_TCP_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_TCP_H
# include <linux/ipv6.h>
# include <linux/tcp.h>
# include <linux/tracepoint.h>
# include <net/ipv6.h>
TRACE_EVENT ( tcp_retransmit_skb ,
TP_PROTO ( struct sock * sk , struct sk_buff * skb ) ,
TP_ARGS ( sk , skb ) ,
TP_STRUCT__entry (
__field ( void * , skbaddr )
__field ( void * , skaddr )
__field ( __u16 , sport )
__field ( __u16 , dport )
__array ( __u8 , saddr , 4 )
__array ( __u8 , daddr , 4 )
__array ( __u8 , saddr_v6 , 16 )
__array ( __u8 , daddr_v6 , 16 )
) ,
TP_fast_assign (
struct ipv6_pinfo * np = inet6_sk ( sk ) ;
struct inet_sock * inet = inet_sk ( sk ) ;
struct in6_addr * pin6 ;
__be32 * p32 ;
__entry - > skbaddr = skb ;
__entry - > skaddr = sk ;
__entry - > sport = ntohs ( inet - > inet_sport ) ;
__entry - > dport = ntohs ( inet - > inet_dport ) ;
p32 = ( __be32 * ) __entry - > saddr ;
* p32 = inet - > inet_saddr ;
p32 = ( __be32 * ) __entry - > daddr ;
* p32 = inet - > inet_daddr ;
if ( np ) {
pin6 = ( struct in6_addr * ) __entry - > saddr_v6 ;
* pin6 = np - > saddr ;
pin6 = ( struct in6_addr * ) __entry - > daddr_v6 ;
* pin6 = * ( np - > daddr_cache ) ;
} else {
pin6 = ( struct in6_addr * ) __entry - > saddr_v6 ;
ipv6_addr_set_v4mapped ( inet - > inet_saddr , pin6 ) ;
pin6 = ( struct in6_addr * ) __entry - > daddr_v6 ;
ipv6_addr_set_v4mapped ( inet - > inet_daddr , pin6 ) ;
}
) ,
2017-10-16 14:24:02 -07:00
TP_printk ( " sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c " ,
2017-10-13 13:03:16 -07:00
__entry - > sport , __entry - > dport , __entry - > saddr , __entry - > daddr ,
__entry - > saddr_v6 , __entry - > daddr_v6 )
) ;
# endif /* _TRACE_TCP_H */
/* This part must be outside protection */
# include <trace/define_trace.h>