Move no_route code into helper. Add call to helper at jump sites and remove goto label.
Signed-off-by: David Ahern <d...@cumulusnetworks.com> --- net/ipv4/route.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 340246414545..2709ee6e292e 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -1737,6 +1737,22 @@ static int ip_route_local_input(struct sk_buff *skb, return err; } +static int ip_input_no_route(struct sk_buff *skb, + struct fib_result *res, + struct net *net, + struct in_device *in_dev, + unsigned int flags, + u32 itag, int err) +{ + RT_CACHE_STAT_INC(in_no_route); + + res->type = RTN_UNREACHABLE; + res->fi = NULL; + res->table = NULL; + + return ip_route_local_input(skb, res, net, in_dev, flags, itag, err); +} + /* * NOTE. We drop all the packets that has local source * addresses, because every properly looped back packet @@ -1824,7 +1840,10 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr, if (err != 0) { if (!IN_DEV_FORWARD(in_dev)) err = -EHOSTUNREACH; - goto no_route; + + err = ip_input_no_route(skb, &res, net, in_dev, + flags, itag, err); + goto out; } if (res.type == RTN_BROADCAST) @@ -1843,8 +1862,9 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr, } if (!IN_DEV_FORWARD(in_dev)) { - err = -EHOSTUNREACH; - goto no_route; + err = ip_input_no_route(skb, &res, net, in_dev, + flags, itag, -EHOSTUNREACH); + goto out; } if (res.type != RTN_UNICAST) { err = -EINVAL; @@ -1875,16 +1895,6 @@ out: return err; err = ip_route_local_input(skb, &res, net, in_dev, flags, itag, err); goto out; - -no_route: - RT_CACHE_STAT_INC(in_no_route); - res.type = RTN_UNREACHABLE; - res.fi = NULL; - res.table = NULL; - - err = ip_route_local_input(skb, &res, net, in_dev, - flags, itag, err); - goto out; } int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr, -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html