Re: ipv4-mapped ipv4 connect() for UDP broken in test10
From: YOSHIFUJI Hideaki / 吉藤英明 <hidden>
Date: 2003-11-26 10:04:00
Also in:
lkml
In article [off-list ref] (at Wed, 26 Nov 2003 09:17:45 +0100), Felix von Leitner [off-list ref] says:
Some digging reveals that djbdns does this (with scope_id 0): socket(PF_INET6,...) bind socket to :: connect() socket to IP of peer (in this case, 210.81.13.179) send() dns query at this point, the query is not sent over ppp0 as it should, but it is sent to lo. Not only that, but the queries are _received_ by the same djbdns (with servfail), although the destination IP is as said above 210.81.13.179 and none of my local IPs: 10.0.0.6, 127.0.0.1, or 217.88.123.45.
Please apply this patch. (But I'm not sure this fix your problem...) ===== net/ipv6/udp.c 1.54 vs edited =====
--- 1.54/net/ipv6/udp.c Tue Nov 18 11:41:56 2003
+++ edited/net/ipv6/udp.c Wed Nov 26 19:01:15 2003@@ -825,7 +825,7 @@ struct sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = sin6 ? sin6->sin6_port : inet->dport; - sin.sin_addr.s_addr = daddr->s6_addr[3]; + sin.sin_addr.s_addr = daddr->s6_addr32[3]; msg->msg_name = &sin; msg->msg_namelen = sizeof(sin); do_udp_sendmsg:
--
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@linux-ipv6.org>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA