table; arptab.c is really a hacked up version of arp.c that only
supports adding temporary entries. (This stuff is nasty -- I wish I
knew what was so wrong with SIOCSARP/SIOCGARP/etc... that made the
BSD developers decide to take it out.) The idea here is that the
client issuing the rarp is expected to be in the middle of booting
and would therefore be unable to answer arp queries from other machines
on the wire. Having rarpd stuff a temporary entry for the booting
host into the local arp table helps keep arp requests from going unanswered.
Also added ether_print() and ether_ntoa() to the ether_addr.c module.
Eventually I'll get ether_aton() and ether_hostton() written and
then this file can be dropped straight into libc. (Assuming no one
objects, of course. :)
be 486 chip sets that can't tolerate bursts > cache line size.
This should really made dependent on the particular buggy
chip sets, but for now we'll play safe ...
is a pain in ...wel.. trying to fix this
* from/to/via position indepenndant syntax
* "any" for 0/0 host address
* addf/addb default keyword in case you skip it..
* pass = accept new action, seems to be somewhat better
in particular cases
* on = via (as on ed0 instead of via ed0,loook at
reject tcp on ed0 from hacker )
Let "grey delete" be a function key (default is 0x7f)
Fix the xor cursor again..
Made the backspace key generate del as default
Made CTRL-space generate nul as default.
Feb. 10th snapshot. The keyboard probe in the bootblock seems to
have been singled out as the cause of these problems, so I've beefed it
up alittle. This pushes us right up to the edge of the size limit:
the second stage boot is now 7152 bytes in size, just 8 bytes under
the wire. On the other hand, the new probe now does almost exactly
what syscons does, so hopefully this will do the trick. It seems
to work properly on my hardware, but then so did the old probe.
compiler.
Be carefull about over usage of volatile, it really killed performance
in a few areas and there was a better place to make things volatile in
almost all cases. The driver can now receive at full speed without RNR
errors.
list or something since there are many contributors now but very few on
the order of folks like Bill or Satoshi or Jean-Marc.. This seems unfair.
Suggestions?
"Yes Virginia, there is a rarpd."
(Before anyone asks, this *not* the rarpd from NetBSD. It did come from
the same place as theirs, however.)
This is a port of the rarpd program included with the tcpdump-2.0
source code (which I finally unearthed after scrounging around
some of the darker corners of the Internet). It's as close to the
original as I could keep it except for the following changes:
- The original program was based on an older version of the Berkeley
Packet Filter which used different filter programming instructions.
Fortunately, an updated RARP packet filter is available right in the
BPF man page so this was easy to fix.
- The old code didn't know how to deal with variable length addresses
in ifreq buffers. This has been fixed.
- Some byte order weirdness had to be fixed. The sanity checks in
rarp_check() needed some htons()es, and the rarp_reply() function
needed to properly set the ether_type field in the ethernet header
to ETHERTYPE_REVARP before transmitting the packet, otherwise
the bytes in ether_type would wind up reversed. It is important to note
that using htons(ETHERTYPE_REVARP) will not work. This is odd, because
the NetBSD rarpd uses htons(ETHERTYPE_REVARP). (Praise be to tcpdump:
I would never have been able to track this silliness down without it.)
- The update_arptab() function has been castrated. It depends on
SIOCSARP which has been deprecated in 4.4BSD. The NetBSD people
don't seem to be using this function either. It wouldn't be too
hard to replace this with equivalent code from arp.c, but it
might not be necessary.
- I put together an ether_ntohost() support function that allows
both local (/etc/ethers) and NIS lookups. This stuff should go
in libc at some point, but nothing else seems to need it for now,
so it can wait a while.
As you may have guessed, you need to have the Berkeley Packet Filter in
your kernel in order to use this program. The good news is that together
with the recently added bootparamd, you can use finally use a FreeBSD
box to boot Sun boxes over the network. (This was my whole motivation
for getting this stuff to work: I have this one subnet that has a whole
bunch of Sun3 X-terminals on it with only two Sun4 workstations, both
of which are locked in peoples' offices. If those two machines crash
(and they do every so often) then none of the X-terms will boot. Now I
can use a spare PC that I have as a boot server. :)