|
@@ -343,7 +343,8 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
|
*/
|
|
*/
|
|
v4addr = LOOPBACK4_IPV6;
|
|
v4addr = LOOPBACK4_IPV6;
|
|
if (!(addr_type & IPV6_ADDR_MULTICAST)) {
|
|
if (!(addr_type & IPV6_ADDR_MULTICAST)) {
|
|
- if (!ipv6_chk_addr(net, &addr->sin6_addr,
|
|
|
|
|
|
+ if (!inet->transparent &&
|
|
|
|
+ !ipv6_chk_addr(net, &addr->sin6_addr,
|
|
dev, 0)) {
|
|
dev, 0)) {
|
|
err = -EADDRNOTAVAIL;
|
|
err = -EADDRNOTAVAIL;
|
|
goto out_unlock;
|
|
goto out_unlock;
|