backoff mechanism we use for receiving the response. This is particularly
helpful when we have transient errors on transmit, e.g. a very busy
network or router.
Use <net/if_ether.h> for ethernet specific definitions, and insert private
definitions for ARP if needed. (The new ARP macros in <net/if_arp.h> are
not used because they create larger code, and we really don't need more
than ethernet/ip support here.)
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.
For the detailed change history, look at the commit log entries for
the is-newarp branch.
(like the alpha). Biggest problem: IP headers were overlayed with
structure which included pointers, and which therefore didn't overlay
properly on 64-bit machines. Solution: instead of threading pointers
through IP header overlays, add a "queue element" structure to do
the threading, and point it at the ip headers.
(PR#1404). Things to be noted:
- all IP addresses are now `struct in_addr's.
- the function rarp_getipaddress() no longer return `myip'; in stead
it returns -1 on failure (errno set), 0 on success. `myip' is set
as a size-effect.
a) check against `my' ethernet or broadcast addresses done in
ether.c
b) changed interface to readether() to provide ethertype info
c) respond to arp requests when appropriate.
First two are clean-up. Last fixes hp300 and presumably mvme68k netboot
code.
* Fix some misused types.
* Encapsulate the protocols better.
* Rearrange the RPC stuff to work more like the kernel. (Needs more work.)
* Remove a bunch of extra hair when reading a file over NFS.
* Use RPCAUTH_UNIX when talking to the NFS server.