]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix directly connected routes for "topology subnet" on Solaris.
authorGert Doering <gert@greenie.muc.de>
Tue, 26 Mar 2013 16:09:35 +0000 (17:09 +0100)
committerGert Doering <gert@greenie.muc.de>
Wed, 27 Mar 2013 08:36:37 +0000 (09:36 +0100)
This basically brings back the previously-working metric setting for
directly connected routes (add a "0" to the "route add" command) on
Solaris/OpenSolaris.  It was working in f0eac1a59790, and got broken
by the route.c/route.h refactoring in 576dc96ca1ef1 - the patch
un-does that change to the TARGET_SOLARIS code, plus adds some more
descriptive comments.

Signed-off-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Josh Cepek <josh.cepek@usa.net>
Message-Id: <1364314175-20758-1-git-send-email-gert@greenie.muc.de>
URL: http://article.gmane.org/gmane.network.openvpn.devel/7460

src/openvpn/route.c

index 134ed58e4f2d8af6b78a7b8b87846fae320960df..4c1e14e91d8c2692c12b19bc33c6c929d281394c 100644 (file)
@@ -1397,17 +1397,20 @@ add_route (struct route *r,
   argv_printf (&argv, "%s add",
                ROUTE_PATH);
 
-#if 0
-  if (r->flags & RT_METRIC_DEFINED)
-    argv_printf_cat (&argv, "-rtt %d", r->metric);
-#endif
-
   argv_printf_cat (&argv, "%s -netmask %s %s",
              network,
              netmask,
              gateway);
 
-  /* FIXME -- add on-link support for Solaris */
+  /* Solaris can only distinguish between "metric 0" == "on-link on the
+   * interface where the IP address given is configured" and "metric > 0"
+   * == "use gateway specified" (no finer-grained route metrics available)
+   *
+   * More recent versions of Solaris can also do "-interface", but that
+   * would break backwards compatibility with older versions for no gain.
+   */
+  if (r->flags & RT_METRIC_DEFINED )
+    argv_printf_cat (&argv, "%d", r->metric);
 
   argv_msg (D_ROUTE, &argv);
   status = openvpn_execve_check (&argv, es, 0, "ERROR: Solaris route add command failed");