| ARP(9) | Kernel Developer's Manual | ARP(9) | 
arp, arp_ifinit,
  arpresolve, arpintr —
#include <netinet/if_inarp.h>
void
  
  arp_ifinit(struct
    ifnet *ifp, struct ifaddr
    *ifa);
int
  
  arpresolve(struct
    ifnet *ifp, const struct
    rtentry *rt, struct mbuf
    *m, const struct sockaddr
    *dst, void *desten,
    size_t destlen);
void
  
  arpintr();
arp functions provide the interface between the
  arp module and the network drivers which need
  arp functionality. Such drivers must request the
  arp attribute in their "files" declaration.
arp_ifinit()arp specific fields in
      ifa. Additionally, it sends out a gratuitous
      arp request on ifp, so that
      other machines are warned that we have a (new) address and duplicate
      addresses can be detected.
    You must call this in your drivers' ioctl function when you get a SIOCSIFADDR request with an AF_INET address family.
arpresolve()arp request is sent
      instead. When an arp reply is received, the last
      held packet is send. Otherwise, the looked up address is returned and
      written into the storage desten points to.
      arpresolve() returns 1, if a valid address was
      stored to desten, and the packet can be sent
      immediately. Else a 0 is returned.arpintr()arp packet is received, the network driver
      (class) input interrupt handler queues the packet on the arpintrq queue,
      and requests an arpintr() soft interrupt callback.
      arpintr() dequeues the packets, performs sanity
      checks and calls (for IPv4 arp packets, which are
      the only ones supported currently) the
      in_arpinput() function.
      in_arpinput() either generates a reply to request
      packets, and adds the sender address translation to the routing table, if
      a matching route entry is found. If the route entry contained a pointer to
      a held packet, that packet is sent.Plummer, D., "RFC826", An Ethernet Address Resolution Protocol.
| September 1, 2019 | NetBSD 9.4 |