netdev
[Top] [All Lists]

Re: [2.4 PATCH] bugfix: ARP respond on all devices

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: [2.4 PATCH] bugfix: ARP respond on all devices
From: Stephan von Krawczynski <skraw@xxxxxxxxxx>
Date: Tue, 19 Aug 2003 19:10:10 +0200
Cc: richard@xxxxxxxxxxxxxxxxx, willy@xxxxxxxxx, alan@xxxxxxxxxxxxxxxxxxx, carlosev@xxxxxxxxxxxx, lamont@xxxxxxxxxxxxxxxx, davidsen@xxxxxxx, bloemsaa@xxxxxxxxx, marcelo@xxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, linux-net@xxxxxxxxxxxxxxx, layes@xxxxxxxxx, torvalds@xxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
In-reply-to: <20030819095105.2cb9acc1.davem@redhat.com>
Organization: ith Kommunikationstechnik GmbH
References: <353568DCBAE06148B70767C1B1A93E625EAB5B@post.pc.aspectgroup.co.uk> <20030819095105.2cb9acc1.davem@redhat.com>
Sender: netdev-bounce@xxxxxxxxxxx
On Tue, 19 Aug 2003 09:51:05 -0700
"David S. Miller" <davem@xxxxxxxxxx> wrote:

> On Tue, 19 Aug 2003 17:54:26 +0100
> Richard Underwood <richard@xxxxxxxxxxxxxxxxx> wrote:
> 
> >     When a HOST sends out an ARP request, it's NOT associated with a
> > single connection, it's associated with the host. Why should it pick a
> > "random" IP number to send as the source address?
> 
> It's not "random", it is using the IP address it intends
> to use as the source in packets it will output once the
> ARP completes.
> 
> In fact, if you look at the code in arp_solicit(), the source address
> is coming directly from the packet we are trying to output.

Well, then you have a problem, at least with RFC-985 as quoted in my other
email.
If your host has two interfaces on two different pyhsical nets and host A from
net A shall be contacted by a service bound to your interface on net B you will
obviously send an arp request with a source ip from wrong subnet.
I did not read the code, I take your code explanation as true, of course.
It is very likely you will not receive a valid answer in this case:

<quote RFC-985>
An ARP request is discarded if the source IP address is not in the same subnet.
</quote>

Regards,
Stephan


<Prev in Thread] Current Thread [Next in Thread>