Commit 0cc535a2 authored by Julian Anastasov's avatar Julian Anastasov Committed by David S. Miller

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: default avatarJulian Anastasov <ja@ssi.bg>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6255e5ea
...@@ -206,7 +206,8 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb) ...@@ -206,7 +206,8 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
int scope; int scope;
rt = skb_rtable(skb); 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; return ip_hdr(skb)->daddr;
in_dev = __in_dev_get_rcu(dev); in_dev = __in_dev_get_rcu(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment