FreeBSD-DCO does not support TCP as transport protocol so in order to
be able to use DCO in a multi-socket environment we need to check the
local_list entries and disable DCO if any of the listening socket
is TCP.
While at it, removed some dead code left from Multisocket polishing.
Github: closes OpenVPN/openvpn#710
Change-Id: I9b6359076a61ae2bbb8e5cea00e33969cb5f92cf
Signed-off-by: Gianmarco De Gregori <gianmarco@mandelbit.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <
20250402132148.18810-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31324.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
}
#if defined(TARGET_FREEBSD)
- if (!proto_is_udp(ce->proto))
+ if (ce->local_list)
{
- msg(msglevel, "NOTE: TCP transport disables data channel offload on FreeBSD.");
- return false;
+ for (int i = 0; i < ce->local_list->len; i++)
+ {
+ if (!proto_is_dgram(ce->local_list->array[i]->proto))
+ {
+ msg(msglevel, "NOTE: TCP transport disables data channel offload on FreeBSD.");
+ return false;
+ }
+ }
}
#endif
return false;
}
-
-bool
-has_tcp_in_local_list(const struct options *options)
-{
- if (options->ce.local_list)
- {
- for (int i = 0; i < options->ce.local_list->len; i++)
- {
- if (!proto_is_dgram(options->ce.local_list->array[i]->proto))
- {
- return true;
- }
- }
- }
-
- return false;
-}
bool has_udp_in_local_list(const struct options *options);
-bool has_tcp_in_local_list(const struct options *options);
-
/**
* Returns whether the current configuration has dco enabled.
*/