Message ID | 20191219132953.375-1-lstipakov@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [Openvpn-devel] options.c: do not force route delay when not using DHCP | expand |
Code looks reasonable. Tested it. Acked-by: Simon Rozman <simon@rozman.si> Best regards, Simon > -----Original Message----- > From: Lev Stipakov <lstipakov@gmail.com> > Sent: Thursday, December 19, 2019 2:30 PM > To: openvpn-devel@lists.sourceforge.net > Cc: Lev Stipakov <lev@openvpn.net> > Subject: [Openvpn-devel] [PATCH] options.c: do not force route delay > when not using DHCP > > From: Lev Stipakov <lev@openvpn.net> > > Route delay may be only necessary when we perform DHCP handshake. When > we use IPAPI / netsh / manual, no delay needed. > > Signed-off-by: Lev Stipakov <lev@openvpn.net> > --- > src/openvpn/options.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/src/openvpn/options.c b/src/openvpn/options.c index > cebcbb07..a6f40e10 100644 > --- a/src/openvpn/options.c > +++ b/src/openvpn/options.c > @@ -3001,9 +3001,18 @@ options_postprocess_mutate_invariant(struct > options *options) > } > > #ifdef _WIN32 > + /* when using wintun, kernel doesn't send DHCP requests, so use > netsh to set IP address and netmask */ > + if (options->wintun) > + { > + options->tuntap_options.ip_win32_type = IPW32_SET_NETSH; > + } > + > if ((dev == DEV_TYPE_TUN || dev == DEV_TYPE_TAP) && !options- > >route_delay_defined) > { > - if (options->mode == MODE_POINT_TO_POINT) > + /* delay may only be necessary when we perform DHCP handshake > */ > + const bool dhcp = (options->tuntap_options.ip_win32_type == > IPW32_SET_DHCP_MASQ) > + || (options->tuntap_options.ip_win32_type == > IPW32_SET_ADAPTIVE); > + if ((options->mode == MODE_POINT_TO_POINT) && dhcp) > { > options->route_delay_defined = true; > options->route_delay = 5; /* Vista sometimes has a race > without this */ @@ -3016,14 +3025,8 @@ > options_postprocess_mutate_invariant(struct options *options) > options->ifconfig_noexec = false; > } > > - /* for wintun kernel doesn't send DHCP requests, so use netsh to > set IP address and netmask */ > - if (options->wintun) > - { > - options->tuntap_options.ip_win32_type = IPW32_SET_NETSH; > - } > - > remap_redirect_gateway_flags(options); > -#endif > +#endif /* ifdef _WIN32 */ > > #if P2MP_SERVER > /* > -- > 2.17.1 > > > > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel
Your patch has been applied to the master branch. (Stared a bit at the code, sounds reasonable, no testing whatsoever) commit dd4647acf40b26bb8d7403debc00a342c663d618 Author: Lev Stipakov Date: Thu Dec 19 15:29:53 2019 +0200 options.c: do not force route delay when not using DHCP Signed-off-by: Lev Stipakov <lev@openvpn.net> Acked-By: Simon Rozman <simon@rozman.si> Message-Id: <20191219132953.375-1-lstipakov@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19257.html Signed-off-by: Gert Doering <gert@greenie.muc.de> -- kind regards, Gert Doering
diff --git a/src/openvpn/options.c b/src/openvpn/options.c index cebcbb07..a6f40e10 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -3001,9 +3001,18 @@ options_postprocess_mutate_invariant(struct options *options) } #ifdef _WIN32 + /* when using wintun, kernel doesn't send DHCP requests, so use netsh to set IP address and netmask */ + if (options->wintun) + { + options->tuntap_options.ip_win32_type = IPW32_SET_NETSH; + } + if ((dev == DEV_TYPE_TUN || dev == DEV_TYPE_TAP) && !options->route_delay_defined) { - if (options->mode == MODE_POINT_TO_POINT) + /* delay may only be necessary when we perform DHCP handshake */ + const bool dhcp = (options->tuntap_options.ip_win32_type == IPW32_SET_DHCP_MASQ) + || (options->tuntap_options.ip_win32_type == IPW32_SET_ADAPTIVE); + if ((options->mode == MODE_POINT_TO_POINT) && dhcp) { options->route_delay_defined = true; options->route_delay = 5; /* Vista sometimes has a race without this */ @@ -3016,14 +3025,8 @@ options_postprocess_mutate_invariant(struct options *options) options->ifconfig_noexec = false; } - /* for wintun kernel doesn't send DHCP requests, so use netsh to set IP address and netmask */ - if (options->wintun) - { - options->tuntap_options.ip_win32_type = IPW32_SET_NETSH; - } - remap_redirect_gateway_flags(options); -#endif +#endif /* ifdef _WIN32 */ #if P2MP_SERVER /*