diff options
Diffstat (limited to 'net/ipv6/addrconf.c')
| -rw-r--r-- | net/ipv6/addrconf.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index a06c53c14d8..f012ebd87b4 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -656,7 +656,7 @@ ipv6_add_addr(struct inet6_dev *idev, const struct in6_addr *addr, int pfxlen,  	 * layer address of our nexhop router  	 */ -	if (dst_get_neighbour(&rt->dst) == NULL) +	if (dst_get_neighbour_raw(&rt->dst) == NULL)  		ifa->flags &= ~IFA_F_OPTIMISTIC;  	ifa->idev = idev; @@ -1481,6 +1481,8 @@ static void addrconf_join_anycast(struct inet6_ifaddr *ifp)  static void addrconf_leave_anycast(struct inet6_ifaddr *ifp)  {  	struct in6_addr addr; +	if (ifp->prefix_len == 127) /* RFC 6164 */ +		return;  	ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len);  	if (ipv6_addr_any(&addr))  		return;  |