156 |
if ((arp_table[i].state == ETHARP_STATE_STABLE) && |
if ((arp_table[i].state == ETHARP_STATE_STABLE) && |
157 |
(arp_table[i].ctime >= ARP_MAXAGE)) { |
(arp_table[i].ctime >= ARP_MAXAGE)) { |
158 |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired stable entry %u.\n", i)); |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired stable entry %u.\n", i)); |
159 |
arp_table[i].state = ETHARP_STATE_EMPTY; |
goto empty; |
|
#if ARP_QUEUEING |
|
|
if (arp_table[i].p != NULL) { |
|
|
/* remove any queued packet */ |
|
|
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing packet queue %p.\n", i, (void *)(arp_table[i].p))); |
|
|
pbuf_free(arp_table[i].p); |
|
|
arp_table[i].p = NULL; |
|
|
} |
|
|
#endif |
|
160 |
} else if ((arp_table[i].state == ETHARP_STATE_PENDING) && |
} else if ((arp_table[i].state == ETHARP_STATE_PENDING) && |
161 |
(arp_table[i].ctime >= ARP_MAXPENDING)) { |
(arp_table[i].ctime >= ARP_MAXPENDING)) { |
|
arp_table[i].state = ETHARP_STATE_EMPTY; |
|
162 |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u.\n", i)); |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u.\n", i)); |
163 |
|
empty: |
164 |
|
arp_table[i].state = ETHARP_STATE_EMPTY; |
165 |
#if ARP_QUEUEING |
#if ARP_QUEUEING |
166 |
if (arp_table[i].p != NULL) { |
if (arp_table[i].p != NULL) { |
167 |
/* remove any queued packet */ |
/* remove any queued packet */ |
168 |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing packet queue %p.\n", i, (void *)(arp_table[i].p))); |
LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing entry %u, packet queue %p.\n", i, (void *)(arp_table[i].p))); |
169 |
pbuf_free(arp_table[i].p); |
pbuf_free(arp_table[i].p); |
170 |
arp_table[i].p = NULL; |
arp_table[i].p = NULL; |
171 |
} |
} |