In current etharp implementation, the ctime field of an ARP table entry is
reset when an empty entry is selected for a given address.
This can create situations where an ARP table entry can expire even if the
application (any upper layer) has initiated an ARP query immediately before.
Once the entry has expired, it could be recycled for another address and then
the ARP reply corresponding to the request previously sent could be dropped if
there are no more available empty entry in the table.
(see attached commented debug log for a more concrete example)
A suggestion to avoid such a situation would be to reset the ctime field each
time the application explicitely request an ARP resolution with
(see attached patch)
I couldn't find any reference document on ARP table management (and
specifically on pending entry management).
Do you see any drawback or problem with this suggestion?