arprequest() is a void function and in case of error we simply
return without any feedback. In case of any local operation
or *if_output() fails no feedback is send up the stack for the
packet which triggered the arp request to be sent.
arpresolve_full() has three pre-canned possible errors returned
(if we have not yet sent enough arp requests or if we tried
often enough without success) otherwise "no error" is returned.
Make arprequest() an "internal" function arprequest_int() which
does return a possible error to the caller. Preserve arprequest()
as a void qrapper function for external consumers.
In arpresolve_full() add an extra error checking. Use the
arprequest_int() function and only return an error if non of the
three ones (mentioend above) have been set already.
This will return possible errors all the way up the stack and
allows functions and programs to react on the send errors rather
than leaving them in the dark. Also they might get more detailed
feedback of why packets cannot be sent and they will receive it