Subject: Re: Ping Is Broken

From: Brian Haley <[email-masked]>
Date: Mon, 12 Oct 2009 19:30:26 -0400

Jarek Poplawski wrote:
> Brian Haley wrote, On 10/12/2009 10:36 PM:
> 
>> In this case ping is doing an SO_BINDTODEVICE to eth0, so the kernel is going
>> to force the packets out of it, even if it isn't the "correct" interface.  If
>> you ran tcpdump you'd probably see an ARP resolution failure, or an ICMP from
>> a gateway.
> 
> BTW, SO_BINDTODEVICE is used only to acquire a source address, not the real
> connection (unless I miss something).

No, SO_BINDTODEVICE affects routing, as well as incoming packets - it's in macros
like INET_MATCH(), from what I've seen it restricts a socket to only use the device
specified, irregardless of the source address you're using.  For example, you can
bind to 127.0.0.1 and send packets out eth0 if sk_bound_dev_if is set to it if I
remember correctly.

-Brian