diff options
Diffstat (limited to 'networking/udhcp/arpping.c')
-rw-r--r-- | networking/udhcp/arpping.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/networking/udhcp/arpping.c b/networking/udhcp/arpping.c index b43e52e..fad2283 100644 --- a/networking/udhcp/arpping.c +++ b/networking/udhcp/arpping.c @@ -39,7 +39,8 @@ int FAST_FUNC arpping(uint32_t test_nip, const uint8_t *safe_mac, uint32_t from_ip, uint8_t *from_mac, - const char *interface) + const char *interface, + unsigned timeo) { int timeout_ms; struct pollfd pfd[1]; @@ -48,6 +49,9 @@ int FAST_FUNC arpping(uint32_t test_nip, struct sockaddr addr; /* for interface name */ struct arpMsg arp; + if (!timeo) + return 1; + s = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ARP)); if (s == -1) { bb_perror_msg(bb_msg_can_not_create_raw_socket); @@ -83,7 +87,7 @@ int FAST_FUNC arpping(uint32_t test_nip, } /* wait for arp reply, and check it */ - timeout_ms = 2000; + timeout_ms = (int)timeo; do { typedef uint32_t aliased_uint32_t FIX_ALIASING; int r; @@ -124,7 +128,7 @@ int FAST_FUNC arpping(uint32_t test_nip, * this is more under/overflow-resistant * (people did see overflows here when system time jumps): */ - } while ((unsigned)timeout_ms <= 2000); + } while ((unsigned)timeout_ms <= timeo); ret: close(s); |