lkml.org 
[lkml]   [2000]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Linux 2.2 - BSD/OS 4.1 ARP incompatibility
Hi,

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:
[snip]
> > 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
[snip]
>
> 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
simple
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.

Best regards
Andrey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:38    [W:0.088 / U:5.828 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site