0001 #undef TRACE_SYSTEM
0002 #define TRACE_SYSTEM bridge
0003
0004 #if !defined(_TRACE_BRIDGE_H) || defined(TRACE_HEADER_MULTI_READ)
0005 #define _TRACE_BRIDGE_H
0006
0007 #include <linux/netdevice.h>
0008 #include <linux/tracepoint.h>
0009
0010 #include "../../../net/bridge/br_private.h"
0011
0012 TRACE_EVENT(br_fdb_add,
0013
0014 TP_PROTO(struct ndmsg *ndm, struct net_device *dev,
0015 const unsigned char *addr, u16 vid, u16 nlh_flags),
0016
0017 TP_ARGS(ndm, dev, addr, vid, nlh_flags),
0018
0019 TP_STRUCT__entry(
0020 __field(u8, ndm_flags)
0021 __string(dev, dev->name)
0022 __array(unsigned char, addr, ETH_ALEN)
0023 __field(u16, vid)
0024 __field(u16, nlh_flags)
0025 ),
0026
0027 TP_fast_assign(
0028 __assign_str(dev, dev->name);
0029 memcpy(__entry->addr, addr, ETH_ALEN);
0030 __entry->vid = vid;
0031 __entry->nlh_flags = nlh_flags;
0032 __entry->ndm_flags = ndm->ndm_flags;
0033 ),
0034
0035 TP_printk("dev %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u nlh_flags %04x ndm_flags %02x",
0036 __get_str(dev), __entry->addr[0], __entry->addr[1],
0037 __entry->addr[2], __entry->addr[3], __entry->addr[4],
0038 __entry->addr[5], __entry->vid,
0039 __entry->nlh_flags, __entry->ndm_flags)
0040 );
0041
0042 TRACE_EVENT(br_fdb_external_learn_add,
0043
0044 TP_PROTO(struct net_bridge *br, struct net_bridge_port *p,
0045 const unsigned char *addr, u16 vid),
0046
0047 TP_ARGS(br, p, addr, vid),
0048
0049 TP_STRUCT__entry(
0050 __string(br_dev, br->dev->name)
0051 __string(dev, p ? p->dev->name : "null")
0052 __array(unsigned char, addr, ETH_ALEN)
0053 __field(u16, vid)
0054 ),
0055
0056 TP_fast_assign(
0057 __assign_str(br_dev, br->dev->name);
0058 __assign_str(dev, p ? p->dev->name : "null");
0059 memcpy(__entry->addr, addr, ETH_ALEN);
0060 __entry->vid = vid;
0061 ),
0062
0063 TP_printk("br_dev %s port %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u",
0064 __get_str(br_dev), __get_str(dev), __entry->addr[0],
0065 __entry->addr[1], __entry->addr[2], __entry->addr[3],
0066 __entry->addr[4], __entry->addr[5], __entry->vid)
0067 );
0068
0069 TRACE_EVENT(fdb_delete,
0070
0071 TP_PROTO(struct net_bridge *br, struct net_bridge_fdb_entry *f),
0072
0073 TP_ARGS(br, f),
0074
0075 TP_STRUCT__entry(
0076 __string(br_dev, br->dev->name)
0077 __string(dev, f->dst ? f->dst->dev->name : "null")
0078 __array(unsigned char, addr, ETH_ALEN)
0079 __field(u16, vid)
0080 ),
0081
0082 TP_fast_assign(
0083 __assign_str(br_dev, br->dev->name);
0084 __assign_str(dev, f->dst ? f->dst->dev->name : "null");
0085 memcpy(__entry->addr, f->key.addr.addr, ETH_ALEN);
0086 __entry->vid = f->key.vlan_id;
0087 ),
0088
0089 TP_printk("br_dev %s dev %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u",
0090 __get_str(br_dev), __get_str(dev), __entry->addr[0],
0091 __entry->addr[1], __entry->addr[2], __entry->addr[3],
0092 __entry->addr[4], __entry->addr[5], __entry->vid)
0093 );
0094
0095 TRACE_EVENT(br_fdb_update,
0096
0097 TP_PROTO(struct net_bridge *br, struct net_bridge_port *source,
0098 const unsigned char *addr, u16 vid, unsigned long flags),
0099
0100 TP_ARGS(br, source, addr, vid, flags),
0101
0102 TP_STRUCT__entry(
0103 __string(br_dev, br->dev->name)
0104 __string(dev, source->dev->name)
0105 __array(unsigned char, addr, ETH_ALEN)
0106 __field(u16, vid)
0107 __field(unsigned long, flags)
0108 ),
0109
0110 TP_fast_assign(
0111 __assign_str(br_dev, br->dev->name);
0112 __assign_str(dev, source->dev->name);
0113 memcpy(__entry->addr, addr, ETH_ALEN);
0114 __entry->vid = vid;
0115 __entry->flags = flags;
0116 ),
0117
0118 TP_printk("br_dev %s source %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u flags 0x%lx",
0119 __get_str(br_dev), __get_str(dev), __entry->addr[0],
0120 __entry->addr[1], __entry->addr[2], __entry->addr[3],
0121 __entry->addr[4], __entry->addr[5], __entry->vid,
0122 __entry->flags)
0123 );
0124
0125
0126 #endif
0127
0128
0129 #include <trace/define_trace.h>