From: Maciej Żenczykowski <zenczykow...@gmail.com> Date: Tue, 26 Sep 2017 21:32:42 -0700
> From: Maciej Żenczykowski <m...@google.com> > > So far we've been relying on sockopt(SOL_IP, IP_FREEBIND) being usable > even on IPv6 sockets. > > However, it turns out it is perfectly reasonable to want to set freebind > on an AF_INET6 SOCK_RAW socket - but there is no way to set any SOL_IP > socket option on such a socket (they're all blindly errored out). > > One use case for this is to allow spoofing src ip on a raw socket > via sendmsg cmsg. > > Tested: > built, and booted > # python > >>> import socket > >>> SOL_IP = socket.SOL_IP > >>> SOL_IPV6 = socket.IPPROTO_IPV6 > >>> IP_FREEBIND = 15 > >>> IPV6_FREEBIND = 78 > >>> s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, 0) > >>> s.getsockopt(SOL_IP, IP_FREEBIND) > 0 > >>> s.getsockopt(SOL_IPV6, IPV6_FREEBIND) > 0 > >>> s.setsockopt(SOL_IPV6, IPV6_FREEBIND, 1) > >>> s.getsockopt(SOL_IP, IP_FREEBIND) > 1 > >>> s.getsockopt(SOL_IPV6, IPV6_FREEBIND) > 1 > > Signed-off-by: Maciej Żenczykowski <m...@google.com> Applied to net-next, thanks.