Hi Arne,
For the context, this ROUTE_BEFORE_TUN is required for the Android VPN
API, right? Might be useful to put in the commit message. Furthermore
two comments on the patch, which I've put inline:
On 04/21/2013 01:26 PM, Arne Schwabe wrote:
> ---
> src/openvpn/init.c | 11 +++++++++--
> src/openvpn/tun.h | 11 +++++++++++
> 2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/src/openvpn/init.c b/src/openvpn/init.c
> index b7f71c3..a70d3c5 100644
> --- a/src/openvpn/init.c
> +++ b/src/openvpn/init.c
> @@ -1429,6 +1429,13 @@ do_open_tun (struct context *c)
> do_ifconfig (c->c1.tuntap, guess, TUN_MTU_SIZE (&c->c2.frame),
> c->c2.es);
> }
>
> + /* possibly add routes */
> + if (route_order() == ROUTE_BEFORE_TUN) {
> + /* Ignore route_delay, would cause ROUTE_BEFORE_TUN to be
> ignored */
> + do_route (&c->options, c->c1.route_list,
> c->c1.route_ipv6_list,
> + c->c1.tuntap, c->plugins, c->c2.es);
> + }
> +
> /* open the tun device */
> open_tun (c->options.dev, c->options.dev_type, c->options.dev_node,
> c->c1.tuntap);
> @@ -1460,7 +1467,7 @@ do_open_tun (struct context *c)
> c->c2.es);
>
> /* possibly add routes */
> - if (!c->options.route_delay_defined)
> + if ((ifconfig_order() == ROUTE_AFTER_TUN) &&
> (!c->options.route_delay_defined))
Shouldn't this be route_order() ?
> do_route (&c->options, c->c1.route_list, c->c1.route_ipv6_list,
> c->c1.tuntap, c->plugins, c->c2.es);
>
> @@ -1668,7 +1675,7 @@ do_up (struct context *c, bool pulled_options, unsigned
> int option_types_found)
> #endif
>
> /* if --route-delay was specified, start timer */
> - if (c->options.route_delay_defined)
> + if ((ifconfig_order() == ROUTE_AFTER_TUN) &&
> c->options.route_delay_defined)
Same goes here, I guess your mean route_order().
> {
> event_timeout_init (&c->c2.route_wakeup, c->options.route_delay,
> now);
> event_timeout_init (&c->c2.route_wakeup_expire,
> c->options.route_delay + c->options.route_delay_window, now);
> diff --git a/src/openvpn/tun.h b/src/openvpn/tun.h
> index c3fc62e..63e4b5c 100644
> --- a/src/openvpn/tun.h
> +++ b/src/openvpn/tun.h
> @@ -297,6 +297,17 @@ ifconfig_order(void)
> #endif
> }
>
> +#define ROUTE_BEFORE_TUN 0
> +#define ROUTE_AFTER_TUN 1
> +#define ROUTE_ORDER_DEFAULT ROUTE_AFTER_TUN
> +
> +static inline int
> +route_order(void)
> +{
> + return ROUTE_ORDER_DEFAULT;
> +}
> +
> +
> #ifdef WIN32
>
> #define TUN_PASS_BUFFER
Regards,
-Steffan