Subject: Re: arping 127.0.0.1
To: None <tech-net@NetBSD.ORG>
From: Ignatios Souvatzis <ignatios@theory.cs.uni-bonn.de>
List: tech-net
Date: 07/02/1998 16:12:26
Hello,

I looked at a printout of the code yesterday.

Basically, the new code (1.44-1.46) fails to check that the address in the
interface address table really belongs to the interface where the ARP request
came in... thus we also answer rogue requests like, e.g., WHO-HAS 127.0.0.1.

The fix in 1.47 appends a quick check for the right interface. Unfortunately,
there are a log of situations where several interfaces share one address
("unnumbered" point-to-point interfaces, for example). 

In this case, the code might reject to service a request if the wrong-if
address record was found first. Bernd Ernesti has reported this: shortly 
(I guess one arp-timeout time) after bringing up PPP, his Ethernet stops
to work.

I changed this by stepping through the address lists for more matches, and
check for the interface in the loop.

Code is in netinet/if_arp.c 1.49 and netinet/in_var.h 1.27.

Regards,
	Ignatios