summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid Ahern <dsahern@gmail.com>2017-05-25 10:42:33 -0700
committerDavid S. Miller <davem@davemloft.net>2017-05-26 14:12:49 -0400
commit3abd1ade6765e8edcccad6a9e1039cc709e65dde (patch)
tree0efba1d15eda6d52a7fcc07fbc38bf796198ffa6 /include/net
parent5dafc87f40d7b7f2b2a3b3153399143c333ec785 (diff)
downloadlinux-3abd1ade6765e8edcccad6a9e1039cc709e65dde.tar.gz
linux-3abd1ade6765e8edcccad6a9e1039cc709e65dde.tar.bz2
linux-3abd1ade6765e8edcccad6a9e1039cc709e65dde.zip
net: ipv4: refactor __ip_route_output_key_hash
A later patch wants access to the fib result on an output route lookup with the rcu lock held. Refactor __ip_route_output_key_hash, pushing the logic between rcu_read_lock ... rcu_read_unlock into a new helper with the fib_result as an input arg. To keep the name length under control remove the leading underscores from the name and add _rcu to the name of the new helper indicating it is called with the rcu read lock held. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/route.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/net/route.h b/include/net/route.h
index 2cc0e14c6359..89e4028cd063 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -113,13 +113,16 @@ struct in_device;
int ip_rt_init(void);
void rt_cache_flush(struct net *net);
void rt_flush_dev(struct net_device *dev);
-struct rtable *__ip_route_output_key_hash(struct net *net, struct flowi4 *flp,
- const struct sk_buff *skb);
+struct rtable *ip_route_output_key_hash(struct net *net, struct flowi4 *flp,
+ const struct sk_buff *skb);
+struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *flp,
+ struct fib_result *res,
+ const struct sk_buff *skb);
static inline struct rtable *__ip_route_output_key(struct net *net,
struct flowi4 *flp)
{
- return __ip_route_output_key_hash(net, flp, NULL);
+ return ip_route_output_key_hash(net, flp, NULL);
}
struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp,