Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 May 1995 08:19:48 -0400 (EDT)
From:      "House of Debuggin'" <wpaul@skynet.ctr.columbia.edu>
To:        julian@freefall.cdrom.com (Julian Elischer)
Cc:        hackers@FreeBSD.org
Subject:   Re: policy with sources imported..
Message-ID:  <199505021219.IAA04080@skynet.ctr.columbia.edu>
In-Reply-To: <199505020219.TAA15598@freefall.cdrom.com> from "Julian Elischer" at May 1, 95 07:19:52 pm

next in thread | previous in thread | raw e-mail | index | archive | help
They say this Julian Elischer person was kidding when he wrote:

[snip] 
> The current case in point for me is rarpd.. 
> now I guess it came with 4.4, but I can't find anywhere,

It didn't come with 4.4 (though it probably should have).

If you dig back into the usrsbin commit logs, you'll find out where
it came from. I originally found it packaged with the sources for
tcpdump 2.0 (which I had to hunt for long and hard). I found one
other rarpd implementation with the Xkernel source distribution,
but it was extremely crufty and designed to work with some special
kind of device interface that doesn't exist in FreeBSD (or SunOS for that 
matter -- makes me wonder why Seth put it there) so I discarded it.

I think what happened is that a copy of an old BPF distribution was 
bundled with this version of tcpdump, and the sample rarpd code came 
along for the ride. You won't find it in later tcpdump distributions.
The NetBSD rarpd is based upon the same code, only they made a few more 
cosmetic changes than I did. (I tried to keep the modifications needed
to make it work to a minimum.) The only real trick was getting the byte 
ordering right. Well, that and I had to write the ethers(3) functions
to support it. :)

The byte ordering nonsense leads be to believe that the program was
originally written on a big-endian machine, and the lack of support 
for variable length addresses in ifreq structures should give some
clue to what version of BSD it was written for. (Certainly earlier
than 4.4 -- I don't recall if 4.3 had this or not.) Oh, and the
old code relied on SIOCSARP and friends for setting entries in the
arp table; these ioctls have been deprecated in 4.4 (much to my dismay).

> a version of rarpd that doesn't need bpf..
> It seems to me that rarpd should be able to run using
> a raw ICMP socket, similar to ping, but
> I can't find a version that does that, yet there are enough
> machines out there that don't have bpf for me to believe that possibly
> there might have been a version of this same software that
> did it with raw sockets.. (It might even be possible with this code
> if the original docs were there..) 

Just cause they don't have BPF doesn't mean that aren't using packet
filtering. :)

The rarpd in SunOS 4.1.x does it with the Network Interface Tap (/dev/nit),
which is a cousin of BPF. I haven't inspected the one in Solaris, but it
probably works the same way, only with the SysV equivalent (I forget what
the stupid SysV packet filter is called, but there is one -- it's 
mentioned in the BPF man page and tcpdump documentation somewhere). IRIX 
probably does it much like Solaris does, and who knows how HPUX does it.

The problem is that RARP requests are link-level broadcasts. If I
understand it correctly (and I may not), they wouldn't normally
be passed up through the IP layers, even with a raw socket. So you
need something like BPF in this case. (It's even used to transmit
the raw response packet after a broadcast has been received.)

Since we're talking about this, it would be really nice if someone
could add BPF support to the Intel EtherExpress16 (ix) driver, since rarpd
won't work on that card without it. :) It doesn't register itself with
the devconf stuff either.
 
> This sort of thing hits me again and again.. 
> I want something that I know is in FreeBSD, but can't find any
> pointers as to where to look before that...
> 
> any ideas?
> am I just net-illiterate?
> julian

For the things I imported, I made it a point to say where everything
came from in the commit logs. Since there's a push to add README files
to the source tree, listing the packages' origins here too might not
be a bad idea. 

-Bill

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Bill Paul            (212) 854-6020 | System Manager
Work:         wpaul@ctr.columbia.edu | Center for Telecommunications Research
Home:  wpaul@skynet.ctr.columbia.edu | Columbia University, New York City
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Møøse Illuminati: ignore it and be confused, or join it and be confusing!
~~~~~~~~~ FreeBSD 2.1:  "We can kick your operating system's ass!" ~~~~~~~~~~



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199505021219.IAA04080>