--- a/arp.c
+++ b/arp.c
@@ -366,7 +366,7 @@ void *arp(char *ifname)
     do {
       pthread_testcancel();
       /* Sleep a bit in order not to overload the system */
-      usleep(300);
+      usleep(3000);
 
       if (arp_recv(sock, &frame) <= 0)
     	    continue;
--- a/parprouted.c
+++ b/parprouted.c
@@ -106,7 +106,7 @@ int route_remove(ARPTAB_ENTRY* cur_entry
     int success = 1;
     
     if (snprintf(routecmd_str, ROUTE_CMD_LEN-1, 
-	    "/sbin/ip route del %s/32 metric 50 dev %s scope link",
+	    "/sbin/route del -host %s metric 50 dev %s",
 	    inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1) 
     {
 	syslog(LOG_INFO, "ip route command too large to fit in buffer!");
@@ -136,7 +136,7 @@ int route_add(ARPTAB_ENTRY* cur_entry)
     int success = 1;
 
     if (snprintf(routecmd_str, ROUTE_CMD_LEN-1, 
-	    "/sbin/ip route add %s/32 metric 50 dev %s scope link",
+	    "/sbin/route add -host %s metric 50 dev %s",
 	    inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1) 
     {
 	syslog(LOG_INFO, "ip route command too large to fit in buffer!");