14#ifndef OPENVPN_TRANSPORT_CLIENT_UDPCLI_H
15#define OPENVPN_TRANSPORT_CLIENT_UDPCLI_H
95 if (
config->synchronous_dns_lookup)
97 openvpn_io::error_code error;
141 impl->reset_align_adjust(align_adjust);
165 return socket.native_handle();
183 Client(openvpn_io::io_context &io_context_arg,
204 const int err =
impl->send(buf,
nullptr);
209#ifdef OPENVPN_PLATFORM_IPHONE
210 if (err == EADDRNOTAVAIL)
255 config->remote_list->set_endpoint_range(results);
260 std::ostringstream os;
261 os <<
"DNS resolve error on '" <<
server_host <<
"' for UDP session: " << error.message();
277 if (
config->socket_protect)
291 self->start_impl_(error); });
305#ifdef OPENVPN_GREMLIN
313 std::ostringstream os;
#define OPENVPN_ASYNC_HANDLER
void async_resolve_cancel()
typename RESOLVER_TYPE::results_type results_type
virtual void async_resolve_name(const std::string &host, const std::string &port)
static Addr from_asio(const openvpn_io::ip::address &addr)
std::string to_string() const
void reset() noexcept
Points this RCPtr<T> to nullptr safely.
void process_push(const OptionList &opt)
RCPtr< ClientConfig > Ptr
bool synchronous_dns_lookup
TransportClient::Ptr new_transport_client_obj(openvpn_io::io_context &io_context, TransportClientParent *parent) override
RemoteList::Ptr remote_list
void process_push(const OptionList &opt) override
SocketProtect * socket_protect
bool transport_send_const(const Buffer &buf) override
UDPTransport::AsioEndpoint server_endpoint
size_t transport_send_queue_size() override
bool transport_send_queue_empty() override
openvpn_io::detail::socket_type native_handle() override
bool send(const Buffer &buf)
void reset_align_adjust(const size_t align_adjust) override
TransportClientParent * parent
void resolve_callback(const openvpn_io::error_code &error, results_type results) override
openvpn_io::ip::udp::resolver resolver
void transport_start() override
UDPLink< Client * > LinkImpl
void transport_reparent(TransportClientParent *parent_arg) override
void transport_stop_requeueing() override
openvpn_io::ip::udp::socket socket
void start_impl_(const openvpn_io::error_code &error)
bool transport_has_send_queue() override
Protocol transport_protocol() const override
bool transport_send(BufferAllocated &buf) override
Client(openvpn_io::io_context &io_context_arg, ClientConfig *config_arg, TransportClientParent *parent_arg)
IP::Addr server_endpoint_addr() const override
void server_endpoint_info(std::string &host, std::string &port, std::string &proto, std::string &ip_addr) const override
void udp_read_handler(PacketFrom::SPtr &pfp)
unsigned short server_endpoint_port() const override
#define OPENVPN_LOG(args)
openvpn_io::ip::udp::endpoint AsioEndpoint
virtual void transport_connecting()=0
virtual void transport_pre_resolve()=0
virtual void transport_error(const Error::Type fatal_err, const std::string &err_text)=0
virtual void transport_wait()=0
virtual void transport_recv(BufferAllocated &buf)=0
RCPtr< TransportClient > Ptr
std::unique_ptr< PacketFrom > SPtr