Notable changes from v9:
* fixed potential deadlock between peer float and keepalive worker
* simplified skb CB layout to avoid allocating large mem area per pkt
* fixed double free along encryption/decryption error path
* fixed crash due to race condition in keepalive worker for p2p mode
* mitigated race condition between TCP socket init and first strp rcv
* added CMD_OVPN_KEY_GET doit handler (it went missing in v9)
* removed double 'select STREAM_PARSER' in Kconfig
* removed double include of socket.h in io.c
* sorted new OVPN section in MAINTAINERS alphabetically
* sorted F: entries in MAINTAINERS alphabetically
* switched to state "Supported" in MAINTAINERS
* added ending newline to various error messages in ovpn-cli.c
* rearranged ovpn-cli.c for better readability and maintenance
* ovpn-cli.c now compiles with -Wextra -Wall -pedantic
* renamed selftest scripts
* test-float.sh is now a stub that just calls test.sh with appropriate
params
Please note that patches previously reviewed by Andrew Lunn have
retained the Reviewed-by tag as they have been simply rebased without
major modifications.
The latest code can also be found at:
https://github.com/OpenVPN/linux-kernel-ovpn
Thanks a lot!
Best Regards,
Antonio Quartulli
OpenVPN Inc.
---
Antonio Quartulli (23):
netlink: add NLA_POLICY_MAX_LEN macro
net: introduce OpenVPN Data Channel Offload (ovpn)
ovpn: add basic netlink support
ovpn: add basic interface creation/destruction/management routines
ovpn: keep carrier always on
ovpn: introduce the ovpn_peer object
ovpn: introduce the ovpn_socket object
ovpn: implement basic TX path (UDP)
ovpn: implement basic RX path (UDP)
ovpn: implement packet processing
ovpn: store tunnel and transport statistics
ovpn: implement TCP transport
ovpn: implement multi-peer support
ovpn: implement peer lookup logic
ovpn: implement keepalive mechanism
ovpn: add support for updating local UDP endpoint
ovpn: add support for peer floating
ovpn: implement peer add/get/dump/delete via netlink
ovpn: implement key add/get/del/swap via netlink
ovpn: kill key and notify userspace in case of IV exhaustion
ovpn: notify userspace when a peer is deleted
ovpn: add basic ethtool support
testing/selftests: add test tool and scripts for ovpn module
Documentation/netlink/specs/ovpn.yaml | 362 +++
MAINTAINERS | 11 +
drivers/net/Kconfig | 14 +
drivers/net/Makefile | 1 +
drivers/net/ovpn/Makefile | 22 +
drivers/net/ovpn/bind.c | 54 +
drivers/net/ovpn/bind.h | 117 +
drivers/net/ovpn/crypto.c | 214 ++
drivers/net/ovpn/crypto.h | 145 ++
drivers/net/ovpn/crypto_aead.c | 386 ++++
drivers/net/ovpn/crypto_aead.h | 33 +
drivers/net/ovpn/io.c | 462 ++++
drivers/net/ovpn/io.h | 25 +
drivers/net/ovpn/main.c | 337 +++
drivers/net/ovpn/main.h | 24 +
drivers/net/ovpn/netlink-gen.c | 212 ++
drivers/net/ovpn/netlink-gen.h | 41 +
drivers/net/ovpn/netlink.c | 1135 ++++++++++
drivers/net/ovpn/netlink.h | 18 +
drivers/net/ovpn/ovpnstruct.h | 61 +
drivers/net/ovpn/packet.h | 40 +
drivers/net/ovpn/peer.c | 1201 ++++++++++
drivers/net/ovpn/peer.h | 165 ++
drivers/net/ovpn/pktid.c | 130 ++
drivers/net/ovpn/pktid.h | 87 +
drivers/net/ovpn/proto.h | 104 +
drivers/net/ovpn/skb.h | 56 +
drivers/net/ovpn/socket.c | 178 ++
drivers/net/ovpn/socket.h | 55 +
drivers/net/ovpn/stats.c | 21 +
drivers/net/ovpn/stats.h | 47 +
drivers/net/ovpn/tcp.c | 506 +++++
drivers/net/ovpn/tcp.h | 44 +
drivers/net/ovpn/udp.c | 406 ++++
drivers/net/ovpn/udp.h | 26 +
include/net/netlink.h | 1 +
include/uapi/linux/if_link.h | 15 +
include/uapi/linux/ovpn.h | 109 +
include/uapi/linux/udp.h | 1 +
tools/net/ynl/ynl-gen-c.py | 4 +-
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/net/ovpn/.gitignore | 2 +
tools/testing/selftests/net/ovpn/Makefile | 17 +
tools/testing/selftests/net/ovpn/config | 10 +
tools/testing/selftests/net/ovpn/data64.key | 5 +
tools/testing/selftests/net/ovpn/ovpn-cli.c | 2370 ++++++++++++++++++++
tools/testing/selftests/net/ovpn/tcp_peers.txt | 5 +
.../testing/selftests/net/ovpn/test-chachapoly.sh | 9 +
tools/testing/selftests/net/ovpn/test-float.sh | 9 +
tools/testing/selftests/net/ovpn/test-tcp.sh | 9 +
tools/testing/selftests/net/ovpn/test.sh | 183 ++
tools/testing/selftests/net/ovpn/udp_peers.txt | 5 +
52 files changed, 9494 insertions(+), 1 deletion(-)
---
base-commit: 03fc07a24735e0be8646563913abf5f5cb71ad19
change-id: 20241002-b4-ovpn-eeee35c694a2
Best regards,
--
Antonio Quartulli <antonio@openvpn.net>