@@ -411,6 +411,323 @@ TRACE_EVENT(tcp_cong_state_set,
411411 __entry -> cong_state )
412412);
413413
414+ DECLARE_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+
480+ DEFINE_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+
486+ DEFINE_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+
492+ DEFINE_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+
498+ DEFINE_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+
504+ DEFINE_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+
510+ DECLARE_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+
586+ DEFINE_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+
592+ DEFINE_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+
598+ DEFINE_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+
604+ DEFINE_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+
610+ DEFINE_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+
616+ DECLARE_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+
667+ DEFINE_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+
672+ DECLARE_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+
721+ DEFINE_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+
726+ DEFINE_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+
414731#endif /* _TRACE_TCP_H */
415732
416733/* This part must be outside protection */
0 commit comments