[Openvpn-devel,v100,03/10] dco-win: add platform dependant check on incompatible options
Commit Message
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(-)
Comments
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
>
@@ -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;
}
@@ -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 */
/*