Subject: arpresolve: can't allocate llinfo
To: None <>
From: Jun Xie <>
List: tech-net
Date: 02/17/1999 19:53:44
I've noticed that netbsd could create a looped route on routing table and
that trying to delete the route causes the kernel to crash.
The version I'm using is "NetBSD 1.3 (GENERIC) #0: Tue Dec 30 18:26:29 EST 1997".
I don't know if the latest version fixes it.

Host A (, host B (, and router C ( are
connected directly on ethernet (netmask is 0xff000000).

For the testing purpose, I added a route on (netbsd):
# route add
add host gateway
# netstat -nr
Destination        Gateway            Flags     Refs     Use    Mtu  Interface
10                 link#1             UC          0        0      -  le0          UGHS        0        0      -  le0          link#1             UHL         1        0      -  le0

Ping'ing from elicits an ICMP redirect from,
and the routing table changes to
Destination        Gateway            Flags     Refs     Use    Mtu  Interface
10                 link#1             UC          0        0      -  le0          UGHMS       1        1      -  le0          00:c0:93:01:a3:e2  UHL         0        0      -  le0

Now is unreachable from If I try to ping, the
message "arpresolve: can't allocate llinfo" is logged. Running
"route delete" crashes the kernel (stopped at _rt_msg2).

The reason is that when the ICMP redirect is received rtredirect() calls
rt_setgate() to change the rt_gateway field of the routing table entry to
the new gateway address, which happens to be the same as its rt_key and
the rt_gwroute field is set to point to the entry itself.

Should the redirect message be ignored, the current entry be modified
to be a clone of the entry "10 link#1", or somehting else?

By the way, the above operations work perfect with 4.3BSD stack.

Jun Xie