[IPv6]: Change IPv6 unspecified destination address to ::1 for raw and un-connected...
authorBrian Haley <Brian.Haley@hp.com>
Fri, 11 Apr 2008 04:38:24 +0000 (00:38 -0400)
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Sat, 12 Apr 2008 04:43:27 +0000 (13:43 +0900)
commit876c7f41961dc5172b03cbf2dca65f05003f28a0
tree3b5644d172edf0b9d2eecfc5f6c96d41b31c9a2a
parent6ac7eb0868ccc9a2c597d6fd0b1ea09dcdc396ed
[IPv6]: Change IPv6 unspecified destination address to ::1 for raw and un-connected sockets

This patch fixes a difference between IPv4 and IPv6 when sending packets
to the unspecified address (either 0.0.0.0 or ::) when using raw or
un-connected UDP sockets.  There are two cases where IPv6 either fails
to send anything, or sends with the destination address set to ::.  For
example:

--> ping -c1 0.0.0.0
PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.032 ms

--> ping6 -c1 ::
PING ::(::) 56 data bytes
ping: sendmsg: Invalid argument

Doing a sendto("0.0.0.0") reveals:

10:55:01.495090 IP localhost.32780 > localhost.7639: UDP, length 100

Doing a sendto("::") reveals:

10:56:13.262478 IP6 fe80::217:8ff:fe7d:4718.32779 > ::.7639: UDP, length 100

If you issue a connect() first in the UDP case, it will be sent to ::1,
similar to what happens with TCP.

This restores the BSD-ism.

Signed-off-by: Brian Haley <brian.haley@hp.com>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
net/ipv6/raw.c
net/ipv6/udp.c