diff options
Diffstat (limited to 'net/ipv6/raw.c')
| -rw-r--r-- | net/ipv6/raw.c | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index ca4700cb26c4..fdbada1569a3 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -295,7 +295,8 @@ static int rawv6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)  		 * unspecified and mapped address have a v4 equivalent.  		 */  		v4addr = LOOPBACK4_IPV6; -		if (!(addr_type & IPV6_ADDR_MULTICAST))	{ +		if (!(addr_type & IPV6_ADDR_MULTICAST) && +		    !sock_net(sk)->ipv6.sysctl.ip_nonlocal_bind) {  			err = -EADDRNOTAVAIL;  			if (!ipv6_chk_addr(sock_net(sk), &addr->sin6_addr,  					   dev, 0)) {  |