On Sat, Sep 02, 2000 at 01:05:02PM +0200, Andi Kleen wrote:
> On Sat, Sep 02, 2000 at 12:28:00PM +1100, David Luyer wrote:
> > Now when the Linux box a.b.c.1 (with secondary address d.e.f.1) wants to
> > talk to the BSD/OS system d.e.f.2 it does
> > a.b.c.1 arp who-has d.e.f.2
> Strictly it is your routing which is wrong, because you're giving different
> routing information to BSDI and Linux.
> To work around it you can set an explicit source address on the outgoing
> routes using ip route replace d.e.f/24 src a.b.c.NUM dev DEV
Andi, there may be two reasons of this behavior:
1. skb that triggered ARP request had a.b.c.1 source, either because
a) the socket had been bound to that address, or
b) preferred source in the routing table is wrong;
2. the request source address was selected basing on interface address list,
and produced a wrong result.
I would say that 1b case is the least likely for me.
If the reason of this behavior is 1a or 2, it's a kernel bug in my opinion.
David, could you try to replace the first `if' statement in arp_solicit() by
saddr = inet_select_addr(dev, target, RT_SCOPE_LINK);
It doesn't harm in any case, and will allow to distinguish cases #1 and #2.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Sep 07 2000 - 21:00:16 EST