On 3/26/2013 11:09, Gert Doering wrote:
> 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 <g...@greenie.muc.de>
> ---
>  src/openvpn/route.c |   15 +++++++++------
>  1 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/openvpn/route.c b/src/openvpn/route.c
> index 134ed58..d848db6 100644
> --- a/src/openvpn/route.c
> +++ b/src/openvpn/route.c
> @@ -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");

ACK on this; I don't have Solaris to test with, but the code changes are
fine to fix the platform's needs.

--
Josh


Reply via email to