freebsd-nq/usr.sbin/rarpd/rarpd.8

146 lines
3.8 KiB
Groff
Raw Normal View History

1999-08-28 01:35:59 +00:00
.\" @(#) $FreeBSD$ (LBL)
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
.\"
.\" Copyright (c) 1990, 1991, 1993 The Regents of the University of
.\" California. All rights reserved.
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that: (1) source code distributions
.\" retain the above copyright notice and this paragraph in its entirety, (2)
.\" distributions including binary code include the above copyright notice and
.\" this paragraph in its entirety in the documentation or other materials
.\" provided with the distribution, and (3) all advertising materials mentioning
.\" features or use of this software display the following acknowledgement:
.\" ``This product includes software developed by the University of California,
.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
.\" the University nor the names of its contributors may be used to endorse
.\" or promote products derived from this software without specific prior
.\" written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.Dd November 16, 2001
1997-10-13 11:03:36 +00:00
.Dt RARPD 8
.Os
.Sh NAME
.Nm rarpd
.Nd reverse ARP daemon
.Sh SYNOPSIS
.Nm
.Op Fl adfsv
.Op Fl t Ar directory
1997-10-13 11:03:36 +00:00
.Op Ar interface
.Sh DESCRIPTION
.Nm
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
services Reverse ARP requests on the Ethernet connected to
1997-10-13 11:03:36 +00:00
.Ar interface .
Upon receiving a request,
1997-10-13 11:03:36 +00:00
.Nm
maps the target hardware address to an IP address via its name, which
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
must be present in both the
1997-10-13 11:03:36 +00:00
.Xr ethers 5
and
1997-10-13 11:03:36 +00:00
.Xr hosts 5
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
databases.
If a host does not exist in both databases, the translation cannot
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
proceed and a reply will not be sent.
2000-12-27 15:30:30 +00:00
.Pp
By default, a request is honored only if the server
1997-10-13 11:03:36 +00:00
(i.e., the host that
.Nm
is running on)
can "boot" the target; that is, a file or directory matching the glob
1997-10-13 11:03:36 +00:00
.Pa /tftpboot/\fIipaddr\fP*
exists, where
.Em ipaddr
is the target IP address in hex.
For example, the IP address 204.216.27.18 will be replied to if any of
1997-10-13 11:03:36 +00:00
.Pa /tftpboot/CCD81B12 ,
.Pa /tftpboot/CCD81B12.SUN3 ,
or
.Pa /tftpboot/CCD81B12-boot
exist.
This requirement can be overridden with the
1997-10-13 11:03:36 +00:00
.Fl s
flag (see below).
2000-12-27 15:30:30 +00:00
.Pp
In normal operation,
1997-10-13 11:03:36 +00:00
.Nm
forks a copy of itself and runs in the background.
Anomalies and errors are reported via
1997-10-13 11:03:36 +00:00
.Xr syslog 3 .
.Pp
1997-10-13 11:03:36 +00:00
The following options are available:
.Bl -tag -width indent
.It Fl a
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
Listen on all the Ethernets attached to the system.
1997-10-13 11:03:36 +00:00
If
.Fl a
is omitted, an interface must be specified.
.It Fl d
If
.Fl f
is also specified,
.Nm
logs messages to
.Em stdout
and
.Em stderr
instead of via
.Xr syslog 3 .
1997-10-13 11:03:36 +00:00
.It Fl f
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
Run in the foreground.
1997-10-13 11:03:36 +00:00
.It Fl s
Supply a response to any RARP request for which an ethernet to IP address
mapping exists; do not depend on the existence of
1997-10-13 11:03:36 +00:00
.Pa /tftpboot/\fIipaddr\fP* .
.It Fl t
Supply an alternate tftp root directory to
.Pa /tftpboot ,
similar to the
.Fl s
option of
.Xr tftpd 8 .
This permits
.Nm
to selectively respond to RARP requests, but use an alternate directory
for IP checking.
1997-10-13 11:03:36 +00:00
.It Fl v
Enable verbose syslogging.
1997-10-13 11:03:36 +00:00
.El
.Sh FILES
.Bl -tag -width /etc/ethers -compact
.It Pa /etc/ethers
.It Pa /etc/hosts
.It Pa /tftpboot
.El
.Sh SEE ALSO
.Xr bpf 4
.Rs
.%A "Finlayson, R."
.%A "Mann, T."
.%A "Mogul, J.C."
.%A "Theimer, M."
.%T "RFC 903: Reverse Address Resolution Protocol"
.%D "June 1984"
.%O "4 p"
.Re
1997-10-13 11:03:36 +00:00
.Sh AUTHORS
.An -nosplit
1997-10-13 11:03:36 +00:00
.An Craig Leres Aq leres@ee.lbl.gov
and
.An Steven McCanne Aq mccanne@ee.lbl.gov .
Obtained from: An old BPF release packaged with the tcpdump-2.0 source code. "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. :)
1995-03-02 06:41:40 +00:00
Lawrence Berkeley Laboratory, University of California, Berkeley, CA.
1997-10-13 11:03:36 +00:00
.Sh BUGS
.Nm
1997-10-13 11:03:36 +00:00
can depend on the DNS to resolve the name discovered from
.Pa /etc/ethers .
If this name is not in the DNS but is in
.Pa /etc/hosts ,
the DNS lookup can cause a delayed RARP response, so in this situation
it is recommended to configure
.Xr nsswitch.conf 5
1997-10-13 11:03:36 +00:00
to read
.Pa /etc/hosts
first.