mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-26 12:13:47 +00:00
Merged ARP fixes from STABLE. Should have made those fixes in HEAD first.
This commit is contained in:
parent
707d31a083
commit
7129d4797c
@ -521,6 +521,17 @@ etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
|
|||||||
for_us = ip_addr_cmp(&(hdr->dipaddr), &(netif->ip_addr));
|
for_us = ip_addr_cmp(&(hdr->dipaddr), &(netif->ip_addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add or update entries in the ARP cache */
|
||||||
|
if (for_us) {
|
||||||
|
/* insert IP address in ARP cache (assume requester wants to talk to us)
|
||||||
|
* we might even send out a queued packet to this host */
|
||||||
|
update_arp_entry(netif, &(hdr->sipaddr), &(hdr->shwaddr), ARP_INSERT_FLAG);
|
||||||
|
/* request was not directed to us, but snoop anyway */
|
||||||
|
} else {
|
||||||
|
/* update the source IP address in the cache */
|
||||||
|
update_arp_entry(netif, &(hdr->sipaddr), &(hdr->shwaddr), 0);
|
||||||
|
}
|
||||||
|
|
||||||
switch (htons(hdr->opcode)) {
|
switch (htons(hdr->opcode)) {
|
||||||
/* ARP request? */
|
/* ARP request? */
|
||||||
case ARP_REQUEST:
|
case ARP_REQUEST:
|
||||||
@ -579,18 +590,6 @@ etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
|
|||||||
LWIP_DEBUGF(ETHARP_DEBUG | DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %d\n", htons(hdr->opcode)));
|
LWIP_DEBUGF(ETHARP_DEBUG | DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %d\n", htons(hdr->opcode)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* add or update entries in the ARP cache */
|
|
||||||
if (for_us) {
|
|
||||||
/* insert IP address in ARP cache (assume requester wants to talk to us)
|
|
||||||
* we might even send out a queued packet to this host */
|
|
||||||
update_arp_entry(netif, &(hdr->sipaddr), &(hdr->shwaddr), ARP_INSERT_FLAG);
|
|
||||||
/* request was not directed to us, but snoop anyway */
|
|
||||||
} else {
|
|
||||||
/* update or insert the source IP address in the cache */
|
|
||||||
update_arp_entry(netif, &(hdr->sipaddr), &(hdr->shwaddr), 0);
|
|
||||||
/* update or insert the destination IP address pair in the cache */
|
|
||||||
update_arp_entry(netif, &(hdr->dipaddr), &(hdr->dhwaddr), 0);
|
|
||||||
}
|
|
||||||
/* free ARP packet */
|
/* free ARP packet */
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
p = NULL;
|
p = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user