Home | History | Annotate | Download | only in libsa

Lines Matching defs:arp

1 /*	$NetBSD: arp.c,v 1.35 2019/03/31 20:08:45 christos Exp $	*/
39 * @(#) Header: arp.c,v 1.5 93/07/15 05:52:26 leres Exp (LBL)
81 #define ARP_NUM 8 /* need at most 3 arp entries */
96 /* Broadcast an ARP packet, asking who has addr on interface d */
107 struct ether_arp arp;
114 struct ether_arp arp;
136 ah = &wbuf.data.arp;
158 ah = &rbuf.data.arp;
213 printf("not arp type=%d\n", etype);
245 printf("not ARP reply\n");
271 * Convert an ARP request into a reply and send it.
277 struct ether_arp *arp = pkt;
279 if (arp->arp_hrd != htons(ARPHRD_ETHER) ||
280 arp->arp_pro != htons(ETHERTYPE_IP) ||
281 arp->arp_hln != sizeof(arp->arp_sha) ||
282 arp->arp_pln != sizeof(arp->arp_spa) )
291 if (arp->arp_op != htons(ARPOP_REQUEST)) {
300 if (memcmp(arp->arp_tpa, &d->myip, sizeof(arp->arp_tpa)))
305 printf("%s: to %s\n", __func__, ether_sprintf(arp->arp_sha));
309 arp->arp_op = htons(ARPOP_REPLY);
311 (void)memcpy(arp->arp_tha, arp->arp_sha, sizeof(arp->arp_tha));
312 (void)memcpy(arp->arp_tpa, arp->arp_spa, sizeof(arp->arp_tpa));
314 (void)memcpy(arp->arp_sha, d->myea, sizeof(arp->arp_sha));
315 (void)memcpy(arp->arp_spa, &d->myip, sizeof(arp->arp_spa));
321 (void) sendether(d, pkt, sizeof(*arp) + 18,
322 arp->arp_tha, ETHERTYPE_ARP);