|
@@ -654,7 +654,7 @@ int datagram_send_ctl(struct net *net, struct sock *sk,
|
|
|
|
|
|
if (addr_type != IPV6_ADDR_ANY) {
|
|
|
int strict = __ipv6_addr_src_scope(addr_type) <= IPV6_ADDR_SCOPE_LINKLOCAL;
|
|
|
- if (!inet_sk(sk)->transparent &&
|
|
|
+ if (!(inet_sk(sk)->freebind || inet_sk(sk)->transparent) &&
|
|
|
!ipv6_chk_addr(net, &src_info->ipi6_addr,
|
|
|
strict ? dev : NULL, 0))
|
|
|
err = -EINVAL;
|