Subject: bin/4531: rarpd does not set the arp entry
To: None <gnats-bugs@gnats.netbsd.org>
From: None <jarle@runit.sintef.no>
List: netbsd-bugs
Date: 11/18/1997 11:18:39
>Number:         4531
>Category:       bin
>Synopsis:       rarpd does not set the arp entry
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    bin-bug-people (Utility Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Nov 18 02:20:03 1997
>Last-Modified:
>Originator:     Jarle Greipsland
>Organization:
SINTEF/RUNIT
>Release:        1997-11-16
>Environment:
	
System: NetBSD natteravn.runit.sintef.no 1.3_ALPHA NetBSD 1.3_ALPHA (NATTERAVN) #6: Mon Nov 17 22:53:50 MET 1997 root@natteravn.runit.sintef.no:/usr/src/sys/arch/i386/compile/NATTERAVN i386


>Description:

It seems that the rarp daemon no longer enters the <IP, mac-addr> pair into
the ARP cache after a successful lookup of a mac-addr in /etc/ethers.  This
causes problems for some diskless setups.  Specifically, a Sun SLC could
not netboot off a Sparcstation 10 (NetBSD-1.2G).  The symptoms we saw was
that the SLC got it's IP address from the rarpd, but when it later on tried
to query the bootparam daemon (on the SS10) for its root directory the
SS10 started to transmit ARP requests for the SLC's IP address.  The SLC,
being unable to answer the ARP requests while in the boot load phase,
repeatedly requested the bootparam information, and the SS10 repeatedly
requested the ARP information for the SLC's IP address.

Prior to the new ARP framework this ARP table update was just an ioctl in
the rarpd program.  This code is currently commented out (#if 0 --
#endif).

>How-To-Repeat:
Netboot a Sun SLC (probably other clients as well) from another NetBSD
system where no entry for the client exists in the server's ARP table.  Run
tcpdump on the network and monitor the traffic.

>Fix:
Fix the rarpd so that it will again enter the proper ARP entries into the
ARP table.  The code to do this already exist in the arp program and could
probably be copied from there.

However, since the need to prime the ARP cache also exist in bootpd (and
there it's currently implemented using the /usr/sbin/arp program) one might
consider moving the necessary code into e.g. libutil, and then share the
implementation between arp, rarpd and bootpd (maybe more?).

					-jarle
-- 
"Science can amuse and fascinate us all, but it is engineering that
 changes the world."		-- Isaac Asimov
>Audit-Trail:
>Unformatted: