hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/include/trace/events/fib.h
....@@ -13,9 +13,9 @@
1313 TRACE_EVENT(fib_table_lookup,
1414
1515 TP_PROTO(u32 tb_id, const struct flowi4 *flp,
16
- const struct fib_nh *nh, int err),
16
+ const struct fib_nh_common *nhc, int err),
1717
18
- TP_ARGS(tb_id, flp, nh, err),
18
+ TP_ARGS(tb_id, flp, nhc, err),
1919
2020 TP_STRUCT__entry(
2121 __field( u32, tb_id )
....@@ -28,14 +28,17 @@
2828 __field( __u8, flags )
2929 __array( __u8, src, 4 )
3030 __array( __u8, dst, 4 )
31
- __array( __u8, gw, 4 )
32
- __array( __u8, saddr, 4 )
31
+ __array( __u8, gw4, 4 )
32
+ __array( __u8, gw6, 16 )
3333 __field( u16, sport )
3434 __field( u16, dport )
3535 __dynamic_array(char, name, IFNAMSIZ )
3636 ),
3737
3838 TP_fast_assign(
39
+ struct in6_addr in6_zero = {};
40
+ struct net_device *dev;
41
+ struct in6_addr *in6;
3942 __be32 *p32;
4043
4144 __entry->tb_id = tb_id;
....@@ -62,30 +65,37 @@
6265 __entry->dport = 0;
6366 }
6467
65
- if (nh) {
66
- p32 = (__be32 *) __entry->saddr;
67
- *p32 = nh->nh_saddr;
68
+ dev = nhc ? nhc->nhc_dev : NULL;
69
+ __assign_str(name, dev ? dev->name : "-");
6870
69
- p32 = (__be32 *) __entry->gw;
70
- *p32 = nh->nh_gw;
71
+ if (nhc) {
72
+ if (nhc->nhc_gw_family == AF_INET) {
73
+ p32 = (__be32 *) __entry->gw4;
74
+ *p32 = nhc->nhc_gw.ipv4;
7175
72
- __assign_str(name, nh->nh_dev ? nh->nh_dev->name : "-");
76
+ in6 = (struct in6_addr *)__entry->gw6;
77
+ *in6 = in6_zero;
78
+ } else if (nhc->nhc_gw_family == AF_INET6) {
79
+ p32 = (__be32 *) __entry->gw4;
80
+ *p32 = 0;
81
+
82
+ in6 = (struct in6_addr *)__entry->gw6;
83
+ *in6 = nhc->nhc_gw.ipv6;
84
+ }
7385 } else {
74
- p32 = (__be32 *) __entry->saddr;
86
+ p32 = (__be32 *) __entry->gw4;
7587 *p32 = 0;
7688
77
- p32 = (__be32 *) __entry->gw;
78
- *p32 = 0;
79
-
80
- __assign_str(name, "-");
89
+ in6 = (struct in6_addr *)__entry->gw6;
90
+ *in6 = in6_zero;
8191 }
8292 ),
8393
84
- TP_printk("table %u oif %d iif %d proto %u %pI4/%u -> %pI4/%u tos %d scope %d flags %x ==> dev %s gw %pI4 src %pI4 err %d",
94
+ TP_printk("table %u oif %d iif %d proto %u %pI4/%u -> %pI4/%u tos %d scope %d flags %x ==> dev %s gw %pI4/%pI6c err %d",
8595 __entry->tb_id, __entry->oif, __entry->iif, __entry->proto,
8696 __entry->src, __entry->sport, __entry->dst, __entry->dport,
8797 __entry->tos, __entry->scope, __entry->flags,
88
- __get_str(name), __entry->gw, __entry->saddr, __entry->err)
98
+ __get_str(name), __entry->gw4, __entry->gw6, __entry->err)
8999 );
90100 #endif /* _TRACE_FIB_H */
91101