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