Index: trunk/arping.c =================================================================== --- trunk.orig/arping.c 2010-05-07 23:13:52.000000000 -0700 +++ trunk/arping.c 2010-05-07 23:41:16.000000000 -0700 @@ -182,12 +182,17 @@ if (start.tv_sec==0) start = tv; - if (count-- == 0 || (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500)) + if (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500) finish(); - if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) { + if ((!timeout) && (count == 0)) + finish(); + + if ( count!=0 && (last.tv_sec==0 || MS_TDIFF(tv,last) > 500 ) ) { send_pack(s, src, dst, (struct sockaddr_ll *)&me, (struct sockaddr_ll *)&he); + if (count >= 0) + count--; if (count == 0 && unsolicited) finish(); }