Message ID | 20220812130657.29899-4-a@unstable.cc |
---|---|
State | Changes Requested |
Headers | show |
Series | ovpn-dco: leftovers | expand |
Hi, I think commit message is a bit misleading: >dco-win: add platform dependant check on incompatible options >Some platforms may have different constraints in terms of incompatible >opions, therefore we add a function that explicitly checks those. >Also, add generic option check for when ovpn-dco-win is in use. We already have a function which does platform-specific checks on options and this code only adds Windows-specific checks. How about: dco-win: check for incompatible options At the moment dco-win doesn't support --persist-tun and --server, so add this to options check. pe 12. elok. 2022 klo 16.07 Antonio Quartulli (a@unstable.cc) kirjoitti: > Some platforms may have different constraints in terms of incompatible > opions, therefore we add a function that explicitly checks those. > > Also, add generic option check for when ovpn-dco-win is in use. > > Signed-off-by: Antonio Quartulli <a@unstable.cc> > Signed-off-by: Lev Stipakov <lev@openvpn.net> > --- > src/openvpn/dco.c | 17 +++++++++++++++-- > src/openvpn/options.c | 5 +++++ > 2 files changed, 20 insertions(+), 2 deletions(-) > > diff --git a/src/openvpn/dco.c b/src/openvpn/dco.c > index ac694d18..d330d917 100644 > --- a/src/openvpn/dco.c > +++ b/src/openvpn/dco.c > @@ -221,7 +221,20 @@ dco_update_keys(dco_context_t *dco, struct tls_multi > *multi) > static bool > dco_check_option_conflict_platform(int msglevel, const struct options *o) > { > -#if defined(TARGET_LINUX) > +#if defined(_WIN32) > + if (o->mode == MODE_SERVER) > + { > + msg(msglevel, "Only client and p2p data channel offload is > supported " > + "with ovpn-dco-win."); > + return false; > + } > + > + if (o->persist_tun) > + { > + msg(msglevel, "--persist-tun is not supported with > ovpn-dco-win."); > + return false; > + } > +#elif defined(TARGET_LINUX) > /* if the device name is fixed, we need to check if an interface with > this > * name already exists. IF it does, it must be a DCO interface, > otherwise > * DCO has to be disabled in order to continue. > @@ -246,7 +259,7 @@ dco_check_option_conflict_platform(int msglevel, const > struct options *o) > strerror(-ret), ret); > } > } > -#endif /* if defined(TARGET_LINUX) */ > +#endif /* if defined(_WIN32) */ > return true; > } > > diff --git a/src/openvpn/options.c b/src/openvpn/options.c > index 0ce3158b..90e59582 100644 > --- a/src/openvpn/options.c > +++ b/src/openvpn/options.c > @@ -2450,6 +2450,11 @@ options_postprocess_verify_ce(const struct options > *options, > { > msg(M_USAGE, "--windows-driver wintun requires --dev tun"); > } > + > + if (options->windows_driver == WINDOWS_DRIVER_DCO) > + { > + dco_check_option_conflict(M_USAGE, options); > + } > #endif /* ifdef _WIN32 */ > > /* > -- > 2.35.1 > > > > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel >
diff --git a/src/openvpn/dco.c b/src/openvpn/dco.c index ac694d18..d330d917 100644 --- a/src/openvpn/dco.c +++ b/src/openvpn/dco.c @@ -221,7 +221,20 @@ dco_update_keys(dco_context_t *dco, struct tls_multi *multi) static bool dco_check_option_conflict_platform(int msglevel, const struct options *o) { -#if defined(TARGET_LINUX) +#if defined(_WIN32) + if (o->mode == MODE_SERVER) + { + msg(msglevel, "Only client and p2p data channel offload is supported " + "with ovpn-dco-win."); + return false; + } + + if (o->persist_tun) + { + msg(msglevel, "--persist-tun is not supported with ovpn-dco-win."); + return false; + } +#elif defined(TARGET_LINUX) /* if the device name is fixed, we need to check if an interface with this * name already exists. IF it does, it must be a DCO interface, otherwise * DCO has to be disabled in order to continue. @@ -246,7 +259,7 @@ dco_check_option_conflict_platform(int msglevel, const struct options *o) strerror(-ret), ret); } } -#endif /* if defined(TARGET_LINUX) */ +#endif /* if defined(_WIN32) */ return true; } diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 0ce3158b..90e59582 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2450,6 +2450,11 @@ options_postprocess_verify_ce(const struct options *options, { msg(M_USAGE, "--windows-driver wintun requires --dev tun"); } + + if (options->windows_driver == WINDOWS_DRIVER_DCO) + { + dco_check_option_conflict(M_USAGE, options); + } #endif /* ifdef _WIN32 */ /*