brintos

brintos / linux-shallow public Read only

0
0
Text · 18.7 KiB · a27c4b6 Raw
735 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM tcp4 5#if !defined(_TRACE_TCP_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_TCP_H7 8#include <linux/ipv6.h>9#include <linux/tcp.h>10#include <linux/tracepoint.h>11#include <net/ipv6.h>12#include <net/tcp.h>13#include <linux/sock_diag.h>14#include <net/rstreason.h>15 16/*17 * tcp event with arguments sk and skb18 *19 * Note: this class requires a valid sk pointer; while skb pointer could20 *       be NULL.21 */22DECLARE_EVENT_CLASS(tcp_event_sk_skb,23 24	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),25 26	TP_ARGS(sk, skb),27 28	TP_STRUCT__entry(29		__field(const void *, skbaddr)30		__field(const void *, skaddr)31		__field(int, state)32		__field(__u16, sport)33		__field(__u16, dport)34		__field(__u16, family)35		__array(__u8, saddr, 4)36		__array(__u8, daddr, 4)37		__array(__u8, saddr_v6, 16)38		__array(__u8, daddr_v6, 16)39	),40 41	TP_fast_assign(42		const struct inet_sock *inet = inet_sk(sk);43		__be32 *p32;44 45		__entry->skbaddr = skb;46		__entry->skaddr = sk;47		__entry->state = sk->sk_state;48 49		__entry->sport = ntohs(inet->inet_sport);50		__entry->dport = ntohs(inet->inet_dport);51		__entry->family = sk->sk_family;52 53		p32 = (__be32 *) __entry->saddr;54		*p32 = inet->inet_saddr;55 56		p32 = (__be32 *) __entry->daddr;57		*p32 =  inet->inet_daddr;58 59		TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,60			      sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);61	),62 63	TP_printk("skbaddr=%p skaddr=%p family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",64		  __entry->skbaddr, __entry->skaddr,65		  show_family_name(__entry->family),66		  __entry->sport, __entry->dport, __entry->saddr, __entry->daddr,67		  __entry->saddr_v6, __entry->daddr_v6,68		  show_tcp_state_name(__entry->state))69);70 71DEFINE_EVENT(tcp_event_sk_skb, tcp_retransmit_skb,72 73	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),74 75	TP_ARGS(sk, skb)76);77 78#undef FN79#define FN(reason)	TRACE_DEFINE_ENUM(SK_RST_REASON_##reason);80DEFINE_RST_REASON(FN, FN)81 82#undef FN83#undef FNe84#define FN(reason)	{ SK_RST_REASON_##reason, #reason },85#define FNe(reason)	{ SK_RST_REASON_##reason, #reason }86 87/*88 * skb of trace_tcp_send_reset is the skb that caused RST. In case of89 * active reset, skb should be NULL90 */91TRACE_EVENT(tcp_send_reset,92 93	TP_PROTO(const struct sock *sk,94		 const struct sk_buff *skb__nullable,95		 const enum sk_rst_reason reason),96 97	TP_ARGS(sk, skb__nullable, reason),98 99	TP_STRUCT__entry(100		__field(const void *, skbaddr)101		__field(const void *, skaddr)102		__field(int, state)103		__field(enum sk_rst_reason, reason)104		__array(__u8, saddr, sizeof(struct sockaddr_in6))105		__array(__u8, daddr, sizeof(struct sockaddr_in6))106	),107 108	TP_fast_assign(109		__entry->skbaddr = skb__nullable;110		__entry->skaddr = sk;111		/* Zero means unknown state. */112		__entry->state = sk ? sk->sk_state : 0;113 114		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));115		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));116 117		if (sk && sk_fullsock(sk)) {118			const struct inet_sock *inet = inet_sk(sk);119 120			TP_STORE_ADDR_PORTS(__entry, inet, sk);121		} else if (skb__nullable) {122			const struct tcphdr *th = (const struct tcphdr *)skb__nullable->data;123			/*124			 * We should reverse the 4-tuple of skb, so later125			 * it can print the right flow direction of rst.126			 */127			TP_STORE_ADDR_PORTS_SKB(skb__nullable, th, entry->daddr, entry->saddr);128		}129		__entry->reason = reason;130	),131 132	TP_printk("skbaddr=%p skaddr=%p src=%pISpc dest=%pISpc state=%s reason=%s",133		  __entry->skbaddr, __entry->skaddr,134		  __entry->saddr, __entry->daddr,135		  __entry->state ? show_tcp_state_name(__entry->state) : "UNKNOWN",136		  __print_symbolic(__entry->reason, DEFINE_RST_REASON(FN, FNe)))137);138 139#undef FN140#undef FNe141 142/*143 * tcp event with arguments sk144 *145 * Note: this class requires a valid sk pointer.146 */147DECLARE_EVENT_CLASS(tcp_event_sk,148 149	TP_PROTO(struct sock *sk),150 151	TP_ARGS(sk),152 153	TP_STRUCT__entry(154		__field(const void *, skaddr)155		__field(__u16, sport)156		__field(__u16, dport)157		__field(__u16, family)158		__array(__u8, saddr, 4)159		__array(__u8, daddr, 4)160		__array(__u8, saddr_v6, 16)161		__array(__u8, daddr_v6, 16)162		__field(__u64, sock_cookie)163	),164 165	TP_fast_assign(166		struct inet_sock *inet = inet_sk(sk);167		__be32 *p32;168 169		__entry->skaddr = sk;170 171		__entry->sport = ntohs(inet->inet_sport);172		__entry->dport = ntohs(inet->inet_dport);173		__entry->family = sk->sk_family;174 175		p32 = (__be32 *) __entry->saddr;176		*p32 = inet->inet_saddr;177 178		p32 = (__be32 *) __entry->daddr;179		*p32 =  inet->inet_daddr;180 181		TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,182			       sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);183 184		__entry->sock_cookie = sock_gen_cookie(sk);185	),186 187	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c sock_cookie=%llx",188		  show_family_name(__entry->family),189		  __entry->sport, __entry->dport,190		  __entry->saddr, __entry->daddr,191		  __entry->saddr_v6, __entry->daddr_v6,192		  __entry->sock_cookie)193);194 195DEFINE_EVENT(tcp_event_sk, tcp_receive_reset,196 197	TP_PROTO(struct sock *sk),198 199	TP_ARGS(sk)200);201 202DEFINE_EVENT(tcp_event_sk, tcp_destroy_sock,203 204	TP_PROTO(struct sock *sk),205 206	TP_ARGS(sk)207);208 209DEFINE_EVENT(tcp_event_sk, tcp_rcv_space_adjust,210 211	TP_PROTO(struct sock *sk),212 213	TP_ARGS(sk)214);215 216TRACE_EVENT(tcp_retransmit_synack,217 218	TP_PROTO(const struct sock *sk, const struct request_sock *req),219 220	TP_ARGS(sk, req),221 222	TP_STRUCT__entry(223		__field(const void *, skaddr)224		__field(const void *, req)225		__field(__u16, sport)226		__field(__u16, dport)227		__field(__u16, family)228		__array(__u8, saddr, 4)229		__array(__u8, daddr, 4)230		__array(__u8, saddr_v6, 16)231		__array(__u8, daddr_v6, 16)232	),233 234	TP_fast_assign(235		struct inet_request_sock *ireq = inet_rsk(req);236		__be32 *p32;237 238		__entry->skaddr = sk;239		__entry->req = req;240 241		__entry->sport = ireq->ir_num;242		__entry->dport = ntohs(ireq->ir_rmt_port);243		__entry->family = sk->sk_family;244 245		p32 = (__be32 *) __entry->saddr;246		*p32 = ireq->ir_loc_addr;247 248		p32 = (__be32 *) __entry->daddr;249		*p32 = ireq->ir_rmt_addr;250 251		TP_STORE_ADDRS(__entry, ireq->ir_loc_addr, ireq->ir_rmt_addr,252			      ireq->ir_v6_loc_addr, ireq->ir_v6_rmt_addr);253	),254 255	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",256		  show_family_name(__entry->family),257		  __entry->sport, __entry->dport,258		  __entry->saddr, __entry->daddr,259		  __entry->saddr_v6, __entry->daddr_v6)260);261 262#include <trace/events/net_probe_common.h>263 264TRACE_EVENT(tcp_probe,265 266	TP_PROTO(struct sock *sk, struct sk_buff *skb),267 268	TP_ARGS(sk, skb),269 270	TP_STRUCT__entry(271		/* sockaddr_in6 is always bigger than sockaddr_in */272		__array(__u8, saddr, sizeof(struct sockaddr_in6))273		__array(__u8, daddr, sizeof(struct sockaddr_in6))274		__field(__u16, sport)275		__field(__u16, dport)276		__field(__u16, family)277		__field(__u32, mark)278		__field(__u16, data_len)279		__field(__u32, snd_nxt)280		__field(__u32, snd_una)281		__field(__u32, snd_cwnd)282		__field(__u32, ssthresh)283		__field(__u32, snd_wnd)284		__field(__u32, srtt)285		__field(__u32, rcv_wnd)286		__field(__u64, sock_cookie)287		__field(const void *, skbaddr)288		__field(const void *, skaddr)289	),290 291	TP_fast_assign(292		const struct tcphdr *th = (const struct tcphdr *)skb->data;293		const struct inet_sock *inet = inet_sk(sk);294		const struct tcp_sock *tp = tcp_sk(sk);295 296		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));297		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));298 299		TP_STORE_ADDR_PORTS(__entry, inet, sk);300 301		/* For filtering use */302		__entry->sport = ntohs(inet->inet_sport);303		__entry->dport = ntohs(inet->inet_dport);304		__entry->mark = skb->mark;305		__entry->family = sk->sk_family;306 307		__entry->data_len = skb->len - __tcp_hdrlen(th);308		__entry->snd_nxt = tp->snd_nxt;309		__entry->snd_una = tp->snd_una;310		__entry->snd_cwnd = tcp_snd_cwnd(tp);311		__entry->snd_wnd = tp->snd_wnd;312		__entry->rcv_wnd = tp->rcv_wnd;313		__entry->ssthresh = tcp_current_ssthresh(sk);314		__entry->srtt = tp->srtt_us >> 3;315		__entry->sock_cookie = sock_gen_cookie(sk);316 317		__entry->skbaddr = skb;318		__entry->skaddr = sk;319	),320 321	TP_printk("family=%s src=%pISpc dest=%pISpc mark=%#x data_len=%d snd_nxt=%#x snd_una=%#x snd_cwnd=%u ssthresh=%u snd_wnd=%u srtt=%u rcv_wnd=%u sock_cookie=%llx skbaddr=%p skaddr=%p",322		  show_family_name(__entry->family),323		  __entry->saddr, __entry->daddr, __entry->mark,324		  __entry->data_len, __entry->snd_nxt, __entry->snd_una,325		  __entry->snd_cwnd, __entry->ssthresh, __entry->snd_wnd,326		  __entry->srtt, __entry->rcv_wnd, __entry->sock_cookie,327		  __entry->skbaddr, __entry->skaddr)328);329 330/*331 * tcp event with only skb332 */333DECLARE_EVENT_CLASS(tcp_event_skb,334 335	TP_PROTO(const struct sk_buff *skb),336 337	TP_ARGS(skb),338 339	TP_STRUCT__entry(340		__field(const void *, skbaddr)341		__array(__u8, saddr, sizeof(struct sockaddr_in6))342		__array(__u8, daddr, sizeof(struct sockaddr_in6))343	),344 345	TP_fast_assign(346		const struct tcphdr *th = (const struct tcphdr *)skb->data;347		__entry->skbaddr = skb;348 349		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));350		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));351 352		TP_STORE_ADDR_PORTS_SKB(skb, th, __entry->saddr, __entry->daddr);353	),354 355	TP_printk("skbaddr=%p src=%pISpc dest=%pISpc",356		  __entry->skbaddr, __entry->saddr, __entry->daddr)357);358 359DEFINE_EVENT(tcp_event_skb, tcp_bad_csum,360 361	TP_PROTO(const struct sk_buff *skb),362 363	TP_ARGS(skb)364);365 366TRACE_EVENT(tcp_cong_state_set,367 368	TP_PROTO(struct sock *sk, const u8 ca_state),369 370	TP_ARGS(sk, ca_state),371 372	TP_STRUCT__entry(373		__field(const void *, skaddr)374		__field(__u16, sport)375		__field(__u16, dport)376		__field(__u16, family)377		__array(__u8, saddr, 4)378		__array(__u8, daddr, 4)379		__array(__u8, saddr_v6, 16)380		__array(__u8, daddr_v6, 16)381		__field(__u8, cong_state)382	),383 384	TP_fast_assign(385		struct inet_sock *inet = inet_sk(sk);386		__be32 *p32;387 388		__entry->skaddr = sk;389 390		__entry->sport = ntohs(inet->inet_sport);391		__entry->dport = ntohs(inet->inet_dport);392		__entry->family = sk->sk_family;393 394		p32 = (__be32 *) __entry->saddr;395		*p32 = inet->inet_saddr;396 397		p32 = (__be32 *) __entry->daddr;398		*p32 =  inet->inet_daddr;399 400		TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,401			   sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);402 403		__entry->cong_state = ca_state;404	),405 406	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c cong_state=%u",407		  show_family_name(__entry->family),408		  __entry->sport, __entry->dport,409		  __entry->saddr, __entry->daddr,410		  __entry->saddr_v6, __entry->daddr_v6,411		  __entry->cong_state)412);413 414DECLARE_EVENT_CLASS(tcp_hash_event,415 416	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),417 418	TP_ARGS(sk, skb),419 420	TP_STRUCT__entry(421		__field(__u64, net_cookie)422		__field(const void *, skbaddr)423		__field(const void *, skaddr)424		__field(int, state)425 426		/* sockaddr_in6 is always bigger than sockaddr_in */427		__array(__u8, saddr, sizeof(struct sockaddr_in6))428		__array(__u8, daddr, sizeof(struct sockaddr_in6))429		__field(int, l3index)430 431		__field(__u16, sport)432		__field(__u16, dport)433		__field(__u16, family)434 435		__field(bool, fin)436		__field(bool, syn)437		__field(bool, rst)438		__field(bool, psh)439		__field(bool, ack)440	),441 442	TP_fast_assign(443		const struct tcphdr *th = (const struct tcphdr *)skb->data;444 445		__entry->net_cookie = sock_net(sk)->net_cookie;446		__entry->skbaddr = skb;447		__entry->skaddr = sk;448		__entry->state = sk->sk_state;449 450		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));451		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));452		TP_STORE_ADDR_PORTS_SKB(skb, th, __entry->saddr, __entry->daddr);453		__entry->l3index = inet_sdif(skb) ? inet_iif(skb) : 0;454 455		/* For filtering use */456		__entry->sport = ntohs(th->source);457		__entry->dport = ntohs(th->dest);458		__entry->family = sk->sk_family;459 460		__entry->fin = th->fin;461		__entry->syn = th->syn;462		__entry->rst = th->rst;463		__entry->psh = th->psh;464		__entry->ack = th->ack;465	),466 467	TP_printk("net=%llu state=%s family=%s src=%pISpc dest=%pISpc L3index=%d [%c%c%c%c%c]",468		  __entry->net_cookie,469		  show_tcp_state_name(__entry->state),470		  show_family_name(__entry->family),471		  __entry->saddr, __entry->daddr,472		  __entry->l3index,473		  __entry->fin ? 'F' : ' ',474		  __entry->syn ? 'S' : ' ',475		  __entry->rst ? 'R' : ' ',476		  __entry->psh ? 'P' : ' ',477		  __entry->ack ? '.' : ' ')478);479 480DEFINE_EVENT(tcp_hash_event, tcp_hash_bad_header,481 482	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),483	TP_ARGS(sk, skb)484);485 486DEFINE_EVENT(tcp_hash_event, tcp_hash_md5_required,487 488	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),489	TP_ARGS(sk, skb)490);491 492DEFINE_EVENT(tcp_hash_event, tcp_hash_md5_unexpected,493 494	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),495	TP_ARGS(sk, skb)496);497 498DEFINE_EVENT(tcp_hash_event, tcp_hash_md5_mismatch,499 500	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),501	TP_ARGS(sk, skb)502);503 504DEFINE_EVENT(tcp_hash_event, tcp_hash_ao_required,505 506	TP_PROTO(const struct sock *sk, const struct sk_buff *skb),507	TP_ARGS(sk, skb)508);509 510DECLARE_EVENT_CLASS(tcp_ao_event,511 512	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,513		 const __u8 keyid, const __u8 rnext, const __u8 maclen),514 515	TP_ARGS(sk, skb, keyid, rnext, maclen),516 517	TP_STRUCT__entry(518		__field(__u64, net_cookie)519		__field(const void *, skbaddr)520		__field(const void *, skaddr)521		__field(int, state)522 523		/* sockaddr_in6 is always bigger than sockaddr_in */524		__array(__u8, saddr, sizeof(struct sockaddr_in6))525		__array(__u8, daddr, sizeof(struct sockaddr_in6))526		__field(int, l3index)527 528		__field(__u16, sport)529		__field(__u16, dport)530		__field(__u16, family)531 532		__field(bool, fin)533		__field(bool, syn)534		__field(bool, rst)535		__field(bool, psh)536		__field(bool, ack)537 538		__field(__u8, keyid)539		__field(__u8, rnext)540		__field(__u8, maclen)541	),542 543	TP_fast_assign(544		const struct tcphdr *th = (const struct tcphdr *)skb->data;545 546		__entry->net_cookie = sock_net(sk)->net_cookie;547		__entry->skbaddr = skb;548		__entry->skaddr = sk;549		__entry->state = sk->sk_state;550 551		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));552		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));553		TP_STORE_ADDR_PORTS_SKB(skb, th, __entry->saddr, __entry->daddr);554		__entry->l3index = inet_sdif(skb) ? inet_iif(skb) : 0;555 556		/* For filtering use */557		__entry->sport = ntohs(th->source);558		__entry->dport = ntohs(th->dest);559		__entry->family = sk->sk_family;560 561		__entry->fin = th->fin;562		__entry->syn = th->syn;563		__entry->rst = th->rst;564		__entry->psh = th->psh;565		__entry->ack = th->ack;566 567		__entry->keyid = keyid;568		__entry->rnext = rnext;569		__entry->maclen = maclen;570	),571 572	TP_printk("net=%llu state=%s family=%s src=%pISpc dest=%pISpc L3index=%d [%c%c%c%c%c] keyid=%u rnext=%u maclen=%u",573		  __entry->net_cookie,574		  show_tcp_state_name(__entry->state),575		  show_family_name(__entry->family),576		  __entry->saddr, __entry->daddr,577		  __entry->l3index,578		  __entry->fin ? 'F' : ' ',579		  __entry->syn ? 'S' : ' ',580		  __entry->rst ? 'R' : ' ',581		  __entry->psh ? 'P' : ' ',582		  __entry->ack ? '.' : ' ',583		  __entry->keyid, __entry->rnext, __entry->maclen)584);585 586DEFINE_EVENT(tcp_ao_event, tcp_ao_handshake_failure,587	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,588		 const __u8 keyid, const __u8 rnext, const __u8 maclen),589	TP_ARGS(sk, skb, keyid, rnext, maclen)590);591 592DEFINE_EVENT(tcp_ao_event, tcp_ao_wrong_maclen,593	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,594		 const __u8 keyid, const __u8 rnext, const __u8 maclen),595	TP_ARGS(sk, skb, keyid, rnext, maclen)596);597 598DEFINE_EVENT(tcp_ao_event, tcp_ao_mismatch,599	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,600		 const __u8 keyid, const __u8 rnext, const __u8 maclen),601	TP_ARGS(sk, skb, keyid, rnext, maclen)602);603 604DEFINE_EVENT(tcp_ao_event, tcp_ao_key_not_found,605	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,606		 const __u8 keyid, const __u8 rnext, const __u8 maclen),607	TP_ARGS(sk, skb, keyid, rnext, maclen)608);609 610DEFINE_EVENT(tcp_ao_event, tcp_ao_rnext_request,611	TP_PROTO(const struct sock *sk, const struct sk_buff *skb,612		 const __u8 keyid, const __u8 rnext, const __u8 maclen),613	TP_ARGS(sk, skb, keyid, rnext, maclen)614);615 616DECLARE_EVENT_CLASS(tcp_ao_event_sk,617 618	TP_PROTO(const struct sock *sk, const __u8 keyid, const __u8 rnext),619 620	TP_ARGS(sk, keyid, rnext),621 622	TP_STRUCT__entry(623		__field(__u64, net_cookie)624		__field(const void *, skaddr)625		__field(int, state)626 627		/* sockaddr_in6 is always bigger than sockaddr_in */628		__array(__u8, saddr, sizeof(struct sockaddr_in6))629		__array(__u8, daddr, sizeof(struct sockaddr_in6))630 631		__field(__u16, sport)632		__field(__u16, dport)633		__field(__u16, family)634 635		__field(__u8, keyid)636		__field(__u8, rnext)637	),638 639	TP_fast_assign(640		const struct inet_sock *inet = inet_sk(sk);641 642		__entry->net_cookie = sock_net(sk)->net_cookie;643		__entry->skaddr = sk;644		__entry->state = sk->sk_state;645 646		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));647		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));648		TP_STORE_ADDR_PORTS(__entry, inet, sk);649 650		/* For filtering use */651		__entry->sport = ntohs(inet->inet_sport);652		__entry->dport = ntohs(inet->inet_dport);653		__entry->family = sk->sk_family;654 655		__entry->keyid = keyid;656		__entry->rnext = rnext;657	),658 659	TP_printk("net=%llu state=%s family=%s src=%pISpc dest=%pISpc keyid=%u rnext=%u",660		  __entry->net_cookie,661		  show_tcp_state_name(__entry->state),662		  show_family_name(__entry->family),663		  __entry->saddr, __entry->daddr,664		  __entry->keyid, __entry->rnext)665);666 667DEFINE_EVENT(tcp_ao_event_sk, tcp_ao_synack_no_key,668	TP_PROTO(const struct sock *sk, const __u8 keyid, const __u8 rnext),669	TP_ARGS(sk, keyid, rnext)670);671 672DECLARE_EVENT_CLASS(tcp_ao_event_sne,673 674	TP_PROTO(const struct sock *sk, __u32 new_sne),675 676	TP_ARGS(sk, new_sne),677 678	TP_STRUCT__entry(679		__field(__u64, net_cookie)680		__field(const void *, skaddr)681		__field(int, state)682 683		/* sockaddr_in6 is always bigger than sockaddr_in */684		__array(__u8, saddr, sizeof(struct sockaddr_in6))685		__array(__u8, daddr, sizeof(struct sockaddr_in6))686 687		__field(__u16, sport)688		__field(__u16, dport)689		__field(__u16, family)690 691		__field(__u32, new_sne)692	),693 694	TP_fast_assign(695		const struct inet_sock *inet = inet_sk(sk);696 697		__entry->net_cookie = sock_net(sk)->net_cookie;698		__entry->skaddr = sk;699		__entry->state = sk->sk_state;700 701		memset(__entry->saddr, 0, sizeof(struct sockaddr_in6));702		memset(__entry->daddr, 0, sizeof(struct sockaddr_in6));703		TP_STORE_ADDR_PORTS(__entry, inet, sk);704 705		/* For filtering use */706		__entry->sport = ntohs(inet->inet_sport);707		__entry->dport = ntohs(inet->inet_dport);708		__entry->family = sk->sk_family;709 710		__entry->new_sne = new_sne;711	),712 713	TP_printk("net=%llu state=%s family=%s src=%pISpc dest=%pISpc sne=%u",714		  __entry->net_cookie,715		  show_tcp_state_name(__entry->state),716		  show_family_name(__entry->family),717		  __entry->saddr, __entry->daddr,718		  __entry->new_sne)719);720 721DEFINE_EVENT(tcp_ao_event_sne, tcp_ao_snd_sne_update,722	TP_PROTO(const struct sock *sk, __u32 new_sne),723	TP_ARGS(sk, new_sne)724);725 726DEFINE_EVENT(tcp_ao_event_sne, tcp_ao_rcv_sne_update,727	TP_PROTO(const struct sock *sk, __u32 new_sne),728	TP_ARGS(sk, new_sne)729);730 731#endif /* _TRACE_TCP_H */732 733/* This part must be outside protection */734#include <trace/define_trace.h>735