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