net: Move ipv4 set_lwt_redirect helper to lwtunnel
Subsystems (3)
PATCH v2 1/1 net: Move ipv4 set_lwt_redirect helper to lwtunnel
IPv4 uses set_lwt_redirect to set the lwtunnel redirect functions as needed. Move it to lwtunnel.h as lwtunnel_set_redirect and change IPv6 to also use it.
Signed-off-by David Ahern <[email protected]>
---
v2
- removed extra check on dst->lwtstate
include/net/lwtunnel.h | 15 +++++++++++++++ net/ipv4/route.c | 17 ++--------------- net/ipv6/route.c | 9 +-------- 3 files changed, 18 insertions(+), 23 deletions(-)
include/net/lwtunnel.h +15 -0
@@ -127,6 +127,17 @@ int lwtunnel_output(struct net *net, struct sock *sk, struct sk_buff *skb);int lwtunnel_input (struct sk_buff *skb);int lwtunnel_xmit (struct sk_buff *skb); +static inline void lwtunnel_set_redirect (struct dst_entry *dst) +{ +if (lwtunnel_output_redirect (dst->lwtstate)) { + dst->lwtstate->orig_output = dst->output; + dst->output = lwtunnel_output; + } +if (lwtunnel_input_redirect (dst->lwtstate)) { + dst->lwtstate->orig_input = dst->input; + dst->input = lwtunnel_input; + } +}#else static inline void lwtstate_free (struct lwtunnel_state *lws)
@@ -158,6 +169,10 @@ static inline bool lwtunnel_xmit_redirect(struct lwtunnel_state *lwtstate)return false; } +static inline void lwtunnel_set_redirect (struct dst_entry *dst) +{ +} +static inline unsigned int lwtunnel_headroom (struct lwtunnel_state *lwtstate,unsigned int mtu) {
net/ipv4/route.c +2 -15
@@ -1645,19 +1645,6 @@ static void ip_del_fnhe(struct fib_nh *nh, __be32 daddr)spin_unlock_bh (&fnhe_lock); } -static void set_lwt_redirect (struct rtable *rth) -{ -if (lwtunnel_output_redirect (rth->dst.lwtstate)) { - rth->dst.lwtstate->orig_output = rth->dst.output; - rth->dst.output = lwtunnel_output; - } - -if (lwtunnel_input_redirect (rth->dst.lwtstate)) { - rth->dst.lwtstate->orig_input = rth->dst.input; - rth->dst.input = lwtunnel_input; - } -} -/* called in rcu_read_lock() section */ static int __mkroute_input(struct sk_buff *skb, const struct fib_result *res,
@@ -1748,7 +1735,7 @@ static int __mkroute_input(struct sk_buff *skb,rt_set_nexthop (rth, daddr, res, fnhe, res->fi, res->type, itag, do_cache); -set_lwt_redirect (rth); +lwtunnel_set_redirect (&rth->dst);skb_dst_set (skb, &rth->dst); out: err =0 ;
@@ -2267,7 +2254,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res, }rt_set_nexthop (rth, fl4->daddr, res, fnhe, fi, type,0 , do_cache); -set_lwt_redirect (rth); +lwtunnel_set_redirect (&rth->dst);return rth; }
net/ipv6/route.c +1 -8
@@ -2671,14 +2671,7 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg,if (err) goto out; rt->dst.lwtstate =lwtstate_get (lwtstate); -if (lwtunnel_output_redirect (rt->dst.lwtstate)) { - rt->dst.lwtstate->orig_output = rt->dst.output; - rt->dst.output = lwtunnel_output; - } -if (lwtunnel_input_redirect (rt->dst.lwtstate)) { - rt->dst.lwtstate->orig_input = rt->dst.input; - rt->dst.input = lwtunnel_input; - } +lwtunnel_set_redirect (&rt->dst); }ipv6_addr_prefix (&rt->rt6i_dst.addr, &cfg->fc_dst, cfg->fc_dst_len);
Signature · 1 line
2.11.0
From: David Ahern <[email protected]>
Date: Tue, 13 Feb 2018 20:32:04 -0800
Quoted 8 lines
IPv4 uses
set_lwt_redirectto set the lwtunnel redirect functions as needed. Move it tolwtunnel.haslwtunnel_set_redirectand change IPv6 to also use it.Signed-off-by David Ahern <[email protected]>---
v2
- removed extra check ondst->lwtstate
Applied, thanks David.