ovpn: implement TCP transport
authorAntonio Quartulli <antonio@openvpn.net>
Tue, 15 Apr 2025 11:17:28 +0000 (13:17 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 17 Apr 2025 10:30:03 +0000 (12:30 +0200)
commit11851cbd60ea1e5abbd97619d69845ead99303d6
tree78cb46ee9b5356ffa9ca55727db14cc3cb8b6311
parent04ca14955f9ae84a3185e23c4421966938e9d134
ovpn: implement TCP transport

With this change ovpn is allowed to communicate to peers also via TCP.
Parsing of incoming messages is implemented through the strparser API.

Note that ovpn redefines sk_prot and sk_socket->ops for the TCP socket
used to communicate with the peer.
For this reason it needs to access inet6_stream_ops, which is declared
as extern in the IPv6 module, but it is not fully exported.

Therefore this patch is also adding EXPORT_SYMBOL_GPL(inet6_stream_ops)
to net/ipv6/af_inet6.c.

Cc: David Ahern <dsahern@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Simon Horman <horms@kernel.org>
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
Link: https://patch.msgid.link/20250415-b4-ovpn-v26-11-577f6097b964@openvpn.net
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/Kconfig
drivers/net/ovpn/Makefile
drivers/net/ovpn/io.c
drivers/net/ovpn/main.c
drivers/net/ovpn/ovpnpriv.h
drivers/net/ovpn/peer.h
drivers/net/ovpn/socket.c
drivers/net/ovpn/socket.h
drivers/net/ovpn/tcp.c [new file with mode: 0644]
drivers/net/ovpn/tcp.h [new file with mode: 0644]
net/ipv6/af_inet6.c