diff --git a/src/openvpn/route.c b/src/openvpn/route.c
index fa20d08f..8d319123 100644
--- a/src/openvpn/route.c
+++ b/src/openvpn/route.c
@@ -54,6 +54,12 @@
 #include <net/route.h>                  /* RT_ROUNDUP(), RT_ADVANCE() */
 #endif
 
+#if defined(TARGET_HAIKU)
+#include <SupportDefs.h>    /* uint32, etc */
+#include <net/if.h>         /* ifconf etc */
+#include <sys/sockio.h>     /* SIOCGRTTABLE, etc */
+#endif /* TARGET_HAIKU */
+
 #ifdef _WIN32
 #include "openvpn-msg.h"
 
@@ -1857,14 +1863,16 @@ add_route(struct route_ipv4 *r,
 
     {
         /* ex: route add /dev/net/ipro1000/0 default gw 192.168.1.1 netmask 255.255.255.0 */
-        argv_printf(&argv, "route add %s inet default gw %s netmask %s",
+        argv_printf(&argv, "%s add %s inet %s gw %s netmask %s",
+                    ROUTE_PATH,
                     rgi-
>iface,
+                    network,
                     gateway,
                     netmask);
 
         argv_msg(D_ROUTE, &argv);
         bool ret = openvpn_execve_check(&argv, es, 0,
-                                        "ERROR: Haiku route add command failed");
+                                        "ERROR: Haiku inet route add command failed");
         status = ret ? RTA_SUCCESS : RTA_ERROR;
     }
