From: Maciej Żenczykowski Date: Mon, 7 Nov 2011 14:57:22 +0000 (+0000) Subject: net: make ipv6 PKTINFO honour freebind X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2563fa595447bba6a73e6c58c4bbf11ac0f28931;p=linux-beck.git net: make ipv6 PKTINFO honour freebind This just makes it possible to spoof source IPv6 address on a socket without having to create and bind a new socket for every source IP we wish to spoof. Signed-off-by: Maciej Żenczykowski Signed-off-by: David S. Miller --- diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index e2480691c220..83037af4fa7b 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c @@ -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;