On 26/04/13 21:59, Arne Schwabe wrote:
> On Android changing the configuration of tun is not possible. So instead of 
> reconfiguring the tun device, open a new tun device and close the old one if 
> needed
> ---
>  src/openvpn/init.c |   18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/src/openvpn/init.c b/src/openvpn/init.c
> index f08583b..9ff6600 100644
> --- a/src/openvpn/init.c
> +++ b/src/openvpn/init.c
> @@ -1402,8 +1402,19 @@ do_open_tun (struct context *c)
>    c->c2.ipv4_tun = (!c->options.tun_ipv6
>                   && is_dev_type (c->options.dev, c->options.dev_type, 
> "tun"));
>  
> +#ifndef TARGET_ANDROID
>    if (!c->c1.tuntap)
>      {
> +#endif
> +      
> +#ifdef TARGET_ANDROID
> +      /* If we emulate persist-tun on android we still have to open a new 
> tun and
> +         then close the old */
> +      int oldtunfd=-1;
> +      if(c->c1.tuntap)
> +          oldtunfd = c->c1.tuntap->fd;
> +#endif
> +        
>        /* initialize (but do not open) tun/tap object */
>        do_init_tun (c);
>  
> @@ -1439,7 +1450,10 @@ do_open_tun (struct context *c)
>        /* open the tun device */
>        open_tun (c->options.dev, c->options.dev_type, c->options.dev_node,
>               c->c1.tuntap);
> -
> +#ifdef TARGET_ANDROID
> +      if(oldtunfd>=0)
> +        close(oldtunfd);
> +#endif
>        /* set the hardware address */
>        if (c->options.lladdr)
>         set_lladdr(c->c1.tuntap->actual_name, c->options.lladdr, c->c2.es);
> @@ -1481,6 +1495,7 @@ do_open_tun (struct context *c)
>  
>        ret = true;
>        static_context = c;
> +#ifndef TARGET_ANDROID
>      }
>    else
>      {
> @@ -1503,6 +1518,7 @@ do_open_tun (struct context *c)
>                    "up",
>                    c->c2.es);
>      }
> +#endif
>    gc_free (&gc);
>    return ret;
>  }


There are a few stylish details I could nit-pick on, such as

    if(bool) -> if (bool)

but that's so minor I don't even convinced this makes sense to fix up
before applying.

So, looks good, code wise.  Not compile tested, only patch review.


-- 
kind regards,

David Sommerseth

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to