Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM l2tp
0004 
0005 #if !defined(_TRACE_L2TP_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_L2TP_H
0007 
0008 #include <linux/tracepoint.h>
0009 #include <linux/l2tp.h>
0010 #include "l2tp_core.h"
0011 
0012 #define encap_type_name(e) { L2TP_ENCAPTYPE_##e, #e }
0013 #define show_encap_type_name(val) \
0014     __print_symbolic(val, \
0015             encap_type_name(UDP), \
0016             encap_type_name(IP))
0017 
0018 #define pw_type_name(p) { L2TP_PWTYPE_##p, #p }
0019 #define show_pw_type_name(val) \
0020     __print_symbolic(val, \
0021     pw_type_name(ETH_VLAN), \
0022     pw_type_name(ETH), \
0023     pw_type_name(PPP), \
0024     pw_type_name(PPP_AC), \
0025     pw_type_name(IP))
0026 
0027 DECLARE_EVENT_CLASS(tunnel_only_evt,
0028     TP_PROTO(struct l2tp_tunnel *tunnel),
0029     TP_ARGS(tunnel),
0030     TP_STRUCT__entry(
0031         __array(char, name, L2TP_TUNNEL_NAME_MAX)
0032     ),
0033     TP_fast_assign(
0034         memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX);
0035     ),
0036     TP_printk("%s", __entry->name)
0037 );
0038 
0039 DECLARE_EVENT_CLASS(session_only_evt,
0040     TP_PROTO(struct l2tp_session *session),
0041     TP_ARGS(session),
0042     TP_STRUCT__entry(
0043         __array(char, name, L2TP_SESSION_NAME_MAX)
0044     ),
0045     TP_fast_assign(
0046         memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
0047     ),
0048     TP_printk("%s", __entry->name)
0049 );
0050 
0051 TRACE_EVENT(register_tunnel,
0052     TP_PROTO(struct l2tp_tunnel *tunnel),
0053     TP_ARGS(tunnel),
0054     TP_STRUCT__entry(
0055         __array(char, name, L2TP_TUNNEL_NAME_MAX)
0056         __field(int, fd)
0057         __field(u32, tid)
0058         __field(u32, ptid)
0059         __field(int, version)
0060         __field(enum l2tp_encap_type, encap)
0061     ),
0062     TP_fast_assign(
0063         memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX);
0064         __entry->fd = tunnel->fd;
0065         __entry->tid = tunnel->tunnel_id;
0066         __entry->ptid = tunnel->peer_tunnel_id;
0067         __entry->version = tunnel->version;
0068         __entry->encap = tunnel->encap;
0069     ),
0070     TP_printk("%s: type=%s encap=%s version=L2TPv%d tid=%u ptid=%u fd=%d",
0071         __entry->name,
0072         __entry->fd > 0 ? "managed" : "unmanaged",
0073         show_encap_type_name(__entry->encap),
0074         __entry->version,
0075         __entry->tid,
0076         __entry->ptid,
0077         __entry->fd)
0078 );
0079 
0080 DEFINE_EVENT(tunnel_only_evt, delete_tunnel,
0081     TP_PROTO(struct l2tp_tunnel *tunnel),
0082     TP_ARGS(tunnel)
0083 );
0084 
0085 DEFINE_EVENT(tunnel_only_evt, free_tunnel,
0086     TP_PROTO(struct l2tp_tunnel *tunnel),
0087     TP_ARGS(tunnel)
0088 );
0089 
0090 TRACE_EVENT(register_session,
0091     TP_PROTO(struct l2tp_session *session),
0092     TP_ARGS(session),
0093     TP_STRUCT__entry(
0094         __array(char, name, L2TP_SESSION_NAME_MAX)
0095         __field(u32, tid)
0096         __field(u32, ptid)
0097         __field(u32, sid)
0098         __field(u32, psid)
0099         __field(enum l2tp_pwtype, pwtype)
0100     ),
0101     TP_fast_assign(
0102         memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
0103         __entry->tid = session->tunnel ? session->tunnel->tunnel_id : 0;
0104         __entry->ptid = session->tunnel ? session->tunnel->peer_tunnel_id : 0;
0105         __entry->sid = session->session_id;
0106         __entry->psid = session->peer_session_id;
0107         __entry->pwtype = session->pwtype;
0108     ),
0109     TP_printk("%s: pseudowire=%s sid=%u psid=%u tid=%u ptid=%u",
0110         __entry->name,
0111         show_pw_type_name(__entry->pwtype),
0112         __entry->sid,
0113         __entry->psid,
0114         __entry->sid,
0115         __entry->psid)
0116 );
0117 
0118 DEFINE_EVENT(session_only_evt, delete_session,
0119     TP_PROTO(struct l2tp_session *session),
0120     TP_ARGS(session)
0121 );
0122 
0123 DEFINE_EVENT(session_only_evt, free_session,
0124     TP_PROTO(struct l2tp_session *session),
0125     TP_ARGS(session)
0126 );
0127 
0128 DEFINE_EVENT(session_only_evt, session_seqnum_lns_enable,
0129     TP_PROTO(struct l2tp_session *session),
0130     TP_ARGS(session)
0131 );
0132 
0133 DEFINE_EVENT(session_only_evt, session_seqnum_lns_disable,
0134     TP_PROTO(struct l2tp_session *session),
0135     TP_ARGS(session)
0136 );
0137 
0138 DECLARE_EVENT_CLASS(session_seqnum_evt,
0139     TP_PROTO(struct l2tp_session *session),
0140     TP_ARGS(session),
0141     TP_STRUCT__entry(
0142         __array(char, name, L2TP_SESSION_NAME_MAX)
0143         __field(u32, ns)
0144         __field(u32, nr)
0145     ),
0146     TP_fast_assign(
0147         memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
0148         __entry->ns = session->ns;
0149         __entry->nr = session->nr;
0150     ),
0151     TP_printk("%s: ns=%u nr=%u",
0152         __entry->name,
0153         __entry->ns,
0154         __entry->nr)
0155 );
0156 
0157 DEFINE_EVENT(session_seqnum_evt, session_seqnum_update,
0158     TP_PROTO(struct l2tp_session *session),
0159     TP_ARGS(session)
0160 );
0161 
0162 DEFINE_EVENT(session_seqnum_evt, session_seqnum_reset,
0163     TP_PROTO(struct l2tp_session *session),
0164     TP_ARGS(session)
0165 );
0166 
0167 DECLARE_EVENT_CLASS(session_pkt_discard_evt,
0168     TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
0169     TP_ARGS(session, pkt_ns),
0170     TP_STRUCT__entry(
0171         __array(char, name, L2TP_SESSION_NAME_MAX)
0172         __field(u32, pkt_ns)
0173         __field(u32, my_nr)
0174         __field(u32, reorder_q_len)
0175     ),
0176     TP_fast_assign(
0177         memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
0178         __entry->pkt_ns = pkt_ns,
0179         __entry->my_nr = session->nr;
0180         __entry->reorder_q_len = skb_queue_len(&session->reorder_q);
0181     ),
0182     TP_printk("%s: pkt_ns=%u my_nr=%u reorder_q_len=%u",
0183         __entry->name,
0184         __entry->pkt_ns,
0185         __entry->my_nr,
0186         __entry->reorder_q_len)
0187 );
0188 
0189 DEFINE_EVENT(session_pkt_discard_evt, session_pkt_expired,
0190     TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
0191     TP_ARGS(session, pkt_ns)
0192 );
0193 
0194 DEFINE_EVENT(session_pkt_discard_evt, session_pkt_outside_rx_window,
0195     TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
0196     TP_ARGS(session, pkt_ns)
0197 );
0198 
0199 DEFINE_EVENT(session_pkt_discard_evt, session_pkt_oos,
0200     TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
0201     TP_ARGS(session, pkt_ns)
0202 );
0203 
0204 #endif /* _TRACE_L2TP_H */
0205 
0206 /* This part must be outside protection */
0207 #undef TRACE_INCLUDE_PATH
0208 #define TRACE_INCLUDE_PATH .
0209 #undef TRACE_INCLUDE_FILE
0210 #define TRACE_INCLUDE_FILE trace
0211 #include <trace/define_trace.h>