[Openvpn-devel] Added environment variable for IPv6 route metric.
Commit Message
---
doc/man-sections/script-options.rst | 4 ++--
src/openvpn/route.c | 7 +++++++
2 files changed, 9 insertions(+), 2 deletions(-)
Comments
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)
@@ -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.
@@ -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);
}