From ce68e3c4156f6a5511e4e0d45e5d572bf561ef8d Mon Sep 17 00:00:00 2001 From: Lev Stipakov Date: Wed, 4 Sep 2024 10:56:54 +0300 Subject: [PATCH] ovpncli: bring tunbuilder variant back to life Signed-off-by: Lev Stipakov --- CMakePresets.json | 23 +++++++++++++++++++++++ test/ovpncli/CMakeLists.txt | 5 +++++ test/ovpncli/cli.cpp | 16 +++++++++++----- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 89024196..560133ca 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -49,6 +49,16 @@ "CMAKE_CXX_COMPILER": "/usr/bin/g++" } }, + { + "name": "tunbuilder", + "hidden": true, + "cacheVariables": { + "CLI_TUNBUILDER": { + "value": "ON", + "type": "BOOL" + } + } + }, { "name": "base-mingw", "hidden": true, @@ -267,6 +277,14 @@ "base-linux", "release" ] + }, + { + "name": "linux-x64-debug-tunbuilder", + "inherits": [ + "base-linux", + "debug", + "tunbuilder" + ] } ], "buildPresets": [ @@ -334,6 +352,11 @@ "name": "linux-x64-release", "configurePreset": "linux-x64-release", "configuration": "Release" + }, + { + "name": "linux-x64-debug-tunbuilder", + "configurePreset": "linux-x64-debug-tunbuilder", + "configuration": "Debug" } ], "testPresets": [ diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 3beceb0f..e1f2d199 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -3,6 +3,7 @@ option(CLI_NULLTUN "Build ovpncli variant with null tun" OFF) option(CLI_KOVPN "Build ovpncli variant with kovpn kernel module support" OFF) option(CLI_OVPNDCO "Build ovpncli with ovpn-dco kernel module support" OFF) option(CLI_OVPNDCOWIN "Build ovpncli with ovpn-dco-win driver support" OFF) +option(CLI_TUNBUILDER "Build ovpncli with tunbuilder interface support" OFF) set(KOVPN_SOURCE "${CORE_DIR}/../kovpn" CACHE PATH "ovpn-dco kernel module source tree") @@ -76,3 +77,7 @@ if (APPLE) add_json_library(ovpncliagent) target_compile_definitions(ovpncliagent PRIVATE -DOPENVPN_COMMAND_AGENT) endif () + +if (${CLI_TUNBUILDER}) + target_compile_definitions(ovpncli PRIVATE USE_TUN_BUILDER) +endif () diff --git a/test/ovpncli/cli.cpp b/test/ovpncli/cli.cpp index fe852b06..2b5d6c09 100644 --- a/test/ovpncli/cli.cpp +++ b/test/ovpncli/cli.cpp @@ -123,16 +123,12 @@ class ClientBase : public ClientAPI::OpenVPNClient public: bool tun_builder_new() override { - tbc.tun_builder_set_mtu(1500); return true; } int tun_builder_establish() override { - if (!tun) - { - tun.reset(new TUN_CLASS_SETUP()); - } + tun.reset(new TUN_CLASS_SETUP()); TUN_CLASS_SETUP::Config config; config.layer = Layer(Layer::Type::OSI_LAYER_3); @@ -197,6 +193,16 @@ class ClientBase : public ClientAPI::OpenVPNClient return tun->add_bypass_route(remote, ipv6, os); } + bool tun_builder_add_dns_options(const DnsOptions &dns) override + { + return tbc.tun_builder_add_dns_options(dns); + } + + bool tun_builder_set_mtu(int mtu) override + { + return tbc.tun_builder_set_mtu(mtu); + } + private: TUN_CLASS_SETUP::Ptr tun = new TUN_CLASS_SETUP(); TunBuilderCapture tbc;