diff -urN olsrd.old/src/bsd/kernel_routes.c olsrd.dev/src/bsd/kernel_routes.c
--- olsrd.old/src/bsd/kernel_routes.c	2005-02-27 11:43:38.000000000 +0100
+++ olsrd.dev/src/bsd/kernel_routes.c	2006-02-25 00:48:33.292240500 +0100
@@ -93,10 +93,10 @@
   }
 
   rtm->rtm_version = RTM_VERSION;
-  rtm->rtm_type = (add != 0) ? RTM_ADD : RTM_DELETE;
+  rtm->rtm_type = (add == 1) ? RTM_ADD : RTM_DELETE;
   rtm->rtm_index = 0;
   rtm->rtm_flags = flags;
-  rtm->rtm_addrs = RTA_DST | RTA_NETMASK | RTA_GATEWAY;
+  rtm->rtm_addrs = (add == 2) ? RTA_DST : RTA_DST | RTA_NETMASK | RTA_GATEWAY;
   rtm->rtm_seq = ++seq;
 
   walker = buff + sizeof (struct rt_msghdr);
@@ -162,6 +162,7 @@
 
 int olsr_ioctl_add_route(struct rt_entry *dest)
 {
+  add_del_route(dest, 2);
   return add_del_route(dest, 1);
 }
 
