149 |
/* remove expired entries from the ARP table */ |
/* remove expired entries from the ARP table */ |
150 |
for(i = 0; i < ARP_TABLE_SIZE; ++i) { |
for(i = 0; i < ARP_TABLE_SIZE; ++i) { |
151 |
arp_table[i].ctime++; |
arp_table[i].ctime++; |
152 |
if ((arp_table[i].state == ETHARP_STATE_STABLE) && |
if ((arp_table[i].state == ETHARP_STATE_STABLE) && |
153 |
(arp_table[i].ctime >= ARP_MAXAGE)) { |
(arp_table[i].ctime >= ARP_MAXAGE)) { |
154 |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired stable entry %u.\n", i)); |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired stable entry %u.\n", i)); |
155 |
arp_table[i].state = ETHARP_STATE_EMPTY; |
arp_table[i].state = ETHARP_STATE_EMPTY; |
156 |
#if ARP_QUEUEING |
#if ARP_QUEUEING |
157 |
/* remove any queued packet */ |
/* remove any queued packet */ |
158 |
pbuf_free(arp_table[i].p); |
pbuf_free(arp_table[i].p); |
159 |
arp_table[i].p = NULL; |
arp_table[i].p = NULL; |
160 |
#endif |
#endif |
161 |
} else if ((arp_table[i].state == ETHARP_STATE_PENDING) && |
} else if ((arp_table[i].state == ETHARP_STATE_PENDING) && |
164 |
#if ARP_QUEUEING |
#if ARP_QUEUEING |
165 |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u - dequeueing %p.\n", i, (void *)(arp_table[i].p))); |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u - dequeueing %p.\n", i, (void *)(arp_table[i].p))); |
166 |
/* remove any queued packet */ |
/* remove any queued packet */ |
167 |
pbuf_free(arp_table[i].p); |
pbuf_free(arp_table[i].p); |
168 |
arp_table[i].p = NULL; |
arp_table[i].p = NULL; |
169 |
#else |
#else |
170 |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u.\n", i)); |
DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired pending entry %u.\n", i)); |