mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-23 11:18:54 +00:00
119 lines
4.4 KiB
Plaintext
119 lines
4.4 KiB
Plaintext
.\" Copyright (c) 1983 Regents of the University of California.
|
|
.\" All rights reserved. The Berkeley software License Agreement
|
|
.\" specifies the terms and conditions for redistribution.
|
|
.\"
|
|
.\" @(#)arp.4p 6.2 (Berkeley) 5/15/86
|
|
.\"
|
|
.TH ARP 4P "May 15, 1986"
|
|
.UC 5
|
|
.SH NAME
|
|
arp \- Address Resolution Protocol
|
|
.SH SYNOPSIS
|
|
.B "pseudo-device ether"
|
|
.SH DESCRIPTION
|
|
ARP is a protocol used to dynamically map between DARPA Internet
|
|
and 10Mb/s Ethernet addresses. It is
|
|
used by all the 10Mb/s Ethernet interface drivers.
|
|
It is not specific to Internet protocols or to 10Mb/s Ethernet,
|
|
but this implementation currently supports only that combination.
|
|
.PP
|
|
ARP caches Internet-Ethernet address mappings. When an interface
|
|
requests a mapping for an address not in the cache, ARP queues the
|
|
message which requires the mapping and broadcasts
|
|
a message on the associated network requesting the address mapping.
|
|
If a response is provided, the new mapping is cached and any pending
|
|
message is transmitted.
|
|
ARP will queue
|
|
at most one packet while waiting for a mapping request to be responded to;
|
|
only the most recently ``transmitted'' packet is kept.
|
|
.PP
|
|
To facilitate communications with systems which do not use ARP,
|
|
.IR ioctl \^s
|
|
are provided to enter and delete entries in the Internet-to-Ethernet tables.
|
|
Usage:
|
|
.LP
|
|
.nf
|
|
.ft B
|
|
#include <sys/ioctl.h>
|
|
#include <sys/socket.h>
|
|
#include <net/if.h>
|
|
struct arpreq arpreq;
|
|
|
|
ioctl(s, SIOCSARP, (caddr_t)&arpreq);
|
|
ioctl(s, SIOCGARP, (caddr_t)&arpreq);
|
|
ioctl(s, SIOCDARP, (caddr_t)&arpreq);
|
|
.fi
|
|
.ft R
|
|
Each ioctl takes the same structure as an argument.
|
|
SIOCSARP sets an ARP entry, SIOCGARP gets an ARP entry, and SIOCDARP
|
|
deletes an ARP entry. These ioctls may be applied to any socket descriptor
|
|
.I s,
|
|
but only by the super-user.
|
|
The
|
|
.I arpreq
|
|
structure contains:
|
|
.LP
|
|
.RS
|
|
.ta \w'#define\ \ 'u +\w'ATF_USETRAILERS\ \ 'u +\w'0x08\ \ \ \ 'u
|
|
.nf
|
|
/*
|
|
* ARP ioctl request
|
|
*/
|
|
struct arpreq {
|
|
struct sockaddr arp_pa; /* protocol address */
|
|
struct sockaddr arp_ha; /* hardware address */
|
|
int arp_flags; /* flags */
|
|
};
|
|
/* arp_flags field values */
|
|
#define ATF_COM 0x02 /* completed entry (arp_ha valid) */
|
|
#define ATF_PERM 0x04 /* permanent entry */
|
|
#define ATF_PUBL 0x08 /* publish (respond for other host) */
|
|
#define ATF_USETRAILERS 0x10 /* send trailer packets to host */
|
|
.fi
|
|
.RE
|
|
.LP
|
|
The address family for the
|
|
.I arp_pa
|
|
sockaddr must be AF_INET; for the
|
|
.I arp_ha
|
|
sockaddr it must be AF_UNSPEC.
|
|
The only flag bits which may be written are ATF_PERM, ATF_PUBL
|
|
and ATF_USETRAILERS.
|
|
ATF_PERM causes the entry to be permanent if the ioctl call succeeds.
|
|
The peculiar nature of the ARP tables may cause the ioctl to fail if more
|
|
than 8 (permanent) Internet host addresses hash to the same slot.
|
|
ATF_PUBL specifies that the ARP code should respond to ARP requests for the
|
|
indicated host coming from other machines. This allows a host to act as an
|
|
``ARP server,'' which may be useful in convincing an ARP-only machine to talk
|
|
to a non-ARP machine.
|
|
.PP
|
|
ARP is also used to negotiate the use of trailer IP encapsulations;
|
|
trailers are an alternate encapsulation used to allow efficient packet
|
|
alignment for large packets despite variable-sized headers.
|
|
Hosts which wish to receive trailer encapsulations so indicate
|
|
by sending gratuitous ARP translation replies along with replies
|
|
to IP requests; they are also sent in reply to IP translation replies.
|
|
The negotiation is thus fully symmetrical, in that either or both hosts
|
|
may request trailers.
|
|
The ATF_USETRAILERS flag is used to record the receipt of such a reply,
|
|
and enables the transmission of trailer packets to that host.
|
|
.PP
|
|
ARP watches passively for hosts impersonating the local host (i.e. a host
|
|
which responds to an ARP mapping request for the local host's address).
|
|
.SH DIAGNOSTICS
|
|
.B "duplicate IP address!! sent from ethernet address: %x:%x:%x:%x:%x:%x."
|
|
ARP has discovered another host on the local network which responds to
|
|
mapping requests for its own Internet address.
|
|
.SH SEE ALSO
|
|
ec(4), de(4), il(4), inet(4F), arp(8C), ifconfig(8C)
|
|
.br
|
|
``An Ethernet Address Resolution Protocol,'' RFC826, Dave Plummer,
|
|
Network Information Center, SRI.
|
|
.br
|
|
``Trailer Encapsulations,'' RFC893, S.J. Leffler and M.J. Karels,
|
|
Network Information Center, SRI.
|
|
.SH BUGS
|
|
ARP packets on the Ethernet use only 42 bytes of data; however, the smallest
|
|
legal Ethernet packet is 60 bytes (not including CRC).
|
|
Some systems may not enforce the minimum packet size, others will.
|