29#if !defined(ENABLE_OVPNDCOWIN)
33#if defined(ENABLE_KOVPN)
34#include <openvpn/kovpn/kodevtun.hpp>
35#include <openvpn/kovpn/kostats.hpp>
36#include <openvpn/kovpn/kovpn.hpp>
37#include <openvpn/kovpn/rps_xps.hpp>
38#elif defined(ENABLE_OVPNDCO)
44#elif defined(ENABLE_OVPNDCOWIN)
50#error either ENABLE_KOVPN, ENABLE_OVPNDCO or ENABLE_OVPNDCOWIN must be defined
82 void finalize(
const bool disconnected)
override
84#if defined(ENABLE_OVPNDCOWIN)
86 tun.tun_persist.reset();
183 std::string &ip_addr)
const override
211 if (
state->vpn_ip4_addr.specified())
212 return state->vpn_ip4_addr.to_string();
219 if (
state->vpn_ip6_addr.specified())
220 return state->vpn_ip6_addr.to_string();
227 if (
state->vpn_ip4_gw.specified())
228 return state->vpn_ip4_gw.to_string();
235 if (
state->vpn_ip6_gw.specified())
236 return state->vpn_ip6_gw.to_string();
247 Client(openvpn_io::io_context &io_context_arg,
281#if defined(ENABLE_KOVPN)
282#include <openvpn/kovpn/kovpncli.hpp>
285 return KovpnClientConfig::new_controller();
293#elif defined(ENABLE_OVPNDCO)
295inline DCO::Ptr new_controller(TunBuilderBase *tb)
308 TransportClientParent *parent)
312#elif defined(ENABLE_OVPNDCOWIN)
314inline DCO::Ptr new_controller(TunBuilderBase *tb)
321 NTSTATUS status = BCryptOpenAlgorithmProvider(&h, L
"CHACHA20_POLY1305", NULL, 0);
322 if (BCRYPT_SUCCESS(status))
324 BCryptCloseAlgorithmProvider(h, 0);
333 TransportClientParent *parent)
static bool available(TunBuilderBase *tb)
void process_push(const OptionList &opt) override
TransportClient::Ptr new_transport_client_obj(openvpn_io::io_context &io_context, TransportClientParent *parent) override
DCO::TransportConfig transport
TunClientFactory::Ptr new_tun_factory(const DCO::TunConfig &conf, const OptionList &opt) override
RCPtr< ClientConfig > Ptr
TunClient::Ptr new_tun_client_obj(openvpn_io::io_context &io_context, TunClientParent &parent, TransportClient *transcli) override
void finalize(const bool disconnected) override
TransportClientFactory::Ptr new_transport_factory(const DCO::TransportConfig &conf) override
static DCO::Ptr new_controller(TunBuilderBase *tb)
bool supports_epoch_data() override
unsigned int ping_restart_override
void server_endpoint_info(std::string &host, std::string &port, std::string &proto, std::string &ip_addr) const override
std::string vpn_ip4() const override
void transport_stop_requeueing() override
void transport_reparent(TransportClientParent *parent_arg) override
int vpn_mtu() const override
size_t transport_send_queue_size() override
std::string vpn_gw6() const override
std::string vpn_ip6() const override
bool transport_send_queue_empty() override
ActionList::Ptr remove_cmds
void reset_align_adjust(const size_t align_adjust) override
openvpn_io::io_context & io_context
TransportClientParent * transport_parent
Client(openvpn_io::io_context &io_context_arg, ClientConfig *config_arg, TransportClientParent *parent_arg)
std::string vpn_gw4() const override
bool tun_send(BufferAllocated &buf) override
bool transport_has_send_queue() override
void set_disconnect() override
TunProp::State::Ptr state
TunClientParent * tun_parent
std::string to_string() const
T get_num(const std::string &name, const size_t idx, const T default_value) const
const Option * get_ptr(const std::string &name) const
const std::string & get(const size_t index, const size_t max_len) const
void process_push(const OptionList &opt)
TunBuilder methods, loosely based on the Android VpnService.Builder abstraction.
void allow_dc_algs(const std::list< Type > types)
std::array< Alg, Type::SIZE > algs
RemoteList::Ptr remote_list
RCPtr< TransportClientFactory > Ptr
RCPtr< TransportClient > Ptr
virtual IP::Addr server_endpoint_addr() const =0
virtual Protocol transport_protocol() const =0
RCPtr< TunClientFactory > Ptr
os<< "Session Name: "<< tbc-> session_name<< '\n';os<< "Layer: "<< tbc-> layer str()<< '\n'