From: Julian Anastasov Date: Wed, 18 Jul 2012 21:35:03 +0000 (+0000) Subject: ipv4: fix address selection in fib_compute_spec_dst X-Git-Tag: upstream/snapshot3+hdmi~6997^2~86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0cc535a29916c6a0e6e6af0f3d42c2fe3b0b145d;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git ipv4: fix address selection in fib_compute_spec_dst ip_options_compile can be called for forwarded packets, make sure the specific-destionation address is a local one as specified in RFC 1812, 4.2.2.2 Addresses in Options Signed-off-by: Julian Anastasov Signed-off-by: David S. Miller --- diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 7a31194..b832036 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -206,7 +206,8 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb) int scope; rt = skb_rtable(skb); - if (!(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) + if ((rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST | RTCF_LOCAL)) == + RTCF_LOCAL) return ip_hdr(skb)->daddr; in_dev = __in_dev_get_rcu(dev);