Subject: arpresolve: can't allocate llinfo
To: None <current-users@netbsd.org>
From: Simon J. Gerraty <sjg@crufty.net>
List: current-users
Date: 06/13/2003 11:20:06
I had fun the other night... 

My DSL service croaked and was down long enough that my local g/w:

NetBSD gate.crufty.net 1.6 NetBSD 1.6 (GATE) #3: Wed Sep 25 15:10:12 PDT 2002     root@too.crufty.net:/l0/sys/compile/GATE sparc

had timed out the arp entry for my default router by the time the
service came back up.  All looked ok, except that I could not ping
anything. I tried ping'ing the g/w and got

ping: sendto: Host is down

ping'ing anything else got me:

ping: sendto: No route to host

routing table looked fine.  The problem was that I had no ARP table
entry for the g/w.   Flusing the arp table, didn't help.  

Intestingly if I ping'd the g/w, tcpdump showed the packets going out
the interface - yet its an ethernet and I have no arp entry - so where
did those packets think they were going?  And of course I couldn't
recall how to get tcpdump to show ethernet headers...

I'm sure it didn't help that I was getting:

Jun 11 20:46:41 gate /netbsd: arpresolve: can't allocate llinfo on le1 for A.B.C.D

I started looking through netinet/if_arp,c to see why that might
happen and what I could tweak to sort it out.

In the end, I resolved the issue by rebooting gate, and power cycling
the DSL modem at the same time.  I got an arp entry for the remote g/w
and life continued....

But why the arpresolve: problems?  This is a small net (I never see
more than a dozen arp table entries) gate has 64M and generally copes
fine as a gateway (options GATEWAY defined).  What can I tweak to
reduce the likelyhood of this happening again?

Why didn't gate send an ARP request even after the arp table was
flushed (I couldn't see any sign of a request with tcpdump)?

Weird...
--sjg