Message ID | 20200923125839.7519-2-jan.seeger@thenybble.de |
---|---|
State | Superseded |
Headers | show |
Series | [Openvpn-devel] Added environment variable for IPv6 route metric. | expand |
On 23/09/2020 14:58, Jan Seeger wrote: > --- a/doc/man-sections/script-options.rst > +++ b/doc/man-sections/script-options.rst > @@ -709,10 +709,10 @@ instances. > A set of variables which define each IPv6 route to be added, and are > set prior to **--up** script execution. > > - ``parm`` will be one of :code:`network` or :code:`gateway` > + ``parm`` will be one of :code:`network`, :code:`gateway` > (:code:`netmask` is contained as :code:`/nnn` in the > ``route_ipv6_network_{n}``, unlike IPv4 where it is passed in a > - separate environment variable). > + separate environment variable) or :code:`metric`. I would suggest to rewrite this slightly, to make it clearer. The () sentence should be incorporated as a normal sentence. So the (text/plain) result will be something like: param will be one of network, code or metric. The netmask is contained as /nnn in the route_ipv6_network_{n}, unlike IPv4 where it is passed in a separate environment variable. Or maybe even (why do we highlight IPv4 differences so much?): param will be one of network, code or metric. The netmask is not provided and is preserved as /nnn in the IPv6 range in route_ipv6_network_{n}. (These examples needs the proper :code:`value` and ``value`` highlighting, removed here for clarity)
diff --git a/doc/man-sections/script-options.rst b/doc/man-sections/script-options.rst index a4df6732..0bf68c43 100644 --- a/doc/man-sections/script-options.rst +++ b/doc/man-sections/script-options.rst @@ -709,10 +709,10 @@ instances. A set of variables which define each IPv6 route to be added, and are set prior to **--up** script execution. - ``parm`` will be one of :code:`network` or :code:`gateway` + ``parm`` will be one of :code:`network`, :code:`gateway` (:code:`netmask` is contained as :code:`/nnn` in the ``route_ipv6_network_{n}``, unlike IPv4 where it is passed in a - separate environment variable). + separate environment variable) or :code:`metric`. ``n`` is the OpenVPN route number, starting from 1. diff --git a/src/openvpn/route.c b/src/openvpn/route.c index bd6b968b..bab9b8e9 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -1479,6 +1479,13 @@ setenv_route_ipv6(struct env_set *es, const struct route_ipv6 *r6, int i) buf_printf( &name2, "route_ipv6_gateway_%d", i ); setenv_str( es, BSTR(&name2), print_in6_addr( r6->gateway, 0, &gc )); + + if (r6->flags & RT_METRIC_DEFINED) + { + struct buffer name3 = alloc_buf_gc( 256, &gc ); + buf_printf( &name3, "route_ipv6_metric_%d", i) ; + setenv_int( es, BSTR(&name3), r6->metric); + } } gc_free(&gc); }