X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv6%2Fudp.c;h=1fd784f3e2ecf4dba2f48dd6ff134172b80df0d5;hb=44473d991332053eb3fea1e08f8a6ee2c6fb409c;hp=30ef7dc5d403fe7080fd06e7f8ec2a81fc2e8e94;hpb=17eed249539a7b756ca65a5cb0940abc48ef553b;p=linux-2.6 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 30ef7dc5d4..1fd784f3e2 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -752,7 +752,10 @@ do_udp_sendmsg: opt = ipv6_fixup_options(&opt_space, opt); fl.proto = sk->sk_protocol; - ipv6_addr_copy(&fl.fl6_dst, daddr); + if (!ipv6_addr_any(daddr)) + ipv6_addr_copy(&fl.fl6_dst, daddr); + else + fl.fl6_dst.s6_addr[15] = 0x1; /* :: means loopback (BSD'ism) */ if (ipv6_addr_any(&fl.fl6_src) && !ipv6_addr_any(&np->saddr)) ipv6_addr_copy(&fl.fl6_src, &np->saddr); fl.fl_ip_sport = inet->sport;