ipv6: Remove external dependency on rt6i_gateway and RTF_ANYCAST
When creating a RTF_CACHE route, RTF_ANYCAST is set based on rt6i_dst. Also, rt6i_gateway is always set to the nexthop while the nexthop could be a gateway or the rt6i_dst.addr. After removing the rt6i_dst and rt6i_src dependency in the last patch, we also need to stop the caller from depending on rt6i_gateway and RTF_ANYCAST. Signed-off-by: Martin KaFai Lau <kafai@fb.com> Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> Cc: Steffen Klassert <steffen.klassert@secunet.com> Cc: Julian Anastasov <ja@ssi.bg> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
fd0273d793
commit
2647a9b070
@@ -337,7 +337,7 @@ static struct dst_entry *icmpv6_route_lookup(struct net *net,
|
||||
* We won't send icmp if the destination is known
|
||||
* anycast.
|
||||
*/
|
||||
if (((struct rt6_info *)dst)->rt6i_flags & RTF_ANYCAST) {
|
||||
if (ipv6_anycast_destination(dst, &fl6->daddr)) {
|
||||
net_dbg_ratelimited("icmp6_send: acast source\n");
|
||||
dst_release(dst);
|
||||
return ERR_PTR(-EINVAL);
|
||||
@@ -564,7 +564,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
|
||||
|
||||
if (!ipv6_unicast_destination(skb) &&
|
||||
!(net->ipv6.sysctl.anycast_src_echo_reply &&
|
||||
ipv6_anycast_destination(skb)))
|
||||
ipv6_anycast_destination(skb_dst(skb), saddr)))
|
||||
saddr = NULL;
|
||||
|
||||
memcpy(&tmp_hdr, icmph, sizeof(tmp_hdr));
|
||||
|
Reference in New Issue
Block a user