ipv6: Pass fib6_result to fib6_table_lookup tracepoint
authorDavid Ahern <dsahern@gmail.com>
Tue, 16 Apr 2019 21:36:09 +0000 (14:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Apr 2019 06:10:47 +0000 (23:10 -0700)
Change fib6_table_lookup tracepoint to take the fib6_result and use
the fib6_info and fib6_nh from it.

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/trace/events/fib6.h
net/ipv6/route.c

index 6d05ebdd669ce79fbbaea9f871b10f5734848673..70e252d926ea9ee7c357ddd27431dd921dd12444 100644 (file)
 
 TRACE_EVENT(fib6_table_lookup,
 
-       TP_PROTO(const struct net *net, const struct fib6_info *f6i,
+       TP_PROTO(const struct net *net, const struct fib6_result *res,
                 struct fib6_table *table, const struct flowi6 *flp),
 
-       TP_ARGS(net, f6i, table, flp),
+       TP_ARGS(net, res, table, flp),
 
        TP_STRUCT__entry(
                __field(        u32,    tb_id           )
@@ -39,7 +39,7 @@ TRACE_EVENT(fib6_table_lookup,
                struct in6_addr *in6;
 
                __entry->tb_id = table->tb6_id;
-               __entry->err = ip6_rt_type_to_error(f6i->fib6_type);
+               __entry->err = ip6_rt_type_to_error(res->f6i->fib6_type);
                __entry->oif = flp->flowi6_oif;
                __entry->iif = flp->flowi6_iif;
                __entry->tos = ip6_tclass(flp->flowlabel);
@@ -62,20 +62,20 @@ TRACE_EVENT(fib6_table_lookup,
                        __entry->dport = 0;
                }
 
-               if (f6i->fib6_nh.fib_nh_dev) {
-                       __assign_str(name, f6i->fib6_nh.fib_nh_dev);
+               if (res->nh && res->nh->fib_nh_dev) {
+                       __assign_str(name, res->nh->fib_nh_dev);
                } else {
                        __assign_str(name, "-");
                }
-               if (f6i == net->ipv6.fib6_null_entry) {
+               if (res->f6i == net->ipv6.fib6_null_entry) {
                        struct in6_addr in6_zero = {};
 
                        in6 = (struct in6_addr *)__entry->gw;
                        *in6 = in6_zero;
 
-               } else if (f6i) {
+               } else if (res->nh) {
                        in6 = (struct in6_addr *)__entry->gw;
-                       *in6 = f6i->fib6_nh.fib_nh_gw6;
+                       *in6 = res->nh->fib_nh_gw6;
                }
        ),
 
index a466e2e478e83f196f5c4eafc7f2bee39757ebec..405e0784d13b6fa3c04a77a0645466b2fed623e4 100644 (file)
@@ -1130,7 +1130,7 @@ restart:
        }
 
 out:
-       trace_fib6_table_lookup(net, res.f6i, table, fl6);
+       trace_fib6_table_lookup(net, &res, table, fl6);
 
        rcu_read_unlock();
 
@@ -1865,7 +1865,7 @@ redo_rt6_select:
                }
        }
 
-       trace_fib6_table_lookup(net, res.f6i, table, fl6);
+       trace_fib6_table_lookup(net, &res, table, fl6);
 
        return res.f6i;
 }
@@ -2538,7 +2538,7 @@ out:
 
        rcu_read_unlock();
 
-       trace_fib6_table_lookup(net, rt, table, fl6);
+       trace_fib6_table_lookup(net, &res, table, fl6);
        return ret;
 };