Subject: "arp -s ... pub" hangs the ARP subsystem?
To: None <tech-net@netbsd.org>
From: Todd Vierling <tv@pobox.com>
List: tech-net
Date: 04/28/1999 10:51:00
I have an odd network which I have a need to implement via proxy-ARP.  It's
something similar to this:

 outside world         ________        crossover Ether    __________
----------------> de0 | NetBSD | ep0 <-----------------> | otherbox |
                       ~~~~~~~~                           ~~~~~~~~~~

On the NetBSD box (alpha architecture, 1.4_BETA binary and kernel set),
ip.forwarding is on by sysctl (GATEWAY is not compiled into the kernel, as
this isn't for production yet).

de0: A.B.C.X/27 (alias A.B.C.Y/27)
ep0: 10.2.1.1/30

On otherbox, the Ethernet is set to 10.2.1.2/30 with an alias of A.B.C.Z/32
(255.255.255.255, single-address alias).  When going into production, the
primary address and alias will swap roles (so that the A.B.C.Z address is
the default source address--or do we have a sysctl for that now?).

I have added a route to otherbox's A.B.C.Z address on the NetBSD machine,
which works fine from within that machine.  Now I need to tell the router on
the outside how to reach otherbox through the NetBSD box.

Take it as given that RIP is useless on this ethernet segment (the router
isn't listening for routing info), and I have absolutely zero authority to
have a route added to the routing table.  So, I have to proxy ARP for the
address so that the NetBSD machine, from the router's perspective, _is_
A.B.C.Z.

If I do:

    arp -s A.B.C.Z et:he:ra:dd:re:ss pub

(where that is the Ethernet address of de0), for the first attempt I get the
error:

    arp: writing to routing socket: File exists

and the entry is NOT added to the ARP table as revealed by "arp -an".  The
second time I attempt it, the entry is added to the table ... but now
the NetBSD machine has stopped responding to any ARP requests at all.  No
requests for de0's addresses are answered, nor are those for A.B.C.Z.  At
this point, even:

    arp -s A.B.C.X et:he:ra:dd:re:ss pub

doesn't bring back ARP for the de0 address.

Ideas?  Reproducible elsewhere?

-- 
-- Todd Vierling (Personal tv@pobox.com; Bus. todd_vierling@xn.xerox.com)