0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-19 19:52:15 +02:00

ovpncli: bring tunbuilder variant back to life

Signed-off-by: Lev Stipakov <lev@openvpn.net>
This commit is contained in:
Lev Stipakov 2024-09-04 10:56:54 +03:00 committed by Jenkins-dev
parent 253dc4bf98
commit ce68e3c415
3 changed files with 39 additions and 5 deletions

View File

@ -49,6 +49,16 @@
"CMAKE_CXX_COMPILER": "/usr/bin/g++" "CMAKE_CXX_COMPILER": "/usr/bin/g++"
} }
}, },
{
"name": "tunbuilder",
"hidden": true,
"cacheVariables": {
"CLI_TUNBUILDER": {
"value": "ON",
"type": "BOOL"
}
}
},
{ {
"name": "base-mingw", "name": "base-mingw",
"hidden": true, "hidden": true,
@ -267,6 +277,14 @@
"base-linux", "base-linux",
"release" "release"
] ]
},
{
"name": "linux-x64-debug-tunbuilder",
"inherits": [
"base-linux",
"debug",
"tunbuilder"
]
} }
], ],
"buildPresets": [ "buildPresets": [
@ -334,6 +352,11 @@
"name": "linux-x64-release", "name": "linux-x64-release",
"configurePreset": "linux-x64-release", "configurePreset": "linux-x64-release",
"configuration": "Release" "configuration": "Release"
},
{
"name": "linux-x64-debug-tunbuilder",
"configurePreset": "linux-x64-debug-tunbuilder",
"configuration": "Debug"
} }
], ],
"testPresets": [ "testPresets": [

View File

@ -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_KOVPN "Build ovpncli variant with kovpn kernel module support" OFF)
option(CLI_OVPNDCO "Build ovpncli with ovpn-dco 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_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") set(KOVPN_SOURCE "${CORE_DIR}/../kovpn" CACHE PATH "ovpn-dco kernel module source tree")
@ -76,3 +77,7 @@ if (APPLE)
add_json_library(ovpncliagent) add_json_library(ovpncliagent)
target_compile_definitions(ovpncliagent PRIVATE -DOPENVPN_COMMAND_AGENT) target_compile_definitions(ovpncliagent PRIVATE -DOPENVPN_COMMAND_AGENT)
endif () endif ()
if (${CLI_TUNBUILDER})
target_compile_definitions(ovpncli PRIVATE USE_TUN_BUILDER)
endif ()

View File

@ -123,16 +123,12 @@ class ClientBase : public ClientAPI::OpenVPNClient
public: public:
bool tun_builder_new() override bool tun_builder_new() override
{ {
tbc.tun_builder_set_mtu(1500);
return true; return true;
} }
int tun_builder_establish() override int tun_builder_establish() override
{ {
if (!tun) tun.reset(new TUN_CLASS_SETUP());
{
tun.reset(new TUN_CLASS_SETUP());
}
TUN_CLASS_SETUP::Config config; TUN_CLASS_SETUP::Config config;
config.layer = Layer(Layer::Type::OSI_LAYER_3); 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); 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: private:
TUN_CLASS_SETUP::Ptr tun = new TUN_CLASS_SETUP(); TUN_CLASS_SETUP::Ptr tun = new TUN_CLASS_SETUP();
TunBuilderCapture tbc; TunBuilderCapture tbc;