Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > A


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


arp — Address Resolution Protocol


ARP is a protocol used to dynamically map between DARPA Internet and hardware station addresses. It is used by all LAN drivers.

ARP caches Internet-to-hardware station 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 the ether encapsulation method has been enabled for the interface. If a response is provided, the new mapping is cached and any pending message is transmitted. ARP queues at most one packet while waiting for a mapping request to be responded to; only the most recently ``transmitted'' packet is kept.

To facilitate communications with systems that do not use ARP, ioctl calls are provided to enter and delete entries in the Internet-to-hardware station address tables.

Application Usage:

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

Each ioctl call 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 calls can be applied to any socket descriptor s, but only by the super-user. The arpreq structure contains:

/* * ARP ioctl request */ struct arpreq { int32_t ifindex; int32_t arp_flags; /* flags */ int32_t arp_hw_addr_len; /* hardware address length */ struct sockaddr arp_pa; /* protocol address */ struct sockaddr arp_ha; /* hardware address */ u_char arp_pad[242]; /* buffer for link specific info. */ }; /* arp_flags field values */ #define ATF_COM 0x02 /* ARP on ether */ #define ATF_PERM 0x04 /* permanent entry */ #define ATF_PUBL 0x08 /* publish entry */ #define ATF_SNAPFDDI 0x200 /* SNAP - FDDI */ #define ATF_SNAP8025 0x400 /* SNAP - 8025 */ #define ATF_IEEE8025 0x800 /* IEEE - 8025 */ #define ATF_FCSNAP 0x4000 /* Fibre Channel SNAP */

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 can be written are ATF_PERM, and ATF_PUBL. Fibre Channel hosts only support the ATF_PERM flag. ATF_PERM causes the entry to be permanent. 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 watches passively for hosts impersonating the local host (i.e., a host that responds to an ARP mapping request for the local host's address).


duplicate IP address!! sent from ethernet address: %x:%x:%x:%x:%x:%x.

This message printed on the console screen means that ARP has discovered another host on the local network that responds to mapping requests for its own Internet address.


To enable the ether encapsulation method, use the ifconfig command (see ifconfig(1M)).


ARP was developed by the University of California, Berkeley.


ifconfig(1M), inet(3N), lan(7), arp(1M).

An Ethernet Address Resolution Protocol, RFC826, Dave Plummer, Network Information Center, SRI.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.