Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
arp(7P)				   Protocols			       arp(7P)

       arp, ARP	- Address Resolution Protocol

       #include	<sys/fcntl.h>

       #include	<sys/socket.h>

       #include	<net/if_arp.h>

       #include	<netinet/in.h>

       s = socket(AF_INET, SOCK_DGRAM, 0);

       d = open	("/dev/arp", oflag);

       ARP  is	a  protocol  used to map dynamically between Internet Protocol
       (IP) and	10Mb/s Ethernet	addresses. It is used by all the 10Mb/s	Ether-
       net datalink providers  (interface drivers) and it can be used by other
       datalink	providers that support broadcast,  such	 as   FDDI  and	 Token
       Ring.  The  only	 network layer supported in this implementation	is the
       Internet	Protocol, although ARP is not specific to that protocol.

       ARP caches IP-to-Ethernet address mappings. When	an interface  requests
       a  mapping for an address not in	the cache, ARP queues the message that
       requires	the mapping and	broadcasts a message on	the associated network
       requesting  the	address	mapping. If a response is provided, ARP	caches
       the new mapping and transmits any pending message. ARP  will  queue  at
       most  four  packets  while waiting for a	response to a mapping request;
       it keeps	only the four most recently transmitted	packets.

       The STREAMS device /dev/arp is not a Transport Level Interface  ("TLI)"
       transport provider and may not be used with the TLI interface.

       To  facilitate communications with systems that do not use ARP, ioctl()
       requests	are provided to	enter and delete entries in the	IP-to-Ethernet

	      #include <sys/sockio.h>
	      #include <sys/socket.h>
	      #include <net/if.h>
	      #include <net/if_arp.h>
	      struct arpreq arpreq;
	      ioctl(s, SIOCSARP, (caddr_t)&arpreq);
	      ioctl(s, SIOCGARP, (caddr_t)&arpreq);
	      ioctl(s, SIOCDARP, (caddr_t)&arpreq);

       Each  ioctl() request takes the same structure as an argument. SIOCSARP
       sets an ARP entry, SIOCGARP gets	an ARP entry, and SIOCDARP deletes  an
       ARP entry. These	ioctl()	requests may be	applied	to any Internet	family
       socket descriptor s, or to a descriptor for the	ARP device,  but  only
       by the privileged user.

       The arpreq structure contains:

       * 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 0x2	     /*	completed entry	(arp_ha	valid) */
       #define ATF_PERM	0x4	     /*	permanent entry	*/
       #define ATF_PUBL	0x8	     /*	publish	(respond for other host) */
       #define ATF_USETRAILERS 0x10  /*	send trailer packets to	host */

       The  address  family  for  the arp_pa sockaddr must be AF_INET; for the
       arp_ha sockaddr,	it must	be AF_UNSPEC. The only flag bits that  may  be
       written are ATF_PUBL and	ATF_USETRAILERS. ATF_PERM makes	the entry per-
       manent if the ioctl() request succeeds. The peculiar nature of the  ARP
       tables  may  cause the ioctl() request to fail if too many permanent IP
       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.

       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 that
       wish to receive trailer encapsulations so indicate  by  sending	gratu-
       itous  ARP  translation	replies	 along	with  replies  to IP requests;
       trailer encapsulations  are  also  sent	in  reply  to  IP  translation
       replies.	The negotiation	is thus	fully symmetrical, in that either host
       or both may request trailers. The ATF_USETRAILERS flag records the  re-
       ceipt  of  such a reply and enables the transmission of trailer packets
       to that host.

       ARP watches passively for hosts impersonating the local host (that  is,
       a  host	which  responds	to an ARP mapping request for the local	host's

       arp(1M),	ifconfig(1M), if_tcp(7P), inet(7P)

       Leffler,	Sam, and Michael Karels, Trailer Encapsulations, RFC 893, Net-
       work  Information  Center,  SRI	International, Menlo Park, California,
       April 1984.

       Plummer,	Dave, An Ethernet Address Resolution Protocol -or-  Converting
       Network	Protocol  Addresses to 48.bit Ethernet Addresses for Transmis-
       sion on Ethernet	Hardware, RFC 826, Network Information Center, SRI In-
       ternational, Menlo Park,	California, November 1982.

       IP: Hardware address '%x:%x:%x:%x:%x:%x'

       trying to be our	address	'%d.%d.%d.%d'!
	     Duplicate	IP address. ARP	has discovered another host on the lo-
	     cal network which responds	to  mapping requests for the  Internet
	     address of	this system.

       IP: Proxy ARP problem?  Hardware	address	'%x:%x:%x:%x:%x:%x'

       thinks it is '%d.%d.%d.%d'
	     This  message  will  appear if  arp(1M) has been used to create a
	     published entry, and some other host on the   local  network  re-
	     sponds to mapping requests	for the	published ARPentry.

SunOS 5.9			  23 Aug 1994			       arp(7P)


Want to link to this manual page? Use this URL:

home | help