Re: ipv4-mapped ipv4 connect() for UDP broken in test10

From: YOSHIFUJI Hideaki / 吉藤英明
Date: Wed Nov 26 2003 - 05:04:50 EST


In article <20031126081745.GA31415@xxxxxxxxxxx> (at Wed, 26 Nov 2003 09:17:45 +0100), Felix von Leitner <felix-kernel@xxxxxxx> 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@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/