Shan Wei wrote: > When specifying the outgoing interface with sendmsg, if the ipi6_addr is > the unspecified address and the ipi6_ifindex is the not-exist interface, > it should be fail and the errno should be set ENODEV. > Actually, it does well(sendmsg returns on success ), because the kernel > don't check the interface。 This patch changes this code path to be different than most others that completely ignore the device for the unspecified address - for example inet6_bind() and rawv6_bind(). Those paths only care about the device for a link-local address, so I don't think this patch is correct. In the current git tree, this :: address is going to turn-into ::1, so the ifindex is irrelevant, the packet will be looped-back. Older kernels could transmit the packet on the wire using the default route. Can you elaborate on the problem you were seeing? I did notice a slight problem where if fl->oif is set in the caller (for example via SO_BINDTODEVICE), it's ignored in datagram_send_ctl() if src_info->ipi6_ifindex is zero, attached patch fixes that. -Brian Signed-off-by: Brian Haley ---